Search in sources :

Example 6 with TopologyTestRunCaseSink

use of com.hortonworks.streamline.streams.catalog.TopologyTestRunCaseSink in project streamline by hortonworks.

the class TopologyTestRunnerTest method createTopologyTestRunCaseSinkWithMismatchedRecords.

private TopologyTestRunCaseSink createTopologyTestRunCaseSinkWithMismatchedRecords(TopologyTestRunCase testRunCase, StreamlineSink sink) {
    List<Map<String, Object>> expectedRecords = TopologyTestHelper.createTestRecords();
    expectedRecords.add(Collections.singletonMap("hello", "world"));
    TopologyTestRunCaseSink testRunSink = new TopologyTestRunCaseSink();
    testRunSink.setId(Long.valueOf(sink.getId()));
    testRunSink.setTestCaseId(testRunCase.getId());
    testRunSink.setSinkId(Long.valueOf(sink.getId()));
    try {
        testRunSink.setRecords(objectMapper.writeValueAsString(expectedRecords));
    } catch (JsonProcessingException e) {
        throw new RuntimeException("Can't serialize expected records map into JSON");
    }
    testRunSink.setTimestamp(System.currentTimeMillis());
    return testRunSink;
}
Also used : TopologyTestRunCaseSink(com.hortonworks.streamline.streams.catalog.TopologyTestRunCaseSink) HashMap(java.util.HashMap) Collectors.toMap(java.util.stream.Collectors.toMap) Map(java.util.Map) JsonProcessingException(com.fasterxml.jackson.core.JsonProcessingException)

Example 7 with TopologyTestRunCaseSink

use of com.hortonworks.streamline.streams.catalog.TopologyTestRunCaseSink in project streamline by hortonworks.

the class StreamCatalogService method removeAllTopologyTestSinks.

private void removeAllTopologyTestSinks(TopologySink topologySink) {
    QueryParam sinkIdQuery = new QueryParam("sinkId", String.valueOf(topologySink.getId()));
    Collection<TopologyTestRunCaseSink> sinks = listTopologyTestRunCaseSink(Collections.singletonList(sinkIdQuery));
    if (sinks != null) {
        sinks.forEach(s -> removeTopologyTestRunCaseSink(s.getId()));
    }
}
Also used : TopologyTestRunCaseSink(com.hortonworks.streamline.streams.catalog.TopologyTestRunCaseSink) QueryParam(com.hortonworks.registries.common.QueryParam) WSUtils.versionIdQueryParam(com.hortonworks.streamline.common.util.WSUtils.versionIdQueryParam) WSUtils.buildEdgesFromQueryParam(com.hortonworks.streamline.common.util.WSUtils.buildEdgesFromQueryParam) WSUtils.currentVersionQueryParam(com.hortonworks.streamline.common.util.WSUtils.currentVersionQueryParam) WSUtils.buildEdgesToQueryParam(com.hortonworks.streamline.common.util.WSUtils.buildEdgesToQueryParam)

Example 8 with TopologyTestRunCaseSink

use of com.hortonworks.streamline.streams.catalog.TopologyTestRunCaseSink in project streamline by hortonworks.

the class StreamCatalogService method removeTopologyTestRunCaseSink.

public TopologyTestRunCaseSink removeTopologyTestRunCaseSink(Long id) {
    TopologyTestRunCaseSink testcaseSink = new TopologyTestRunCaseSink();
    testcaseSink.setId(id);
    return dao.remove(testcaseSink.getStorableKey());
}
Also used : TopologyTestRunCaseSink(com.hortonworks.streamline.streams.catalog.TopologyTestRunCaseSink)

Example 9 with TopologyTestRunCaseSink

use of com.hortonworks.streamline.streams.catalog.TopologyTestRunCaseSink in project streamline by hortonworks.

the class TopologyTestRunnerTest method createTopologyTestRunCaseSink.

