use of com.hortonworks.streamline.streams.layout.component.impl.testing.TestRunRulesProcessor in project streamline by hortonworks.
the class TestTopologyDagCreatingVisitor method visit.
@Override
public void visit(RulesProcessor rulesProcessor) {
String id = rulesProcessor.getId();
String processorName = rulesProcessor.getName();
if (!testRunRulesProcessorsForEachProcessor.containsKey(processorName)) {
throw new IllegalStateException("Not all processors have corresponding TestRunRulesProcessor instance. processor name: " + processorName);
}
Config config = new Config(rulesProcessor.getConfig());
TestRunRulesProcessor testRunRulesProcessor = testRunRulesProcessorsForEachProcessor.get(processorName);
testRunRulesProcessor.setId(id);
testRunRulesProcessor.setName(processorName);
testRunRulesProcessor.setConfig(config);
testRunRulesProcessor.setTransformationClass(TestRunRulesProcessorBoltFluxComponent.class.getName());
testTopologyDag.add(testRunRulesProcessor);
processorToReplacedTestProcessorMap.put(processorName, testRunRulesProcessor);
copyEdges(rulesProcessor);
}
use of com.hortonworks.streamline.streams.layout.component.impl.testing.TestRunRulesProcessor in project streamline by hortonworks.
the class TestTopologyDagCreatingVisitorTest method createTestRunRulesProcessor.
private TestRunRulesProcessor createTestRunRulesProcessor(RulesProcessor originProcessor) {
TestRunRulesProcessor testRunRulesProcessor = new TestRunRulesProcessor(originProcessor, "");
testRunRulesProcessor.setName(originProcessor.getName());
return testRunRulesProcessor;
}
use of com.hortonworks.streamline.streams.layout.component.impl.testing.TestRunRulesProcessor in project streamline by hortonworks.
the class TestTopologyDagCreatingVisitorTest method visitRulesProcessor_connectedFromSource.
@Test
public void visitRulesProcessor_connectedFromSource() throws Exception {
StreamlineSource originSource = TopologyTestHelper.createStreamlineSource("1");
RulesProcessor rulesProcessor = TopologyTestHelper.createRulesProcessor("2");
TopologyDag originTopologyDag = new TopologyDag();
originTopologyDag.add(originSource);
originTopologyDag.add(rulesProcessor);
originTopologyDag.addEdge(new Edge("e1", originSource, rulesProcessor, "default", Stream.Grouping.SHUFFLE));
TestRunSource testSource = createTestRunSource(originSource);
TestRunRulesProcessor testRulesProcessor = createTestRunRulesProcessor(rulesProcessor);
TestTopologyDagCreatingVisitor visitor = new TestTopologyDagCreatingVisitor(originTopologyDag, Collections.singletonMap(originSource.getName(), testSource), Collections.emptyMap(), Collections.singletonMap(rulesProcessor.getName(), testRulesProcessor), Collections.emptyMap());
visitor.visit(originSource);
visitor.visit(rulesProcessor);
TopologyDag testTopologyDag = visitor.getTestTopologyDag();
List<OutputComponent> testRulesProcessors = testTopologyDag.getOutputComponents().stream().filter(o -> (o instanceof TestRunRulesProcessor && o.getName().equals(rulesProcessor.getName()))).collect(toList());
List<OutputComponent> testSources = testTopologyDag.getOutputComponents().stream().filter(o -> (o instanceof TestRunSource && o.getName().equals(originSource.getName()))).collect(toList());
TestRunRulesProcessor testRunRulesProcessor = (TestRunRulesProcessor) testRulesProcessors.get(0);
TestRunSource testRunSource = (TestRunSource) testSources.get(0);
assertEquals(1, testTopologyDag.getEdgesFrom(testRunSource).size());
assertEquals(1, testTopologyDag.getEdgesTo(testRunRulesProcessor).size());
assertTrue(testTopologyDag.getEdgesFrom(testRunSource).get(0) == testTopologyDag.getEdgesTo(testRunRulesProcessor).get(0));
}
use of com.hortonworks.streamline.streams.layout.component.impl.testing.TestRunRulesProcessor in project streamline by hortonworks.
the class TestTopologyDagCreatingVisitorTest method visitRulesProcessor_connectedFromProcessor.
@Test
public void visitRulesProcessor_connectedFromProcessor() throws Exception {
StreamlineProcessor originProcessor = TopologyTestHelper.createStreamlineProcessor("1");
RulesProcessor rulesProcessor = TopologyTestHelper.createRulesProcessor("2");
TopologyDag originTopologyDag = new TopologyDag();
originTopologyDag.add(originProcessor);
originTopologyDag.add(rulesProcessor);
originTopologyDag.addEdge(new Edge("e1", originProcessor, rulesProcessor, "default", Stream.Grouping.SHUFFLE));
TestRunProcessor testProcessor = createTestRunProcessor(originProcessor);
TestRunRulesProcessor testRulesProcessor = createTestRunRulesProcessor(rulesProcessor);
TestTopologyDagCreatingVisitor visitor = new TestTopologyDagCreatingVisitor(originTopologyDag, Collections.emptyMap(), Collections.singletonMap(originProcessor.getName(), testProcessor), Collections.singletonMap(rulesProcessor.getName(), testRulesProcessor), Collections.emptyMap());
visitor.visit(originProcessor);
visitor.visit(rulesProcessor);
TopologyDag testTopologyDag = visitor.getTestTopologyDag();
List<OutputComponent> testProcessors = testTopologyDag.getOutputComponents().stream().filter(o -> (o instanceof TestRunProcessor)).collect(toList());
List<OutputComponent> testRulesProcessors = testTopologyDag.getOutputComponents().stream().filter(o -> (o instanceof TestRunRulesProcessor)).collect(toList());
Optional<OutputComponent> testRunProcessorOptional = testProcessors.stream().filter(o -> o.getName().equals(originProcessor.getName())).findAny();
Optional<OutputComponent> testRunRuleProcessorOptional = testRulesProcessors.stream().filter(o -> o.getName().equals(rulesProcessor.getName())).findAny();
assertTrue(testRunProcessorOptional.isPresent());
assertTrue(testRunRuleProcessorOptional.isPresent());
TestRunProcessor testRunProcessor = (TestRunProcessor) testRunProcessorOptional.get();
TestRunRulesProcessor testRunRuleProcessor = (TestRunRulesProcessor) testRunRuleProcessorOptional.get();
assertEquals(1, testTopologyDag.getEdgesFrom(testRunProcessor).size());
assertEquals(1, testTopologyDag.getEdgesTo(testRunRuleProcessor).size());
assertTrue(testTopologyDag.getEdgesFrom(testRunProcessor).get(0) == testTopologyDag.getEdgesTo(testRunRuleProcessor).get(0));
}
use of com.hortonworks.streamline.streams.layout.component.impl.testing.TestRunRulesProcessor in project streamline by hortonworks.
the class TopologyTestRunnerTest method setSucceedTopologyActionsExpectations.
private void setSucceedTopologyActionsExpectations() throws Exception {
new Expectations() {
{
topologyActions.runTest(withInstanceOf(TopologyLayout.class), withInstanceOf(TopologyTestRunHistory.class), anyString, withInstanceOf(Map.class), withInstanceOf(Map.class), withInstanceOf(Map.class), withInstanceOf(Map.class), withInstanceOf(Optional.class));
result = new Delegate<Object>() {
Object delegate(TopologyLayout topology, TopologyTestRunHistory testRunHistory, String mavenArtifacts, Map<String, TestRunSource> testRunSourcesForEachSource, Map<String, TestRunProcessor> testRunProcessorsForEachProcessor, Map<String, TestRunRulesProcessor> testRunRulesProcessorsForEachProcessor, Map<String, TestRunSink> testRunSinksForEachSink, Optional<Long> durationSecs) throws Exception {
Map<String, List<Map<String, Object>>> testOutputRecords = TopologyTestHelper.createTestOutputRecords(testRunSinksForEachSink.keySet());
testRunSinksForEachSink.entrySet().forEach(entry -> {
String sinkName = entry.getKey();
TestRunSink sink = entry.getValue();
try (FileWriter fw = new FileWriter(sink.getOutputFilePath())) {
List<Map<String, Object>> outputRecords = testOutputRecords.get(sinkName);
for (Map<String, Object> record : outputRecords) {
fw.write(objectMapper.writeValueAsString(record) + "\n");
}
} catch (IOException e) {
throw new RuntimeException(e);
}
});
return null;
}
};
}
};
}
Aggregations