有人知道如何在Flink
中测试窗口功能吗?我正在使用依赖项flink-test-utils_2.11
。
我的步骤是:
StreamExecutionEnvironment
keyBy
public class AggregateVariantCEVTest extends AbstractTestBase {
@Test
public void testAggregateVariantCev() throws Exception {
StreamExecutionEnvironment env = StreamExecutionEnvironment.getExecutionEnvironment();
env.setParallelism(1);
env.fromElements(objectOne, objectTwo)
.keyBy(new KeyedByMyCustomKey())
.window(EventTimeSessionWindows.withGap(Time.seconds(1)))
.aggregate(new MyAgreggateFunction());
JobExecutionResult result = env.execute();
assertEquals(myExpectedResults, result.getAllAccumulatorResults());
}
}
问题是result.getAllAccumulatorResults()
的大小为0。
有什么主意我做错了吗?预先感谢!
答案 0 :(得分:1)
Windows不会将其结果放入累加器。您应该在工作中附加一个测试接收器,然后将其与您期望的内容进行比较。类似于section on integration testing文档中显示的内容。
答案 1 :(得分:1)
这里正确的方法可能是使用TestHarness
。一个很好的例子是Flink项目本身中的WindowOperatorTest
。
此外,您可以检出https://github.com/knaufk/flink-testing-pyramid的示例,以了解如何在测试金字塔的不同级别上测试Flink Job以及有关测试https://ci.apache.org/projects/flink/flink-docs-master/dev/stream/testing.html的Flink文档。