X-Git-Url: https://juplo.de/gitweb/?a=blobdiff_plain;f=src%2Ftest%2Fjava%2Fde%2Fjuplo%2Fkafka%2Fwordcount%2Fcounter%2FTestData.java;h=ea33cb0b29869d2def92b03de6593d025ff3bfe1;hb=f08dc87a018fb2cd84de1a274c20fb9f4487b7a0;hp=dc3bcecfd98663b9f8d5dc0200804aaf39e3f5db;hpb=4072a93fd94a847c86ea422d74b17b0913b7de2a;p=demos%2Fkafka%2Fwordcount diff --git a/src/test/java/de/juplo/kafka/wordcount/counter/TestData.java b/src/test/java/de/juplo/kafka/wordcount/counter/TestData.java index dc3bcec..ea33cb0 100644 --- a/src/test/java/de/juplo/kafka/wordcount/counter/TestData.java +++ b/src/test/java/de/juplo/kafka/wordcount/counter/TestData.java @@ -1,105 +1,120 @@ package de.juplo.kafka.wordcount.counter; -import java.util.List; +import org.apache.kafka.common.header.Header; +import org.apache.kafka.common.header.Headers; +import org.apache.kafka.streams.KeyValue; +import org.springframework.util.LinkedMultiValueMap; +import org.springframework.util.MultiValueMap; + +import java.util.Map; +import java.util.Properties; import java.util.function.BiConsumer; +import java.util.stream.Collectors; +import java.util.stream.Stream; import static org.assertj.core.api.Assertions.assertThat; class TestData { - static void writeInputData(BiConsumer consumer) + static void writeInputData(BiConsumer consumer) { - consumer.accept( - "peter", - "Hallo"); - consumer.accept( - "klaus", - "Müsch"); - consumer.accept( - "peter", - "Welt"); - consumer.accept( - "klaus", - "Müsch"); - consumer.accept( - "klaus", - "s"); - consumer.accept( - "peter", - "Boäh"); - consumer.accept( - "peter", - "Welt"); - consumer.accept( - "peter", - "Boäh"); - consumer.accept( - "klaus", - "s"); - consumer.accept( - "peter", - "Boäh"); - consumer.accept( - "klaus", - "s"); + Stream + .of(inputMessagesArray) + .forEach(word -> consumer.accept(word.getUser(), word)); } - static void assertExpectedResult(List receivedMessages) + static Word[] inputMessagesArray = new Word[] + { + Word.of("peter","Hallo"), + Word.of("klaus","Müsch"), + Word.of("peter","Welt"), + Word.of("klaus","Müsch"), + Word.of("klaus","s"), + Word.of("peter","Boäh"), + Word.of("peter","Welt"), + Word.of("peter","Boäh"), + Word.of("klaus","s"), + Word.of("peter","Boäh"), + Word.of("klaus","s"), + }; + + static void assertExpectedResult(MultiValueMap receivedMessages) { - assertThat(receivedMessages).hasSize(11); - assertThat(receivedMessages).containsSubsequence( - expectedMessages[0]); // Hallo - assertThat(receivedMessages).containsSubsequence( - expectedMessages[1], - expectedMessages[3]); // Müsch - assertThat(receivedMessages).containsSubsequence( - expectedMessages[2], - expectedMessages[6]); - assertThat(receivedMessages).containsSubsequence( - expectedMessages[4], - expectedMessages[8], - expectedMessages[10]); // s - assertThat(receivedMessages).containsSubsequence( - expectedMessages[5], - expectedMessages[7], - expectedMessages[9]); // Boäh + expectedMessages.forEach( + (word, counter) -> + assertThat(receivedMessages.get(word)) + .containsExactlyElementsOf(counter)); } - static Message[] expectedMessages = + static KeyValue[] expectedMessagesArray = new KeyValue[] { - Message.of( - "{\"username\":\"peter\",\"word\":\"Hallo\"}", - "1"), - Message.of( - "{\"username\":\"klaus\",\"word\":\"Müsch\"}", - "1"), - Message.of( - "{\"username\":\"peter\",\"word\":\"Welt\"}", - "1"), - Message.of( - "{\"username\":\"klaus\",\"word\":\"Müsch\"}", - "2"), - Message.of( - "{\"username\":\"klaus\",\"word\":\"s\"}", - "1"), - Message.of( - "{\"username\":\"peter\",\"word\":\"Boäh\"}", - "1"), - Message.of( - "{\"username\":\"peter\",\"word\":\"Welt\"}", - "2"), - Message.of( - "{\"username\":\"peter\",\"word\":\"Boäh\"}", - "2"), - Message.of( - "{\"username\":\"klaus\",\"word\":\"s\"}", - "2"), - Message.of( - "{\"username\":\"peter\",\"word\":\"Boäh\"}", - "3"), - Message.of( - "{\"username\":\"klaus\",\"word\":\"s\"}", - "3"), + KeyValue.pair( + Word.of("peter","Hallo"), + WordCounter.of("peter","Hallo",1)), + KeyValue.pair( + Word.of("klaus","Müsch"), + WordCounter.of("klaus","Müsch",1)), + KeyValue.pair( + Word.of("peter","Welt"), + WordCounter.of("peter","Welt",1)), + KeyValue.pair( + Word.of("klaus","Müsch"), + WordCounter.of("klaus","Müsch",2)), + KeyValue.pair( + Word.of("klaus","s"), + WordCounter.of("klaus","s",1)), + KeyValue.pair( + Word.of("peter","Boäh"), + WordCounter.of("peter","Boäh",1)), + KeyValue.pair( + Word.of("peter","Welt"), + WordCounter.of("peter","Welt",2)), + KeyValue.pair( + Word.of("peter","Boäh"), + WordCounter.of("peter","Boäh",2)), + KeyValue.pair( + Word.of("klaus","s"), + WordCounter.of("klaus","s",2)), + KeyValue.pair( + Word.of("peter","Boäh"), + WordCounter.of("peter","Boäh",3)), + KeyValue.pair( + Word.of("klaus","s"), + WordCounter.of("klaus","s",3)), }; + + static MultiValueMap expectedMessages; + static + { + expectedMessages = new LinkedMultiValueMap<>(); + Stream + .of(expectedMessagesArray) + .forEach(keyValue -> expectedMessages.add(keyValue.key, keyValue.value)); + } + + 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()); + } + } }