Search in sources :

Example 1 with ExpectedExceptionNode

use of io.confluent.ksql.test.model.ExpectedExceptionNode in project ksql by confluentinc.

the class TestCaseBuilder method createTest.

private static TestCase createTest(final TestCaseNode test, final Path originalFileName, final TestLocation location, final Optional<String> explicitFormat) {
    final String testName = TestCaseBuilderUtil.buildTestName(originalFileName, test.name(), explicitFormat);
    try {
        final VersionBounds versionBounds = test.versionBounds().build();
        final List<String> statements = TestCaseBuilderUtil.buildStatements(test.statements(), explicitFormat);
        final Optional<Matcher<Throwable>> ee = test.expectedException().map(ExpectedExceptionNode::build);
        final Map<String, Topic> topics = TestCaseBuilderUtil.getAllTopics(statements, test.topics().stream().map(TopicNode::build).collect(Collectors.toList()), test.outputs().stream().map(RecordNode::build).collect(Collectors.toList()), test.inputs().stream().map(RecordNode::build).collect(Collectors.toList()), new InternalFunctionRegistry(), new KsqlConfig(test.properties())).stream().collect(Collectors.toMap(t -> t.getName().toLowerCase(), t -> t));
        final List<Record> inputRecords = test.inputs().stream().map(r -> {
            final String topicName = r.topicName().toLowerCase();
            // parse columns which value type cannot be detected without a schema
            if (topics.containsKey(topicName)) {
                return r.build(topics.get(topicName).getKeySchema(), topics.get(topicName).getValueSchema(), topics.get(topicName).getKeyFeatures(), topics.get(topicName).getValueFeatures());
            }
            return r.build();
        }).collect(Collectors.toList());
        final List<Record> outputRecords = test.outputs().stream().map(RecordNode::build).collect(Collectors.toList());
        final PostConditions post = test.postConditions().map(PostConditionsNode::build).orElse(PostConditions.NONE);
        return new TestCase(location, originalFileName, testName, versionBounds, test.properties(), topics.values(), inputRecords, outputRecords, statements, ee, post);
    } catch (final Exception e) {
        throw new AssertionError(testName + ": Invalid test. " + e.getMessage(), e);
    }
}
Also used : TestCaseNode(io.confluent.ksql.test.model.TestCaseNode) InternalFunctionRegistry(io.confluent.ksql.function.InternalFunctionRegistry) TestLocation(io.confluent.ksql.test.model.TestLocation) KsqlConfig(io.confluent.ksql.util.KsqlConfig) Function(java.util.function.Function) Collectors(java.util.stream.Collectors) List(java.util.List) Stream(java.util.stream.Stream) ImmutableList(com.google.common.collect.ImmutableList) ExpectedExceptionNode(io.confluent.ksql.test.model.ExpectedExceptionNode) TopicNode(io.confluent.ksql.test.model.TopicNode) PostConditionsNode(io.confluent.ksql.test.model.PostConditionsNode) PostConditions(io.confluent.ksql.test.tools.conditions.PostConditions) Map(java.util.Map) Matcher(org.hamcrest.Matcher) Optional(java.util.Optional) RecordNode(io.confluent.ksql.test.model.RecordNode) Path(java.nio.file.Path) TopicNode(io.confluent.ksql.test.model.TopicNode) Matcher(org.hamcrest.Matcher) KsqlConfig(io.confluent.ksql.util.KsqlConfig) ExpectedExceptionNode(io.confluent.ksql.test.model.ExpectedExceptionNode) RecordNode(io.confluent.ksql.test.model.RecordNode) PostConditions(io.confluent.ksql.test.tools.conditions.PostConditions) InternalFunctionRegistry(io.confluent.ksql.function.InternalFunctionRegistry)

Aggregations

ImmutableList (com.google.common.collect.ImmutableList)1 InternalFunctionRegistry (io.confluent.ksql.function.InternalFunctionRegistry)1 ExpectedExceptionNode (io.confluent.ksql.test.model.ExpectedExceptionNode)1 PostConditionsNode (io.confluent.ksql.test.model.PostConditionsNode)1 RecordNode (io.confluent.ksql.test.model.RecordNode)1 TestCaseNode (io.confluent.ksql.test.model.TestCaseNode)1 TestLocation (io.confluent.ksql.test.model.TestLocation)1 TopicNode (io.confluent.ksql.test.model.TopicNode)1 PostConditions (io.confluent.ksql.test.tools.conditions.PostConditions)1 KsqlConfig (io.confluent.ksql.util.KsqlConfig)1 Path (java.nio.file.Path)1 List (java.util.List)1 Map (java.util.Map)1 Optional (java.util.Optional)1 Function (java.util.function.Function)1 Collectors (java.util.stream.Collectors)1 Stream (java.util.stream.Stream)1 Matcher (org.hamcrest.Matcher)1