Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

KSQL Testing Tool, V1 #2802

Merged
merged 32 commits into from May 15, 2019

Conversation

@hjafarpour
Copy link
Member

commented May 9, 2019

This is the V1 of the KSQL testing tool. It provides a command line tool to run the tests that are composed the same way as our Query Translation Tests.
Note that we won't support validation of internal topics since they are not exposed to users.

@hjafarpour hjafarpour added this to the 5.3 milestone May 9, 2019

@hjafarpour hjafarpour requested a review from confluentinc/ksql May 9, 2019

@hjafarpour hjafarpour requested a review from JimGalasyn as a code owner May 9, 2019

docs/testing-tool.rst Outdated Show resolved Hide resolved
docs/testing-tool.rst Outdated Show resolved Hide resolved
@agavra
Copy link
Contributor

left a comment

First pass on docs - reading the contents now!

docs/testing-tool.rst Outdated Show resolved Hide resolved
docs/testing-tool.rst Outdated Show resolved Hide resolved
docs/testing-tool.rst Outdated Show resolved Hide resolved
docs/testing-tool.rst Outdated Show resolved Hide resolved
docs/testing-tool.rst Outdated Show resolved Hide resolved
docs/testing-tool.rst Outdated Show resolved Hide resolved
docs/testing-tool.rst Outdated Show resolved Hide resolved
docs/testing-tool.rst Outdated Show resolved Hide resolved
docs/testing-tool.rst Outdated Show resolved Hide resolved
docs/testing-tool.rst Outdated Show resolved Hide resolved
docs/testing-tool.rst Outdated Show resolved Hide resolved
docs/testing-tool.rst Outdated Show resolved Hide resolved
docs/testing-tool.rst Outdated Show resolved Hide resolved
@hjafarpour

This comment has been minimized.

Copy link
Member Author

commented May 13, 2019

@agavra fixed the issue you mentioned about the AVRO format.

@vcrfxia
Copy link
Contributor

left a comment

Thanks @hjafarpour . I'm having trouble wrapping my head around these changes. My inline comments are largely just nits. A question, however: our existing query validation tests should pass when run using the ksql-testing-tool, right? I'm seeing lots of failures when I run them using:

for i in $(ls ksql-functional-tests/src/test/resources/query-validation-tests/); do ./bin/ksql-testing-tool ksql-functional-tests/src/test/resources/query-validation-tests/$i; done

Some of the failures are not just test failures but also suggest problems with the testing tool. For example, this snippet of output from the above command:

 >>> Running test: case-expression - searched case expression - AVRO
io.confluent.ksql.util.KsqlException: Expected <0, {CASE_RESAULT=medium}> with timestamp=0 but was <0, {"CASE_RESAULT": "medium"}> with timestamp=0
	at io.confluent.ksql.test.tools.TestCase.validateTopicData(TestCase.java:426)
	at io.confluent.ksql.test.tools.TestCase.lambda$verifyOutputTopics$9(TestCase.java:387)
	at java.util.HashMap$KeySet.forEach(HashMap.java:933)
	at io.confluent.ksql.test.tools.TestCase.verifyOutputTopics(TestCase.java:387)
	at io.confluent.ksql.test.tools.TestExecutor.buildAndExecuteQuery(TestExecutor.java:108)
	at io.confluent.ksql.test.tools.KsqlTestingTool.executeTestCase(KsqlTestingTool.java:87)
	at io.confluent.ksql.test.tools.KsqlTestingTool.loadAndRunTests(KsqlTestingTool.java:66)
	at io.confluent.ksql.test.tools.KsqlTestingTool.main(KsqlTestingTool.java:39)
	>>>>> Test case-expression - searched case expression - AVRO failed: Expected <0, {CASE_RESAULT=medium}> with timestamp=0 but was <0, {"CASE_RESAULT": "medium"}> with timestamp=0
 >>> Running test: case-expression - searched case expression - JSON
	 >>> Test case-expression - searched case expression - JSON passed!
 >>> Running test: case-expression - searched case with arithmetic expression in result - AVRO
