X-Git-Url: https://juplo.de/gitweb/?a=blobdiff_plain;f=src%2Ftest%2Fjava%2Fde%2Fjuplo%2Fkafka%2Fwordcount%2Fcounter%2FTestData.java;h=19443ac4ab192b90b0c4232bc4da9c94bcef79f5;hb=e94a327bebf468e2bcb5b686346a18a1409ec254;hp=4b5482b8172f81e5adf7e90dc36cf8395b5c2f92;hpb=0a7e20af38fe1502c7c4328b2b6024cfe9e7b019;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 4b5482b..19443ac 100644 --- a/src/test/java/de/juplo/kafka/wordcount/counter/TestData.java +++ b/src/test/java/de/juplo/kafka/wordcount/counter/TestData.java @@ -1,109 +1,137 @@ package de.juplo.kafka.wordcount.counter; -import com.fasterxml.jackson.core.JsonProcessingException; -import com.fasterxml.jackson.databind.ObjectMapper; -import org.springframework.util.LinkedMultiValueMap; -import org.springframework.util.MultiValueMap; +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", - "Hallo"); + Word.of("peter","Hallo")); consumer.accept( "klaus", - "Müsch"); + Word.of("klaus","Müsch")); consumer.accept( "peter", - "Welt"); + Word.of("peter","Welt")); consumer.accept( "klaus", - "Müsch"); + Word.of("klaus","Müsch")); consumer.accept( "klaus", - "s"); + Word.of("klaus","s")); consumer.accept( "peter", - "Boäh"); + Word.of("peter","Boäh")); consumer.accept( "peter", - "Welt"); + Word.of("peter","Welt")); consumer.accept( "peter", - "Boäh"); + Word.of("peter","Boäh")); consumer.accept( "klaus", - "s"); + Word.of("klaus","s")); consumer.accept( "peter", - "Boäh"); + Word.of("peter","Boäh")); consumer.accept( "klaus", - "s"); + Word.of("klaus","s")); } - static void assertExpectedResult(List receivedMessages, ObjectMapper mapper) + static void assertExpectedResult(List> receivedMessages) { - MultiValueMap received = new LinkedMultiValueMap<>(); + 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 + } - receivedMessages.forEach(message -> - { - try - { - Key key = mapper.readValue(message.getKey(), Key.class); - received.add(key.getUsername(), message); - } - catch (JsonProcessingException e) - { - throw new RuntimeException(e); - } - }); + static KeyValue[] expectedMessages = new KeyValue[] + { + 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)), + }; - assertThat(received).hasSize(2); - assertThat(received.get("klaus")).containsExactly(klaus1, klaus2, klaus3, klaus4, klaus5); - assertThat(received.get("peter")).containsExactly(peter1, peter2, peter3, peter4, peter5, peter6); + static Map convertToMap(Properties properties) + { + return properties + .entrySet() + .stream() + .collect( + Collectors.toMap( + entry -> (String)entry.getKey(), + entry -> entry.getValue() + )); } - static Message peter1 = Message.of( - "{\"username\":\"peter\",\"word\":\"Hallo\"}", - "1"); - static Message peter2 = Message.of( - "{\"username\":\"peter\",\"word\":\"Welt\"}", - "1"); - static Message peter3 = Message.of( - "{\"username\":\"peter\",\"word\":\"Boäh\"}", - "1"); - static Message peter4 = Message.of( - "{\"username\":\"peter\",\"word\":\"Welt\"}", - "2"); - static Message peter5 = Message.of( - "{\"username\":\"peter\",\"word\":\"Boäh\"}", - "2"); - static Message peter6 = Message.of( - "{\"username\":\"peter\",\"word\":\"Boäh\"}", - "3"); - - static Message klaus1 = Message.of( - "{\"username\":\"klaus\",\"word\":\"Müsch\"}", - "1"); - static Message klaus2 = Message.of( - "{\"username\":\"klaus\",\"word\":\"Müsch\"}", - "2"); - static Message klaus3 = Message.of( - "{\"username\":\"klaus\",\"word\":\"s\"}", - "1"); - static Message klaus4 = Message.of( - "{\"username\":\"klaus\",\"word\":\"s\"}", - "2"); - static Message klaus5 = Message.of( - "{\"username\":\"klaus\",\"word\":\"s\"}", - "3"); + 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()); + } + } }