X-Git-Url: https://juplo.de/gitweb/?a=blobdiff_plain;f=src%2Ftest%2Fjava%2Fde%2Fjuplo%2Fkafka%2Fwordcount%2Ftop10%2FTestData.java;h=a284a5da2eb7d2a135474c189fca3e7537d902d6;hb=20da5a144f8478fd7a00081c39f34a6670a68101;hp=dd7ad3358f0bf09822533f090c9af8e597c038a6;hpb=b9f05dfc77389331dbc69bf34898231074eb13d5;p=demos%2Fkafka%2Fwordcount diff --git a/src/test/java/de/juplo/kafka/wordcount/top10/TestData.java b/src/test/java/de/juplo/kafka/wordcount/top10/TestData.java index dd7ad33..a284a5d 100644 --- a/src/test/java/de/juplo/kafka/wordcount/top10/TestData.java +++ b/src/test/java/de/juplo/kafka/wordcount/top10/TestData.java @@ -1,105 +1,156 @@ package de.juplo.kafka.wordcount.top10; +import org.apache.kafka.common.header.Header; +import org.apache.kafka.common.header.Headers; +import org.apache.kafka.streams.KeyValue; + import java.util.List; +import java.util.Map; +import java.util.Properties; import java.util.function.BiConsumer; +import java.util.stream.Collectors; import static org.assertj.core.api.Assertions.assertThat; class TestData { - static void writeInputData(BiConsumer consumer) + static void writeInputData(BiConsumer consumer) { consumer.accept( - "peter", - "{\"user\":\"peter\",\"word\":\"Hallo\"}"); + Key.of("peter","Hallo"), + Counter.of("peter","Hallo",1)); consumer.accept( - "klaus", - "{\"user\":\"klaus\",\"word\":\"Müsch\"}"); + Key.of("klaus","Müsch"), + Counter.of("klaus","Müsch",1)); consumer.accept( - "peter", - "{\"user\":\"peter\",\"word\":\"Welt\"}"); + Key.of("peter","Welt"), + Counter.of("peter","Welt",1)); consumer.accept( - "klaus", - "{\"user\":\"klaus\",\"word\":\"Müsch\"}"); + Key.of("klaus","Müsch"), + Counter.of("klaus","Müsch",2)); consumer.accept( - "klaus", - "{\"user\":\"klaus\",\"word\":\"s\"}"); + Key.of("klaus","s"), + Counter.of("klaus","s",1)); consumer.accept( - "peter", - "{\"user\":\"peter\",\"word\":\"Boäh\"}"); + Key.of("peter","Boäh"), + Counter.of("peter","Boäh",1)); consumer.accept( - "peter", - "{\"user\":\"peter\",\"word\":\"Welt\"}"); + Key.of("peter","Welt"), + Counter.of("peter","Welt",2)); consumer.accept( - "peter", - "{\"user\":\"peter\",\"word\":\"Boäh\"}"); + Key.of("peter","Boäh"), + Counter.of("peter","Boäh",2)); consumer.accept( - "klaus", - "{\"user\":\"klaus\",\"word\":\"s\"}"); + Key.of("klaus","s"), + Counter.of("klaus","s",2)); consumer.accept( - "peter", - "{\"user\":\"peter\",\"word\":\"Boäh\"}"); + Key.of("peter","Boäh"), + Counter.of("peter","Boäh",3)); consumer.accept( - "klaus", - "{\"user\":\"klaus\",\"word\":\"s\"}"); + Key.of("klaus","s"), + Counter.of("klaus","s",3)); } - static void assertExpectedResult(List receivedMessages) + static void assertExpectedResult(List> receivedMessages) { assertThat(receivedMessages).hasSize(11); assertThat(receivedMessages).containsSubsequence( - expectedMessages[0]); // Hallo - assertThat(receivedMessages).containsSubsequence( - expectedMessages[1], - expectedMessages[3]); // Müsch - assertThat(receivedMessages).containsSubsequence( + expectedMessages[0], expectedMessages[2], - expectedMessages[6]); + expectedMessages[5], + expectedMessages[6], + expectedMessages[7]); // peter assertThat(receivedMessages).containsSubsequence( + expectedMessages[1], + expectedMessages[3], expectedMessages[4], expectedMessages[8], - expectedMessages[10]); // s - assertThat(receivedMessages).containsSubsequence( - expectedMessages[5], - expectedMessages[7], - expectedMessages[9]); // Boäh + expectedMessages[10]); // klaus } - static Message[] expectedMessages = + static KeyValue[] expectedMessages = new KeyValue[] { - Message.of( - "{\"user\":\"peter\",\"word\":\"Hallo\"}", - "{\"user\":\"peter\",\"word\":\"Hallo\",\"count\":1}"), - Message.of( - "{\"user\":\"klaus\",\"word\":\"Müsch\"}", - "{\"user\":\"klaus\",\"word\":\"Müsch\",\"count\":1}"), - Message.of( - "{\"user\":\"peter\",\"word\":\"Welt\"}", - "{\"user\":\"peter\",\"word\":\"Welt\",\"count\":1}"), - Message.of( - "{\"user\":\"klaus\",\"word\":\"Müsch\"}", - "{\"user\":\"klaus\",\"word\":\"Müsch\",\"count\":2}"), - Message.of( - "{\"user\":\"klaus\",\"word\":\"s\"}", - "{\"user\":\"klaus\",\"word\":\"s\",\"count\":1}"), - Message.of( - "{\"user\":\"peter\",\"word\":\"Boäh\"}", - "{\"user\":\"peter\",\"word\":\"Boäh\",\"count\":1}"), - Message.of( - "{\"user\":\"peter\",\"word\":\"Welt\"}", - "{\"user\":\"peter\",\"word\":\"Welt\",\"count\":2}"), - Message.of( - "{\"user\":\"peter\",\"word\":\"Boäh\"}", - "{\"user\":\"peter\",\"word\":\"Boäh\",\"count\":2}"), - Message.of( - "{\"user\":\"klaus\",\"word\":\"s\"}", - "{\"user\":\"klaus\",\"word\":\"s\",\"count\":2}"), - Message.of( - "{\"user\":\"peter\",\"word\":\"Boäh\"}", - "{\"user\":\"peter\",\"word\":\"Boäh\",\"count\":3}"), - Message.of( - "{\"user\":\"klaus\",\"word\":\"s\"}", - "{\"user\":\"klaus\",\"word\":\"s\",\"count\":3}"), + KeyValue.pair( // 0 + "peter", + Ranking.of( + Entry.of("Hallo", 1l))), + KeyValue.pair( // 1 + "klaus", + Ranking.of( + Entry.of("Müsch", 1l))), + KeyValue.pair( // 2 + "peter", + Ranking.of( + Entry.of("Welt", 1l), + Entry.of("Hallo", 1l))), + KeyValue.pair( // 3 + "klaus", + Ranking.of( + Entry.of("Müsch", 2l))), + KeyValue.pair( // 4 + "klaus", + Ranking.of( + Entry.of("Müsch", 2l), + Entry.of("s", 1l))), + KeyValue.pair( // 5 + "peter", + Ranking.of( + Entry.of("Boäh", 1l), + Entry.of("Hallo", 1l), + Entry.of("Welt", 1l))), + KeyValue.pair( // 6 + "peter", + Ranking.of( + Entry.of("Welt", 2l), + Entry.of("Boäh", 1l), + Entry.of("Hallo", 1l))), + KeyValue.pair( // 7 + "peter", + Ranking.of( + Entry.of("Welt", 2l), + Entry.of("Boäh", 2l), + Entry.of("Hallo", 1l))), + KeyValue.pair( // 8 + "klaus", + Ranking.of( + Entry.of("s", 2l), + Entry.of("Müsch", 2l))), + KeyValue.pair( // 9 + "peter", + Ranking.of( + Entry.of("Boäh", 3l), + Entry.of("Welt", 2l), + Entry.of("Hallo", 1l))), + KeyValue.pair( // 10 + "klaus", + Ranking.of( + Entry.of("s", 3l), + Entry.of("Müsch", 2l))), }; + + static Map convertToMap(Properties properties) + { + return properties + .entrySet() + .stream() + .collect( + Collectors.toMap( + entry -> (String)entry.getKey(), + entry -> entry.getValue() + )); + } + + static String parseHeader(Headers headers, String key) + { + Header header = headers.lastHeader(key); + if (header == null) + { + return key + "=null"; + } + else + { + return key + "=" + new String(header.value()); + } + } }