Source:
public void testStatefulJoinWithLocalTable() throws InterruptedException { Random random = new Random(); List<KV<String, TestTableData.PageView>> pageViews = Arrays.asList(TestTableData.generatePageViews(10)) .stream() .map(x -> KV.of(PAGEKEYS[random.nextInt(PAGEKEYS.length)], x)) .collect(Collectors.toList()); List<KV<String, TestTableData.Profile>> profiles = Arrays.asList(TestTableData.generateProfiles(10)) .stream() .map(x -> KV.of(PAGEKEYS[random.nextInt(PAGEKEYS.length)], x)) .collect(Collectors.toList()); InMemorySystemDescriptor isd = new InMemorySystemDescriptor("test"); InMemoryInputDescriptor<KV<String, TestTableData.PageView>> pageViewStreamDesc = isd .getInputDescriptor("PageView", new NoOpSerde<KV<String, TestTableData.PageView>>()); InMemoryInputDescriptor<KV<String, TestTableData.Profile>> profileStreamDesc = isd .getInputDescriptor("Profile", new NoOpSerde<KV<String, TestTableData.Profile>>()) .shouldBootstrap(); InMemoryOutputDescriptor<TestTableData.EnrichedPageView> outputStreamDesc = isd .getOutputDescriptor("EnrichedPageView", new NoOpSerde<>()); InMemoryOutputDescriptor<String> joinKeysDescriptor = isd .getOutputDescriptor("JoinPageKeys", new NoOpSerde<>()); TestRunner .of(new PageViewProfileViewJoinApplication()) .addInputStream(pageViewStreamDesc, pageViews) .addInputStream(profileStreamDesc, profiles) .addOutputStream(outputStreamDesc, 1) .addOutputStream(joinKeysDescriptor, 1) .run(Duration.ofSeconds(2)); Assert.assertEquals(10, TestRunner.consumeStream(outputStreamDesc, Duration.ofSeconds(1)).get(0).size()); Assert.assertEquals(10, TestRunner.consumeStream(joinKeysDescriptor, Duration.ofSeconds(1)).get(0).size()); }

Target:
public void testStatefulJoinWithLocalTable() { Random random = new Random(); List<KV<String, TestTableData.PageView>> pageViews = Arrays.asList(TestTableData.generatePageViews(10)) .stream() .map(x -> KV.of(PAGEKEYS[random.nextInt(PAGEKEYS.length)], x)) .collect(Collectors.toList()); List<KV<String, TestTableData.Profile>> profiles = Arrays.asList(TestTableData.generateProfiles(10)) .stream() .map(x -> KV.of(PAGEKEYS[random.nextInt(PAGEKEYS.length)], x)) .collect(Collectors.toList()); InMemorySystemDescriptor isd = new InMemorySystemDescriptor("test"); InMemoryInputDescriptor<KV<String, TestTableData.PageView>> pageViewStreamDesc = isd .getInputDescriptor("PageView", new NoOpSerde<KV<String, TestTableData.PageView>>()); InMemoryInputDescriptor<KV<String, TestTableData.Profile>> profileStreamDesc = isd .getInputDescriptor("Profile", new NoOpSerde<KV<String, TestTableData.Profile>>()) .shouldBootstrap(); InMemoryOutputDescriptor<TestTableData.EnrichedPageView> outputStreamDesc = isd .getOutputDescriptor("EnrichedPageView", new NoOpSerde<>()); InMemoryOutputDescriptor<String> joinKeysDescriptor = isd .getOutputDescriptor("JoinPageKeys", new NoOpSerde<>()); TestRunner .of(new PageViewProfileViewJoinApplication()) .addInputStream(pageViewStreamDesc, pageViews) .addInputStream(profileStreamDesc, profiles) .addOutputStream(outputStreamDesc, 1) .addOutputStream(joinKeysDescriptor, 1) .run(Duration.ofSeconds(2)); Assert.assertEquals(10, TestRunner.consumeStream(outputStreamDesc, Duration.ofSeconds(1)).get(0).size()); Assert.assertEquals(10, TestRunner.consumeStream(joinKeysDescriptor, Duration.ofSeconds(1)).get(0).size()); }