X-Git-Url: https://juplo.de/gitweb/?a=blobdiff_plain;f=src%2Ftest%2Fjava%2Fde%2Fjuplo%2Fkafka%2Fwordcount%2Fcounter%2FTestData.java;h=777537ba4d3411c9efc366aa5a569eb6ddc969c9;hb=44f1ad5dcd50851ef5d93b1be759481d5a38f63a;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..777537b 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,115 @@ package de.juplo.kafka.wordcount.counter; -import com.fasterxml.jackson.core.JsonProcessingException; -import com.fasterxml.jackson.databind.ObjectMapper; +import de.juplo.kafka.wordcount.splitter.TestInputWord; +import de.juplo.kafka.wordcount.top10.TestOutputWord; +import de.juplo.kafka.wordcount.top10.TestOutputWordCounter; +import org.apache.kafka.streams.KeyValue; import org.springframework.util.LinkedMultiValueMap; import org.springframework.util.MultiValueMap; -import java.util.List; -import java.util.function.BiConsumer; +import java.util.stream.Stream; import static org.assertj.core.api.Assertions.assertThat; class TestData { - 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"); - } + static final String PETER = "peter"; + static final String KLAUS = "klaus"; - static void assertExpectedResult(List receivedMessages, ObjectMapper mapper) + private static final KeyValue[] INPUT_MESSAGES = new KeyValue[] { - MultiValueMap received = new LinkedMultiValueMap<>(); + new KeyValue<>( + PETER, + TestInputWord.of(PETER, "Hallo")), + new KeyValue<>( + KLAUS, + TestInputWord.of(KLAUS, "Müsch")), + new KeyValue<>( + PETER, + TestInputWord.of(PETER, "Welt")), + new KeyValue<>( + KLAUS, + TestInputWord.of(KLAUS, "Müsch")), + new KeyValue<>( + KLAUS, + TestInputWord.of(KLAUS, "s")), + new KeyValue<>( + PETER, + TestInputWord.of(PETER, "Boäh")), + new KeyValue<>( + PETER, + TestInputWord.of(PETER, "Welt")), + new KeyValue<>( + PETER, + TestInputWord.of(PETER, "Boäh")), + new KeyValue<>( + KLAUS, + TestInputWord.of(KLAUS, "s")), + new KeyValue<>( + PETER, + TestInputWord.of(PETER, "Boäh")), + new KeyValue<>( + KLAUS, + TestInputWord.of(KLAUS, "s")), + }; - 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 Stream> getInputMessages() + { + return Stream.of(TestData.INPUT_MESSAGES); + } - 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 void assertExpectedMessages(MultiValueMap receivedMessages) + { + expectedMessages().forEach( + (word, counter) -> + assertThat(receivedMessages.get(word)) + .containsExactlyElementsOf(counter)); } - 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"); + private static final KeyValue[] EXPECTED_MESSAGES = new KeyValue[] + { + KeyValue.pair( + TestOutputWord.of(PETER, "Hallo"), + TestOutputWordCounter.of(PETER, "Hallo",1)), + KeyValue.pair( + TestOutputWord.of(KLAUS, "Müsch"), + TestOutputWordCounter.of(KLAUS, "Müsch",1)), + KeyValue.pair( + TestOutputWord.of(PETER, "Welt"), + TestOutputWordCounter.of(PETER, "Welt",1)), + KeyValue.pair( + TestOutputWord.of(KLAUS, "Müsch"), + TestOutputWordCounter.of(KLAUS, "Müsch",2)), + KeyValue.pair( + TestOutputWord.of(KLAUS, "s"), + TestOutputWordCounter.of(KLAUS, "s",1)), + KeyValue.pair( + TestOutputWord.of(PETER, "Boäh"), + TestOutputWordCounter.of(PETER, "Boäh",1)), + KeyValue.pair( + TestOutputWord.of(PETER, "Welt"), + TestOutputWordCounter.of(PETER, "Welt",2)), + KeyValue.pair( + TestOutputWord.of(PETER, "Boäh"), + TestOutputWordCounter.of(PETER, "Boäh",2)), + KeyValue.pair( + TestOutputWord.of(KLAUS, "s"), + TestOutputWordCounter.of(KLAUS, "s",2)), + KeyValue.pair( + TestOutputWord.of(PETER, "Boäh"), + TestOutputWordCounter.of(PETER, "Boäh",3)), + KeyValue.pair( + TestOutputWord.of(KLAUS, "s"), + TestOutputWordCounter.of(KLAUS, "s",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 MultiValueMap expectedMessages() + { + MultiValueMap expectedMessages = new LinkedMultiValueMap<>(); + Stream + .of(EXPECTED_MESSAGES) + .forEach(keyValue -> expectedMessages.add(keyValue.key, keyValue.value)); + return expectedMessages; + } }