io.confluent.ksql.util.KsqlException: Expected <0, {CASE_RESAULT=null}> with timestamp=0 but was <0, {"CASE_RESAULT": null}> with timestamp=0
	at io.confluent.ksql.test.tools.TestCase.validateTopicData(TestCase.java:426)
	at io.confluent.ksql.test.tools.TestCase.lambda$verifyOutputTopics$9(TestCase.java:387)
	at java.util.HashMap$KeySet.forEach(HashMap.java:933)
	at io.confluent.ksql.test.tools.TestCase.verifyOutputTopics(TestCase.java:387)
	at io.confluent.ksql.test.tools.TestExecutor.buildAndExecuteQuery(TestExecutor.java:108)
	at io.confluent.ksql.test.tools.KsqlTestingTool.executeTestCase(KsqlTestingTool.java:87)
	at io.confluent.ksql.test.tools.KsqlTestingTool.loadAndRunTests(KsqlTestingTool.java:66)
	at io.confluent.ksql.test.tools.KsqlTestingTool.main(KsqlTestingTool.java:39)
	>>>>> Test case-expression - searched case with arithmetic expression in result - AVRO failed: Expected <0, {CASE_RESAULT=null}> with timestamp=0 but was <0, {"CASE_RESAULT": null}> with timestamp=0
 >>> Running test: case-expression - searched case with arithmetic expression in result - JSON
	 >>> Test case-expression - searched case with arithmetic expression in result - JSON passed!
 >>> Running test: case-expression - searched case with null in when  - AVRO
io.confluent.ksql.util.KsqlException: Expected <0, {CASE_RESAULT=default}> with timestamp=0 but was <0, {"CASE_RESAULT": "default"}> with timestamp=0
	at io.confluent.ksql.test.tools.TestCase.validateTopicData(TestCase.java:426)
	at io.confluent.ksql.test.tools.TestCase.lambda$verifyOutputTopics$9(TestCase.java:387)
	at java.util.HashMap$KeySet.forEach(HashMap.java:933)
	at io.confluent.ksql.test.tools.TestCase.verifyOutputTopics(TestCase.java:387)
	at io.confluent.ksql.test.tools.TestExecutor.buildAndExecuteQuery(TestExecutor.java:108)
	at io.confluent.ksql.test.tools.KsqlTestingTool.executeTestCase(KsqlTestingTool.java:87)
	at io.confluent.ksql.test.tools.KsqlTestingTool.loadAndRunTests(KsqlTestingTool.java:66)
	at io.confluent.ksql.test.tools.KsqlTestingTool.main(KsqlTestingTool.java:39)
	>>>>> Test case-expression - searched case with null in when  - AVRO failed: Expected <0, {CASE_RESAULT=default}> with timestamp=0 but was <0, {"CASE_RESAULT": "default"}> with timestamp=0
 >>> Running test: case-expression - searched case with null in when  - JSON
	 >>> Test case-expression - searched case with null in when  - JSON passed!
 >>> Running test: case-expression - searched case expression with multiple expression and the same type - AVRO
io.confluent.ksql.util.KsqlException: Expected <0, {CASE_RESAULT=Food}> with timestamp=0 but was <0, {"CASE_RESAULT": "Food"}> with timestamp=0
	at io.confluent.ksql.test.tools.TestCase.validateTopicData(TestCase.java:426)
	at io.confluent.ksql.test.tools.TestCase.lambda$verifyOutputTopics$9(TestCase.java:387)
	at java.util.HashMap$KeySet.forEach(HashMap.java:933)
	at io.confluent.ksql.test.tools.TestCase.verifyOutputTopics(TestCase.java:387)
	at io.confluent.ksql.test.tools.TestExecutor.buildAndExecuteQuery(TestExecutor.java:108)
	at io.confluent.ksql.test.tools.KsqlTestingTool.executeTestCase(KsqlTestingTool.java:87)
	at io.confluent.ksql.test.tools.KsqlTestingTool.loadAndRunTests(KsqlTestingTool.java:66)
	at io.confluent.ksql.test.tools.KsqlTestingTool.main(KsqlTestingTool.java:39)
	>>>>> Test case-expression - searched case expression with multiple expression and the same type - AVRO failed: Expected <0, {CASE_RESAULT=Food}> with timestamp=0 but was <0, {"CASE_RESAULT": "Food"}> with timestamp=0
 >>> Running test: case-expression - searched case expression with multiple expression and the same type - JSON
	 >>> Test case-expression - searched case expression with multiple expression and the same type - JSON passed!