private TopologyTestRunCaseSink createTopologyTestRunCaseSink(TopologyTestRunCase testRunCase, StreamlineSink sink) {
    List<Map<String, Object>> expectedRecords = TopologyTestHelper.createTestRecords();
    TopologyTestRunCaseSink testRunSink = new TopologyTestRunCaseSink();
    testRunSink.setId(Long.valueOf(sink.getId()));
    testRunSink.setTestCaseId(testRunCase.getId());
    testRunSink.setSinkId(Long.valueOf(sink.getId()));
    try {
        testRunSink.setRecords(objectMapper.writeValueAsString(expectedRecords));
    } catch (JsonProcessingException e) {
        throw new RuntimeException("Can't serialize expected records map into JSON");
    }
    testRunSink.setTimestamp(System.currentTimeMillis());
    return testRunSink;
}
Also used : TopologyTestRunCaseSink(com.hortonworks.streamline.streams.catalog.TopologyTestRunCaseSink) HashMap(java.util.HashMap) Collectors.toMap(java.util.stream.Collectors.toMap) Map(java.util.Map) JsonProcessingException(com.fasterxml.jackson.core.JsonProcessingException)

Example 10 with TopologyTestRunCaseSink

use of com.hortonworks.streamline.streams.catalog.TopologyTestRunCaseSink in project streamline by hortonworks.

the class TopologyTestRunner method runTest.

