1 package de.juplo.kafka.wordcount.query;
3 import com.fasterxml.jackson.databind.ObjectMapper;
4 import de.juplo.kafka.wordcount.top10.TestRanking;
5 import de.juplo.kafka.wordcount.users.TestUserData;
6 import lombok.extern.slf4j.Slf4j;
7 import org.apache.kafka.common.serialization.StringSerializer;
8 import org.apache.kafka.streams.TestInputTopic;
9 import org.apache.kafka.streams.Topology;
10 import org.apache.kafka.streams.TopologyTestDriver;
11 import org.apache.kafka.streams.state.KeyValueStore;
12 import org.apache.kafka.streams.state.Stores;
13 import org.junit.jupiter.api.AfterEach;
14 import org.junit.jupiter.api.BeforeEach;
15 import org.junit.jupiter.api.Test;
16 import org.springframework.kafka.support.serializer.JsonSerializer;
18 import static de.juplo.kafka.wordcount.query.QueryApplicationConfiguration.serializationConfig;
22 public class QueryStreamProcessorTopologyTest
24 public static final String TOP10_IN = "TOP10-IN";
25 public static final String USERS_IN = "USERS-IN";
26 public static final String STORE_NAME = "TOPOLOGY-TEST";
29 TopologyTestDriver testDriver;
30 TestInputTopic<String, TestRanking> top10In;
31 TestInputTopic<String, TestUserData> userIn;
37 Topology topology = QueryStreamProcessor.buildTopology(
40 Stores.inMemoryKeyValueStore(STORE_NAME),
43 testDriver = new TopologyTestDriver(topology, serializationConfig());
45 top10In = testDriver.createInputTopic(
47 new StringSerializer(),
48 new JsonSerializer());
50 userIn = testDriver.createInputTopic(
52 new StringSerializer(),
53 new JsonSerializer());
62 .forEach(kv -> userIn.pipeInput(kv.key, kv.value));
65 .forEach(kv -> top10In.pipeInput(kv.key, kv.value));
67 KeyValueStore<String, String> store = testDriver.getKeyValueStore(STORE_NAME);
68 TestData.assertExpectedState(store);
72 public void tearDown()