mjsax commented on code in PR #13656: URL: https://github.com/apache/kafka/pull/13656#discussion_r1183042758
########## streams/src/test/java/org/apache/kafka/streams/tests/StreamsUpgradeTest.java: ########## @@ -143,6 +173,94 @@ private static void buildFKTable(final KStream<String, Integer> primaryTable, kStream.to("fk-result", Produced.with(stringSerde, stringSerde)); } + private static void buildTableAgg(final KTable<String, Integer> sourceTable, + final String aggProduceValue, + final List<String> expectedAggValues) { + final KStream<Integer, String> result = sourceTable + .groupBy( + (k, v) -> new KeyValue<>(v, aggProduceValue), + Grouped.with(intSerde, stringSerde)) + .aggregate( + () -> new Agg(Collections.emptyList(), 0), + (k, v, agg) -> { + final List<String> seenValues; + final boolean updated; + if (!agg.seenValues.contains(v)) { + seenValues = new ArrayList<>(agg.seenValues); + seenValues.add(v); + Collections.sort(seenValues); + updated = true; + } else { + seenValues = agg.seenValues; + updated = false; + } + + final boolean shouldLog = updated || (agg.recordsProcessed % 10 == 0); // value of 10 is chosen for debugging purposes. can increase to 100 once test is passing. + if (shouldLog) { Review Comment: Originally it was ``` if (shouldLog && seenValues.containsAll(expectedAggValues) { ... } else { ... } ``` So it always logged something. ########## streams/src/test/java/org/apache/kafka/streams/tests/StreamsUpgradeTest.java: ########## @@ -143,6 +173,94 @@ private static void buildFKTable(final KStream<String, Integer> primaryTable, kStream.to("fk-result", Produced.with(stringSerde, stringSerde)); } + private static void buildTableAgg(final KTable<String, Integer> sourceTable, + final String aggProduceValue, + final List<String> expectedAggValues) { + final KStream<Integer, String> result = sourceTable + .groupBy( + (k, v) -> new KeyValue<>(v, aggProduceValue), + Grouped.with(intSerde, stringSerde)) + .aggregate( + () -> new Agg(Collections.emptyList(), 0), + (k, v, agg) -> { + final List<String> seenValues; + final boolean updated; + if (!agg.seenValues.contains(v)) { + seenValues = new ArrayList<>(agg.seenValues); + seenValues.add(v); + Collections.sort(seenValues); + updated = true; + } else { + seenValues = agg.seenValues; + updated = false; + } + + final boolean shouldLog = updated || (agg.recordsProcessed % 10 == 0); // value of 10 is chosen for debugging purposes. can increase to 100 once test is passing. + if (shouldLog) { Review Comment: Originally it was ``` if (shouldLog && seenValues.containsAll(expectedAggValues) { ... } else { ... } ``` So it always logged something. -- This is an automated message from the Apache Git Service. To respond to the message, please log on to GitHub and use the URL above to go to the specific comment. To unsubscribe, e-mail: jira-unsubscr...@kafka.apache.org For queries about this service, please contact Infrastructure at: us...@infra.apache.org