public TopologyTestRunHistory runTest(TopologyActions topologyActions, Topology topology, TopologyTestRunCase testCase, Long durationSecs) throws IOException {
    List<StreamlineSource> sources = topology.getTopologyDag().getOutputComponents().stream().filter(c -> c instanceof StreamlineSource).map(c -> (StreamlineSource) c).collect(toList());
    List<StreamlineSink> sinks = topology.getTopologyDag().getInputComponents().stream().filter(c -> c instanceof StreamlineSink).map(c -> (StreamlineSink) c).collect(toList());
    List<StreamlineProcessor> processors = topology.getTopologyDag().getOutputComponents().stream().filter(c -> c instanceof StreamlineProcessor && !(c instanceof RulesProcessor)).map(c -> (StreamlineProcessor) c).collect(toList());
    List<RulesProcessor> rulesProcessors = topology.getTopologyDag().getOutputComponents().stream().filter(c -> c instanceof RulesProcessor).map(c -> (RulesProcessor) c).collect(toList());
    // load test case sources for all sources
    List<TopologyTestRunCaseSource> testRunCaseSources = sources.stream().map(s -> catalogService.getTopologyTestRunCaseSourceBySourceId(testCase.getId(), Long.valueOf(s.getId()))).collect(toList());
    if (testRunCaseSources.stream().anyMatch(Objects::isNull)) {
        throw new IllegalArgumentException("Not every source register test records.");
    }
    // load test case sources for all sinks
    List<TopologyTestRunCaseSink> testRunCaseSinks = sinks.stream().map(s -> catalogService.getTopologyTestRunCaseSinkBySinkId(testCase.getId(), Long.valueOf(s.getId()))).collect(toList());
    Map<Long, Map<String, List<Map<String, Object>>>> testRecordsForEachSources = readTestRecordsFromTestCaseSources(testRunCaseSources);
    Map<Long, Integer> occurrenceForEachSources = readOccurrenceFromTestCaseSources(testRunCaseSources);
    Map<Long, Long> sleepMsPerRecordsForEachSources = readSleepMsPerIterationFromTestCaseSources(testRunCaseSources);
    Map<String, List<Map<String, Object>>> expectedOutputRecordsMap = readExpectedRecordsFromTestCaseSinks(sinks, testRunCaseSinks);
    String eventLogFilePath = getTopologyTestRunEventLog(topology);
    Map<String, TestRunSource> testRunSourceMap = sources.stream().collect(toMap(s -> s.getName(), s -> {
        TestRunSource testRunSource = new TestRunSource(s.getOutputStreams(), testRecordsForEachSources.get(Long.valueOf(s.getId())), occurrenceForEachSources.get(Long.valueOf(s.getId())), sleepMsPerRecordsForEachSources.get(Long.valueOf(s.getId())), eventLogFilePath);
        testRunSource.setName(s.getName());
        return testRunSource;
    }));
    Map<String, TestRunSink> testRunSinkMap = sinks.stream().collect(toMap(s -> s.getName(), s -> {
        String uuid = UUID.randomUUID().toString();
        TestRunSink testRunSink = new TestRunSink(getTopologyTestRunResult(uuid));
        testRunSink.setName(s.getName());
        return testRunSink;
    }));
    Map<String, TestRunProcessor> testRunProcessorMap = processors.stream().collect(toMap(s -> s.getName(), s -> {
        if (s instanceof JoinProcessor) {
            TestRunProcessor testRunProcessor = new TestRunProcessor(s, true, eventLogFilePath);
            testRunProcessor.setName(s.getName());
            return testRunProcessor;
        } else {
            TestRunProcessor testRunProcessor = new TestRunProcessor(s, false, eventLogFilePath);
            testRunProcessor.setName(s.getName());
            return testRunProcessor;
        }
    }));
    Map<String, TestRunRulesProcessor> testRunRulesProcessorMap = rulesProcessors.stream().collect(toMap(s -> s.getName(), s -> {
        TestRunRulesProcessor testRunRulesProcessor = new TestRunRulesProcessor(s, eventLogFilePath);
        testRunRulesProcessor.setName(s.getName());
        return testRunRulesProcessor;
    }));
    // just create event file before running actual test run process
    createEventLogFile(eventLogFilePath);
    TopologyTestRunHistory history = initializeTopologyTestRunHistory(topology, testCase, expectedOutputRecordsMap, eventLogFilePath);
    catalogService.addTopologyTestRunHistory(history);
    Optional<Long> finalDurationSecs = Optional.ofNullable(durationSecs);
    ParallelStreamUtil.runAsync(() -> runTestInBackground(topologyActions, topology, history, testRunSourceMap, testRunProcessorMap, testRunRulesProcessorMap, testRunSinkMap, expectedOutputRecordsMap, finalDurationSecs), forkJoinPool);
    return history;
}
Also used : Topology(com.hortonworks.streamline.streams.catalog.Topology) StringUtils(org.apache.commons.lang.StringUtils) ParallelStreamUtil(com.hortonworks.streamline.common.util.ParallelStreamUtil) LoggerFactory(org.slf4j.LoggerFactory) HashMap(java.util.HashMap) TopologyLayout(com.hortonworks.streamline.streams.layout.component.TopologyLayout) TopologyActions(com.hortonworks.streamline.streams.actions.TopologyActions) RulesProcessor(com.hortonworks.streamline.streams.layout.component.impl.RulesProcessor) ArrayList(java.util.ArrayList) Collectors.toMap(java.util.stream.Collectors.toMap) TestRunSource(com.hortonworks.streamline.streams.layout.component.impl.testing.TestRunSource) Map(java.util.Map) StreamlineSource(com.hortonworks.streamline.streams.layout.component.StreamlineSource) TypeReference(com.fasterxml.jackson.core.type.TypeReference) JoinProcessor(com.hortonworks.streamline.streams.layout.component.impl.JoinProcessor) Logger(org.slf4j.Logger) TestRunProcessor(com.hortonworks.streamline.streams.layout.component.impl.testing.TestRunProcessor) ObjectMapper(com.fasterxml.jackson.databind.ObjectMapper) CatalogToLayoutConverter(com.hortonworks.streamline.streams.catalog.CatalogToLayoutConverter) JsonProcessingException(com.fasterxml.jackson.core.JsonProcessingException) IOException(java.io.IOException) FileInputStream(java.io.FileInputStream) UUID(java.util.UUID) InputStreamReader(java.io.InputStreamReader) TopologyTestRunCaseSource(com.hortonworks.streamline.streams.catalog.TopologyTestRunCaseSource) File(java.io.File) FileNotFoundException(java.io.FileNotFoundException) Objects(java.util.Objects) TopologyTestRunHistory(com.hortonworks.streamline.streams.catalog.TopologyTestRunHistory) TestRunSink(com.hortonworks.streamline.streams.layout.component.impl.testing.TestRunSink) List(java.util.List) Collectors.toList(java.util.stream.Collectors.toList) ForkJoinPool(java.util.concurrent.ForkJoinPool) StreamCatalogService(com.hortonworks.streamline.streams.catalog.service.StreamCatalogService) TestRunRulesProcessor(com.hortonworks.streamline.streams.layout.component.impl.testing.TestRunRulesProcessor) Optional(java.util.Optional) StreamlineProcessor(com.hortonworks.streamline.streams.layout.component.StreamlineProcessor) BufferedReader(java.io.BufferedReader) StreamlineSink(com.hortonworks.streamline.streams.layout.component.StreamlineSink) TopologyTestRunCaseSink(com.hortonworks.streamline.streams.catalog.TopologyTestRunCaseSink) TopologyTestRunCase(com.hortonworks.streamline.streams.catalog.TopologyTestRunCase) TestRunProcessor(com.hortonworks.streamline.streams.layout.component.impl.testing.TestRunProcessor) TestRunSink(com.hortonworks.streamline.streams.layout.component.impl.testing.TestRunSink) TopologyTestRunHistory(com.hortonworks.streamline.streams.catalog.TopologyTestRunHistory) ArrayList(java.util.ArrayList) List(java.util.List) Collectors.toList(java.util.stream.Collectors.toList) JoinProcessor(com.hortonworks.streamline.streams.layout.component.impl.JoinProcessor) TopologyTestRunCaseSource(com.hortonworks.streamline.streams.catalog.TopologyTestRunCaseSource) TestRunRulesProcessor(com.hortonworks.streamline.streams.layout.component.impl.testing.TestRunRulesProcessor) StreamlineSink(com.hortonworks.streamline.streams.layout.component.StreamlineSink) StreamlineProcessor(com.hortonworks.streamline.streams.layout.component.StreamlineProcessor) RulesProcessor(com.hortonworks.streamline.streams.layout.component.impl.RulesProcessor) TestRunRulesProcessor(com.hortonworks.streamline.streams.layout.component.impl.testing.TestRunRulesProcessor) TopologyTestRunCaseSink(com.hortonworks.streamline.streams.catalog.TopologyTestRunCaseSink) Objects(java.util.Objects) StreamlineSource(com.hortonworks.streamline.streams.layout.component.StreamlineSource) TestRunSource(com.hortonworks.streamline.streams.layout.component.impl.testing.TestRunSource) HashMap(java.util.HashMap) Collectors.toMap(java.util.stream.Collectors.toMap) Map(java.util.Map)