Number of tests: 4
All tests passed!

The output shows that the AVRO tests failed while the JSON tests passed, yet All tests passed! was printed (despite half the tests failing).


.. code:: bash
$ ksql-testing-tool /path/to/the/test/file.json

This comment has been minimized.

Copy link
@vcrfxia

vcrfxia May 13, 2019

Contributor
Suggested change
$ ksql-testing-tool /path/to/the/test/file.json
ksql-testing-tool /path/to/the/test/file.json

We no longer need the dollar signs, correct? @JimGalasyn

This comment has been minimized.

Copy link
@JimGalasyn

JimGalasyn May 14, 2019

Member

@vcrfxia That's right, now that the docs site has the nifty "copy snippet" feature.

ksql-functional-tests/src/assembly/development.xml Outdated Show resolved Hide resolved
}

public static FakeKafkaRecord of(final Record testRecord, final ProducerRecord producerRecord) {
Objects.requireNonNull(testRecord, "testRecord");

This comment has been minimized.

Copy link
@vcrfxia

vcrfxia May 13, 2019

Contributor

How come we only null-check testRecord and not producerRecord?

This comment has been minimized.

Copy link
@hjafarpour

hjafarpour May 14, 2019

Author Member

producerRecord is null for the messages coming from the test file.

@vcrfxia vcrfxia requested a review from confluentinc/ksql May 13, 2019

hjafarpour added some commits May 14, 2019

@hjafarpour
Copy link
Member Author

left a comment

Thanks for the review @vcrfxia Yes, there were some issues with Avro. I fixed them and applied your comments too. Please try again :)

}

