use of org.apache.storm.testing.TestPlannerSpout in project storm by apache.
the class TopologyIntegrationTest method testComponentSpecificConfig.
@Test
public void testComponentSpecificConfig() throws Exception {
Map<String, Object> daemonConf = new HashMap<>();
daemonConf.put(Config.TOPOLOGY_SKIP_MISSING_KRYO_REGISTRATIONS, true);
try (LocalCluster cluster = new LocalCluster.Builder().withSimulatedTime().withDaemonConf(daemonConf).build()) {
TopologyBuilder topologyBuilder = new TopologyBuilder();
topologyBuilder.setSpout("1", new TestPlannerSpout(new Fields("conf")));
Map<String, Object> componentConf = new HashMap<>();
componentConf.put("fake.config", 123);
componentConf.put(Config.TOPOLOGY_MAX_TASK_PARALLELISM, 20);
componentConf.put(Config.TOPOLOGY_MAX_SPOUT_PENDING, 30);
componentConf.put(Config.TOPOLOGY_KRYO_REGISTER, Arrays.asList(Collections.singletonMap("fake.type", "bad.serializer"), Collections.singletonMap("fake.type2", "a.serializer")));
topologyBuilder.setBolt("2", new TestConfBolt(componentConf)).shuffleGrouping("1").setMaxTaskParallelism(2).addConfiguration("fake.config2", 987);
List<FixedTuple> testTuples = Arrays.asList("fake.config", Config.TOPOLOGY_MAX_TASK_PARALLELISM, Config.TOPOLOGY_MAX_SPOUT_PENDING, "fake.config2", Config.TOPOLOGY_KRYO_REGISTER).stream().map(value -> new FixedTuple(new Values(value))).collect(Collectors.toList());
Map<String, String> kryoRegister = new HashMap<>();
kryoRegister.put("fake.type", "good.serializer");
kryoRegister.put("fake.type3", "a.serializer3");
Map<String, Object> stormConf = new HashMap<>();
stormConf.put(Config.TOPOLOGY_KRYO_REGISTER, Arrays.asList(kryoRegister));
MockedSources mockedSources = new MockedSources(Collections.singletonMap("1", testTuples));
CompleteTopologyParam completeTopologyParams = new CompleteTopologyParam();
completeTopologyParams.setMockedSources(mockedSources);
completeTopologyParams.setStormConf(stormConf);
Map<String, List<FixedTuple>> results = Testing.completeTopology(cluster, topologyBuilder.createTopology(), completeTopologyParams);
Map<String, Object> expectedValues = new HashMap<>();
expectedValues.put("fake.config", 123L);
expectedValues.put("fake.config2", 987L);
expectedValues.put(Config.TOPOLOGY_MAX_TASK_PARALLELISM, 2L);
expectedValues.put(Config.TOPOLOGY_MAX_SPOUT_PENDING, 30L);
Map<String, String> expectedKryoRegister = new HashMap<>();
expectedKryoRegister.putAll(kryoRegister);
expectedKryoRegister.put("fake.type2", "a.serializer");
expectedValues.put(Config.TOPOLOGY_KRYO_REGISTER, expectedKryoRegister);
List<Object> concatValues = Testing.readTuples(results, "2").stream().flatMap(values -> values.stream()).collect(Collectors.toList());
assertThat(listToMap(concatValues), is(expectedValues));
}
}
use of org.apache.storm.testing.TestPlannerSpout in project storm by apache.
the class TopologyIntegrationTest method testKryoDecoratorsConfig.
@Test
public void testKryoDecoratorsConfig() throws Exception {
Map<String, Object> daemonConf = new HashMap<>();
daemonConf.put(Config.TOPOLOGY_SKIP_MISSING_KRYO_REGISTRATIONS, true);
daemonConf.put(Config.TOPOLOGY_KRYO_DECORATORS, "this-is-overridden");
try (LocalCluster cluster = new LocalCluster.Builder().withSimulatedTime().withDaemonConf(daemonConf).build()) {
TopologyBuilder topologyBuilder = new TopologyBuilder();
topologyBuilder.setSpout("1", new TestPlannerSpout(new Fields("conf")));
topologyBuilder.setBolt("2", new TestConfBolt(Collections.singletonMap(Config.TOPOLOGY_KRYO_DECORATORS, Arrays.asList("one", "two")))).shuffleGrouping("1");
List<FixedTuple> testTuples = Arrays.asList(new Values(Config.TOPOLOGY_KRYO_DECORATORS)).stream().map(value -> new FixedTuple(value)).collect(Collectors.toList());
MockedSources mockedSources = new MockedSources(Collections.singletonMap("1", testTuples));
CompleteTopologyParam completeTopologyParams = new CompleteTopologyParam();
completeTopologyParams.setMockedSources(mockedSources);
completeTopologyParams.setStormConf(Collections.singletonMap(Config.TOPOLOGY_KRYO_DECORATORS, Arrays.asList("one", "three")));
Map<String, List<FixedTuple>> results = Testing.completeTopology(cluster, topologyBuilder.createTopology(), completeTopologyParams);
List<Object> concatValues = Testing.readTuples(results, "2").stream().flatMap(values -> values.stream()).collect(Collectors.toList());
assertThat(concatValues.get(0), is(Config.TOPOLOGY_KRYO_DECORATORS));
assertThat(concatValues.get(1), is(Arrays.asList("one", "two", "three")));
}
}
use of org.apache.storm.testing.TestPlannerSpout in project storm by apache.
the class TopologyIntegrationTest method testHooks.
@Test
public void testHooks() throws Exception {
try (LocalCluster cluster = new LocalCluster.Builder().withSimulatedTime().build()) {
TopologyBuilder builder = new TopologyBuilder();
builder.setSpout("1", new TestPlannerSpout(new Fields("conf")));
builder.setBolt("2", new HooksBolt()).shuffleGrouping("1");
StormTopology topology = builder.createTopology();
List<FixedTuple> testTuples = Arrays.asList(1, 1, 1, 1).stream().map(value -> new FixedTuple(new Values(value))).collect(Collectors.toList());
MockedSources mockedSources = new MockedSources(Collections.singletonMap("1", testTuples));
CompleteTopologyParam completeTopologyParams = new CompleteTopologyParam();
completeTopologyParams.setMockedSources(mockedSources);
Map<String, List<FixedTuple>> results = Testing.completeTopology(cluster, topology, completeTopologyParams);
List<List<Object>> expectedTuples = Arrays.asList(Arrays.asList(0, 0, 0, 0), Arrays.asList(2, 1, 0, 1), Arrays.asList(4, 1, 1, 2), Arrays.asList(6, 2, 1, 3));
assertThat(Testing.readTuples(results, "2"), is(expectedTuples));
}
}
Aggregations