[
https://issues.apache.org/jira/browse/CALCITE-1114?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=15181868#comment-15181868
]
Julian Hyde commented on CALCITE-1114:
--------------------------------------
As you can probably tell, this work is at an early stage. Also, you have to
understand the nature of a TCK: it is a harness where you slot in an
implementation, and the harness tells you whether the implementation is
compliant. The harness does nothing at present, because there is no concrete
implementation of StreamAssert.
In Flink, you will need to create your own sub-class of StreamTckTest, and
implement getTester to return an implementation of StreamAssert that does
something useful. You could start on that now, if you like.
I would like feedback on whether the {{input}}, {{send}}, {{expect}} methods
are a good grammar with which to define tests. {{expect}} is tricky, because
there is considerable freedom for when a streaming engine outputs rows, both in
terms of timing (latency) and the ordering of those rows. {{expect}} should
check for the minimum compliant behavior. Your challenge is to make Flink
testable, without having to put timeouts all over the place or having tests
fail because of non-deterministic behavior.
Once we have agreed on a grammar we can start to write tests for various query
patterns. Every query example in http://calcite.apache.org/docs/stream.html
could become a test, and many more.
> Test compatibility kit (TCK) for streaming SQL
> ----------------------------------------------
>
> Key: CALCITE-1114
> URL: https://issues.apache.org/jira/browse/CALCITE-1114
> Project: Calcite
> Issue Type: Bug
> Reporter: Julian Hyde
> Assignee: Julian Hyde
>
> Add a test compatibility kit (TCK) for streaming SQL. It would consist of
> several test cases, and each test cases has a SQL query, and a sequence of
> actions (sending rows into input streams) and expected outputs.
> The TCK is an abstract class; each project that wants to use the TCK must
> override the abstract class, providing a runner. The concrete class will
> invoke each of the queries against the runner.
--
This message was sent by Atlassian JIRA
(v6.3.4#6332)