public static FakeKafkaRecord of(final Record testRecord, final ProducerRecord producerRecord) {
Objects.requireNonNull(testRecord, "testRecord");

This comment has been minimized.

Copy link
@hjafarpour

hjafarpour May 14, 2019

Author Member

producerRecord is null for the messages coming from the test file.

fakeKafkaService.writeRecord(
producerRecord.topic(),
FakeKafkaRecord.of(
getTopic(

This comment has been minimized.

Copy link
@hjafarpour

hjafarpour May 14, 2019

Author Member

That's right, I added sinkTopic in a recent commit and missed the call in the following. Using sinkTopic now :)

+ " but was <" + actualProducerRecord.key() + ", "
+ actualProducerRecord.value() + "> with timestamp="
+ actualProducerRecord.timestamp());
throw new KsqlException(error.getMessage());

This comment has been minimized.

Copy link
@hjafarpour

hjafarpour May 14, 2019

Author Member

Aha, the assertion error was from the old code. I removed it.

@vcrfxia
Copy link
Contributor

left a comment

Thanks @hjafarpour -- getting there! There are still failures from our query translation tests though, for example:

Victoria-Xias-MBP13:ksql victoria.xia$ ./bin/ksql-testing-tool ksql-functional-tests/src/test/resources/query-validation-tests/multiple-avro-maps.json
 >>> Running test: multiple-avro-maps - project multiple avro maps
java.lang.ClassCastException: java.util.LinkedHashMap cannot be cast to java.util.List
	at io.confluent.ksql.test.serde.avro.ValueSpecAvroSerdeSupplier$ValueSpecAvroSerializer.valueSpecToAvro(ValueSpecAvroSerdeSupplier.java:111)
	at io.confluent.ksql.test.serde.avro.ValueSpecAvroSerdeSupplier$ValueSpecAvroSerializer.valueSpecToAvro(ValueSpecAvroSerdeSupplier.java:134)
	at io.confluent.ksql.test.serde.avro.ValueSpecAvroSerdeSupplier$ValueSpecAvroSerializer.valueSpecToAvro(ValueSpecAvroSerdeSupplier.java:127)
	at io.confluent.ksql.test.serde.avro.ValueSpecAvroSerdeSupplier$ValueSpecAvroSerializer.serialize(ValueSpecAvroSerdeSupplier.java:84)
	at io.confluent.ksql.test.tools.TestCase.lambda$getExpectedRecordsMap$9(TestCase.java:445)
	at java.util.ArrayList.forEach(ArrayList.java:1257)
	at io.confluent.ksql.test.tools.TestCase.getExpectedRecordsMap(TestCase.java:434)
	at io.confluent.ksql.test.tools.TestCase.verifyOutputTopics(TestCase.java:376)
	at io.confluent.ksql.test.tools.TestExecutor.buildAndExecuteQuery(TestExecutor.java:109)
	at io.confluent.ksql.test.tools.KsqlTestingTool.executeTestCase(KsqlTestingTool.java:87)
	at io.confluent.ksql.test.tools.KsqlTestingTool.loadAndRunTests(KsqlTestingTool.java:65)
	at io.confluent.ksql.test.tools.KsqlTestingTool.main(KsqlTestingTool.java:41)
	>>>>> Test multiple-avro-maps - project multiple avro maps failed: java.util.LinkedHashMap cannot be cast to java.util.List
Number of tests: 0
All tests passed!

and

Victoria-Xias-MBP13:ksql victoria.xia$ ./bin/ksql-testing-tool ksql-functional-tests/src/test/resources/query-validation-tests/hopping-windows.json
 >>> Running test: hopping-windows - max hopping
Exception in thread "main" java.lang.AssertionError:
Expected: <7>
     but: was <18>
	at org.hamcrest.MatcherAssert.assertThat(MatcherAssert.java:20)
	at org.junit.Assert.assertThat(Assert.java:956)
	at org.junit.Assert.assertThat(Assert.java:923)
	at io.confluent.ksql.test.tools.TestCase.validateTopicData(TestCase.java:396)
	at io.confluent.ksql.test.tools.TestCase.lambda$verifyOutputTopics$8(TestCase.java:385)
	at java.util.HashMap$KeySet.forEach(HashMap.java:933)
	at io.confluent.ksql.test.tools.TestCase.verifyOutputTopics(TestCase.java:385)
	at io.confluent.ksql.test.tools.TestExecutor.buildAndExecuteQuery(TestExecutor.java:109)
	at io.confluent.ksql.test.tools.KsqlTestingTool.executeTestCase(KsqlTestingTool.java:87)
	at io.confluent.ksql.test.tools.KsqlTestingTool.loadAndRunTests(KsqlTestingTool.java:65)
	at io.confluent.ksql.test.tools.KsqlTestingTool.main(KsqlTestingTool.java:41)
testExecutor.buildAndExecuteQuery(testCase);
System.out.println("\t >>> Test " + testCase.getName() + " passed!");
passedTests.add(testCase.getName());
totalNumberOfTests ++;

This comment has been minimized.

Copy link
@vcrfxia

vcrfxia May 14, 2019

Contributor

This needs to happen either at the beginning of the try-catch block, or in the finally block. Currently only successful tests are being added to the count.

This comment has been minimized.

Copy link
@hjafarpour

hjafarpour May 14, 2019

Author Member

Oops, you are right. Moved it to finally block.

]
},
{
"format": ["AVRO", "JSON"],

This comment has been minimized.

Copy link
@vcrfxia

vcrfxia May 14, 2019

Contributor

Why have we added these additional tests to the unit_test file?

This comment has been minimized.

Copy link
@hjafarpour

hjafarpour May 14, 2019

Author Member

The name is misleading, I changed it to testing_tool_tests.
These are different than the ones in QTT since we have more than one query in these tests.

@vcrfxia vcrfxia requested a review from confluentinc/ksql May 14, 2019

totalNumberOfTests ++;
} catch (final Exception e) {
e.printStackTrace();
System.err.println("\t>>>>> Test " + testCase.getName() + " failed: " + e.getMessage());

This comment has been minimized.

Copy link
@vcrfxia

vcrfxia May 14, 2019

Contributor

In the second example I put above (copy-pasted below for convenience), this line is not getting executed, I think because the AssertionError isn't being properly passed up from a lower try-catch, e.g., the one in TestExecutor#buildAndExecuteQuery(). We should figure out where the exception is getting swallowed and fix it so this line prints. (Something is wrong with my IntelliJ configuration and I can't run the debugger right now... I can help you debug once I figure this out.)

Victoria-Xias-MBP13:ksql victoria.xia$ ./bin/ksql-testing-tool ksql-functional-tests/src/test/resources/query-validation-tests/hopping-windows.json
 >>> Running test: hopping-windows - max hopping
Exception in thread "main" java.lang.AssertionError:
Expected: <7>
     but: was <18>
	at org.hamcrest.MatcherAssert.assertThat(MatcherAssert.java:20)
	at org.junit.Assert.assertThat(Assert.java:956)
	at org.junit.Assert.assertThat(Assert.java:923)
	at io.confluent.ksql.test.tools.TestCase.validateTopicData(TestCase.java:396)
	at io.confluent.ksql.test.tools.TestCase.lambda$verifyOutputTopics$8(TestCase.java:385)
	at java.util.HashMap$KeySet.forEach(HashMap.java:933)
	at io.confluent.ksql.test.tools.TestCase.verifyOutputTopics(TestCase.java:385)
	at io.confluent.ksql.test.tools.TestExecutor.buildAndExecuteQuery(TestExecutor.java:109)
	at io.confluent.ksql.test.tools.KsqlTestingTool.executeTestCase(KsqlTestingTool.java:87)
	at io.confluent.ksql.test.tools.KsqlTestingTool.loadAndRunTests(KsqlTestingTool.java:65)
	at io.confluent.ksql.test.tools.KsqlTestingTool.main(KsqlTestingTool.java:41)

This comment has been minimized.

Copy link
@vcrfxia

vcrfxia May 14, 2019

Contributor

Another thing worth noting: the file hopping-windows.json has multiple tests in it, but because of this failure from the first test, subsequent tests in the file weren't run. This makes me think that instead of an exception being swallowed (as I'd previously guessed), it's actually an error that's not being caught.

