TEST-STORE:GREEN
[demos/kafka/wordcount] / src / test / java / de / juplo / kafka / wordcount / top10 / TestData.java
1 package de.juplo.kafka.wordcount.top10;
2
3 import org.apache.kafka.common.header.Header;
4 import org.apache.kafka.common.header.Headers;
5 import org.apache.kafka.streams.KeyValue;
6
7 import java.util.List;
8 import java.util.Map;
9 import java.util.Properties;
10 import java.util.function.BiConsumer;
11 import java.util.stream.Collectors;
12
13 import static org.assertj.core.api.Assertions.assertThat;
14
15
16 class TestData
17 {
18         static void writeInputData(BiConsumer<Key, Counter> consumer)
19         {
20                 consumer.accept(
21                                 Key.of("peter","Hallo"),
22                                 Counter.of("peter","Hallo",1));
23                 consumer.accept(
24                                 Key.of("klaus","Müsch"),
25                                 Counter.of("klaus","Müsch",1));
26                 consumer.accept(
27                                 Key.of("peter","Welt"),
28                                 Counter.of("peter","Welt",1));
29                 consumer.accept(
30                                 Key.of("klaus","Müsch"),
31                                 Counter.of("klaus","Müsch",2));
32                 consumer.accept(
33                                 Key.of("klaus","s"),
34                                 Counter.of("klaus","s",1));
35                 consumer.accept(
36                                 Key.of("peter","Boäh"),
37                                 Counter.of("peter","Boäh",1));
38                 consumer.accept(
39                                 Key.of("peter","Welt"),
40                                 Counter.of("peter","Welt",2));
41                 consumer.accept(
42                                 Key.of("peter","Boäh"),
43                                 Counter.of("peter","Boäh",2));
44                 consumer.accept(
45                                 Key.of("klaus","s"),
46                                 Counter.of("klaus","s",2));
47                 consumer.accept(
48                                 Key.of("peter","Boäh"),
49                                 Counter.of("peter","Boäh",3));
50                 consumer.accept(
51                                 Key.of("klaus","s"),
52                                 Counter.of("klaus","s",3));
53         }
54
55         static void assertExpectedResult(List<KeyValue<String, Ranking>> receivedMessages)
56         {
57                 assertThat(receivedMessages).hasSize(11);
58                 assertThat(receivedMessages).containsSubsequence(
59                                 expectedMessages[0],
60                                 expectedMessages[2],
61                                 expectedMessages[5],
62                                 expectedMessages[6],
63                                 expectedMessages[7]); // peter
64                 assertThat(receivedMessages).containsSubsequence(
65                                 expectedMessages[1],
66                                 expectedMessages[3],
67                                 expectedMessages[4],
68                                 expectedMessages[8],
69                                 expectedMessages[10]); // klaus
70         }
71
72         static KeyValue<String, Ranking>[] expectedMessages = new KeyValue[]
73         {
74                         KeyValue.pair( // 0
75                                         "peter",
76                                         Ranking.of(
77                                                         Entry.of("Hallo", 1l))),
78                         KeyValue.pair( // 1
79                                         "klaus",
80                                         Ranking.of(
81                                                         Entry.of("Müsch", 1l))),
82                         KeyValue.pair( // 2
83                                         "peter",
84                                         Ranking.of(
85                                                         Entry.of("Welt", 1l),
86                                                         Entry.of("Hallo", 1l))),
87                         KeyValue.pair( // 3
88                                         "klaus",
89                                         Ranking.of(
90                                                         Entry.of("Müsch", 2l))),
91                         KeyValue.pair( // 4
92                                         "klaus",
93                                         Ranking.of(
94                                                         Entry.of("Müsch", 2l),
95                                                         Entry.of("s", 1l))),
96                         KeyValue.pair( // 5
97                                         "peter",
98                                         Ranking.of(
99                                                         Entry.of("Boäh", 1l),
100                                                         Entry.of("Welt", 1l),
101                                                         Entry.of("Hallo", 1l))),
102                         KeyValue.pair( // 6
103                                         "peter",
104                                         Ranking.of(
105                                                         Entry.of("Welt", 2l),
106                                                         Entry.of("Boäh", 1l),
107                                                         Entry.of("Hallo", 1l))),
108                         KeyValue.pair( // 7
109                                         "peter",
110                                         Ranking.of(
111                                                         Entry.of("Boäh", 2l),
112                                                         Entry.of("Welt", 2l),
113                                                         Entry.of("Hallo", 1l))),
114                         KeyValue.pair( // 8
115                                         "klaus",
116                                         Ranking.of(
117                                                         Entry.of("s", 2l),
118                                                         Entry.of("Müsch", 2l))),
119                         KeyValue.pair( // 9
120                                         "peter",
121                                         Ranking.of(
122                                                         Entry.of("Boäh", 3l),
123                                                         Entry.of("Welt", 2l),
124                                                         Entry.of("Hallo", 1l))),
125                         KeyValue.pair( // 10
126                                         "klaus",
127                                         Ranking.of(
128                                                         Entry.of("s", 3l),
129                                                         Entry.of("Müsch", 2l))),
130         };
131
132         static Map<String, Object> convertToMap(Properties properties)
133         {
134                 return properties
135                                 .entrySet()
136                                 .stream()
137                                 .collect(
138                                                 Collectors.toMap(
139                                                                 entry -> (String)entry.getKey(),
140                                                                 entry -> entry.getValue()
141                                                 ));
142         }
143
144         static String parseHeader(Headers headers, String key)
145         {
146                 Header header = headers.lastHeader(key);
147                 if (header == null)
148                 {
149                         return key + "=null";
150                 }
151                 else
152                 {
153                         return key + "=" + new String(header.value());
154                 }
155         }
156 }