Aggregations

TopologyTestRunCaseSink (com.hortonworks.streamline.streams.catalog.TopologyTestRunCaseSink)14 Path (javax.ws.rs.Path)5 QueryParam (com.hortonworks.registries.common.QueryParam)4 WSUtils.buildEdgesFromQueryParam (com.hortonworks.streamline.common.util.WSUtils.buildEdgesFromQueryParam)4 WSUtils.buildEdgesToQueryParam (com.hortonworks.streamline.common.util.WSUtils.buildEdgesToQueryParam)4 WSUtils.currentVersionQueryParam (com.hortonworks.streamline.common.util.WSUtils.currentVersionQueryParam)4 WSUtils.versionIdQueryParam (com.hortonworks.streamline.common.util.WSUtils.versionIdQueryParam)4 TopologySink (com.hortonworks.streamline.streams.catalog.TopologySink)4 TopologyTestRunCase (com.hortonworks.streamline.streams.catalog.TopologyTestRunCase)4 TopologyTestRunCaseSource (com.hortonworks.streamline.streams.catalog.TopologyTestRunCaseSource)4 JsonProcessingException (com.fasterxml.jackson.core.JsonProcessingException)3 HashMap (java.util.HashMap)3 Map (java.util.Map)3 Collectors.toMap (java.util.stream.Collectors.toMap)3 BaseTopologyRule (com.hortonworks.streamline.streams.catalog.BaseTopologyRule)2 TopologyBranchRule (com.hortonworks.streamline.streams.catalog.TopologyBranchRule)2 TopologyEdge (com.hortonworks.streamline.streams.catalog.TopologyEdge)2 TopologyProcessor (com.hortonworks.streamline.streams.catalog.TopologyProcessor)2 TopologyRule (com.hortonworks.streamline.streams.catalog.TopologyRule)2 TopologySource (com.hortonworks.streamline.streams.catalog.TopologySource)2