This comment has been minimized.

Copy link
@hjafarpour

hjafarpour May 14, 2019

Author Member

This one is fixed now. There was a printStackTrace() statement that I hadn't removed.

This comment has been minimized.

Copy link
@vcrfxia

vcrfxia May 15, 2019

Contributor

Hmm... I still seem to be hitting it. For example:

Victoria-Xias-MBP13:ksql victoria.xia$ ./bin/ksql-testing-tool ksql-functional-tests/src/test/resources/query-validation-tests/histogram.json
 >>> Running test: histogram - histogram string - AVRO
	>>>>> Test histogram - histogram string - AVRO failed: java.util.LinkedHashMap cannot be cast to java.util.List
 >>> Running test: histogram - histogram string - JSON
	>>>>> Test histogram - histogram string - JSON failed: Expected <0, {"ID":0,"COUNTS":{"foo":1,"bar":1}}> with timestamp=0 but was <0, {"ID":0,"COUNTS":{"bar":1,"foo":1}}> with timestamp=0
 >>> Running test: histogram - histogram on a table - AVRO
	>>>>> Test histogram - histogram on a table - AVRO failed: java.util.LinkedHashMap cannot be cast to java.util.List
 >>> Running test: histogram - histogram on a table - JSON
Exception in thread "main" java.lang.AssertionError:
Expected: <6>
     but: was <7>
	at org.hamcrest.MatcherAssert.assertThat(MatcherAssert.java:20)
	at org.junit.Assert.assertThat(Assert.java:956)
	at org.junit.Assert.assertThat(Assert.java:923)
	at io.confluent.ksql.test.tools.TestCase.validateTopicData(TestCase.java:437)
	at io.confluent.ksql.test.tools.TestCase.lambda$verifyOutputTopics$8(TestCase.java:426)
	at java.util.HashMap$KeySet.forEach(HashMap.java:933)
	at io.confluent.ksql.test.tools.TestCase.verifyOutputTopics(TestCase.java:426)
	at io.confluent.ksql.test.tools.TestExecutor.buildAndExecuteQuery(TestExecutor.java:109)
	at io.confluent.ksql.test.tools.KsqlTestingTool.executeTestCase(KsqlTestingTool.java:86)
	at io.confluent.ksql.test.tools.KsqlTestingTool.loadAndRunTests(KsqlTestingTool.java:65)
	at io.confluent.ksql.test.tools.KsqlTestingTool.main(KsqlTestingTool.java:41)

Because the fourth test threw an AssertionError, the rest of the tests in the file weren't run and no summary was printed.

@vcrfxia vcrfxia requested a review from confluentinc/ksql May 14, 2019

@hjafarpour

This comment has been minimized.

Copy link
Member Author

commented May 14, 2019

@vcrfxia thanks for the comments. I pushed the latest changes along with the fixes for the issues you mentioned. It's ready for your review. The following are the known issues as of now:
#2818 (KSQL testing tool should be able to test unwrapped key/values)
#2819 (KSQL testing tool fails when testing a stream with session window key)

Also for now only use JSON or DELIMITED formats.

@vcrfxia
Copy link
Contributor

left a comment

Thanks for the improvements @hjafarpour ! In addition to your list of TODOs above, here are a few more:

  • We should either add Avro support or remove it and have a check in the code to print a message to the user that it is not supported, should someone try to use it.
  • Regardless of which option we pursue above, we should update the docs accordingly.
  • We should update the release notes to let people know about this awesome new feature!
  • The issue I pointed out earlier where an AssertionError causes the tool to exit and not run subsequent tests does not appear to be fixed. I left a comment / example on the discussion inline.
  • As we discussed offline, some of our existing query validation tests (e.g., simple-struct.json) pass when run through the QueryTranslationTest framework but fail when run with the testing tool, due to discrepancies in the order of the columns in the test. We need to investigate this.

Approving this PR for the sake of not blocking it any longer, but we should really address these issues (or at minimum update the relevant docs) before the release is cut.

docs/testing-tool.rst Show resolved Hide resolved
totalNumberOfTests ++;
} catch (final Exception e) {
e.printStackTrace();
System.err.println("\t>>>>> Test " + testCase.getName() + " failed: " + e.getMessage());

This comment has been minimized.

Copy link
@vcrfxia

vcrfxia May 15, 2019

Contributor

Hmm... I still seem to be hitting it. For example:

Victoria-Xias-MBP13:ksql victoria.xia$ ./bin/ksql-testing-tool ksql-functional-tests/src/test/resources/query-validation-tests/histogram.json
 >>> Running test: histogram - histogram string - AVRO
	>>>>> Test histogram - histogram string - AVRO failed: java.util.LinkedHashMap cannot be cast to java.util.List
 >>> Running test: histogram - histogram string - JSON
	>>>>> Test histogram - histogram string - JSON failed: Expected <0, {"ID":0,"COUNTS":{"foo":1,"bar":1}}> with timestamp=0 but was <0, {"ID":0,"COUNTS":{"bar":1,"foo":1}}> with timestamp=0
 >>> Running test: histogram - histogram on a table - AVRO
	>>>>> Test histogram - histogram on a table - AVRO failed: java.util.LinkedHashMap cannot be cast to java.util.List
 >>> Running test: histogram - histogram on a table - JSON
Exception in thread "main" java.lang.AssertionError:
Expected: <6>
     but: was <7>
	at org.hamcrest.MatcherAssert.assertThat(MatcherAssert.java:20)
	at org.junit.Assert.assertThat(Assert.java:956)
	at org.junit.Assert.assertThat(Assert.java:923)
	at io.confluent.ksql.test.tools.TestCase.validateTopicData(TestCase.java:437)
	at io.confluent.ksql.test.tools.TestCase.lambda$verifyOutputTopics$8(TestCase.java:426)
	at java.util.HashMap$KeySet.forEach(HashMap.java:933)
	at io.confluent.ksql.test.tools.TestCase.verifyOutputTopics(TestCase.java:426)
	at io.confluent.ksql.test.tools.TestExecutor.buildAndExecuteQuery(TestExecutor.java:109)
	at io.confluent.ksql.test.tools.KsqlTestingTool.executeTestCase(KsqlTestingTool.java:86)
	at io.confluent.ksql.test.tools.KsqlTestingTool.loadAndRunTests(KsqlTestingTool.java:65)
	at io.confluent.ksql.test.tools.KsqlTestingTool.main(KsqlTestingTool.java:41)

Because the fourth test threw an AssertionError, the rest of the tests in the file weren't run and no summary was printed.

@vcrfxia vcrfxia requested a review from confluentinc/ksql May 15, 2019

@hjafarpour

This comment has been minimized.

Copy link
Member Author

commented May 15, 2019

@vcrfxia thanks for the review. The problem you mentioned above was causing by the assert command. I changed it to an exception and now we have the test report printed at the end. We may have this in few other places. I'll remove them in the follow up PRs.

@hjafarpour hjafarpour merged commit 9d55cf6 into confluentinc:master May 15, 2019

1 check was pending

continuous-integration/jenkins/pr-merge This commit is being built
Details
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
4 participants
You can’t perform that action at this time.