094db395f1115ee7c3994acfab4d73349229881f
[demos/kafka/chat] / src / test / java / de / juplo / kafka / chat / backend / KafkaConfigurationIT.java
1 package de.juplo.kafka.chat.backend;
2
3 import de.juplo.kafka.chat.backend.domain.ShardingStrategy;
4 import org.junit.jupiter.api.BeforeAll;
5 import org.springframework.beans.factory.annotation.Autowired;
6 import org.springframework.boot.test.context.SpringBootTest;
7 import org.springframework.kafka.core.KafkaTemplate;
8 import org.springframework.kafka.test.context.EmbeddedKafka;
9
10 import java.util.UUID;
11
12 import static de.juplo.kafka.chat.backend.KafkaConfigurationIT.CHATROOMS_TOPIC;
13 import static de.juplo.kafka.chat.backend.KafkaConfigurationIT.MESSAGES_TOPIC;
14
15
16 @SpringBootTest(
17     webEnvironment = SpringBootTest.WebEnvironment.RANDOM_PORT,
18     properties = {
19         "chat.backend.services=kafka",
20         "chat.backend.kafka.client-id-PREFIX=TEST",
21         "chat.backend.kafka.bootstrap-servers=${spring.embedded.kafka.brokers}",
22         "spring.kafka.bootstrap-servers=${spring.embedded.kafka.brokers}",
23         "chat.backend.kafka.chatrooms-topic=" + CHATROOMS_TOPIC,
24         "chat.backend.kafka.messages-topic=" + MESSAGES_TOPIC,
25         "chat.backend.kafka.num-partitions=3" })
26 @EmbeddedKafka(topics = { CHATROOMS_TOPIC, MESSAGES_TOPIC }, partitions = 3)
27 class KafkaConfigurationIT extends AbstractConfigurationIT
28 {
29   final static String CHATROOMS_TOPIC = "TEST_CHAT_ROOMS";
30   final static String MESSAGES_TOPIC = "TEST_CHAT_MESSAGES";
31
32   @BeforeAll
33   public static void test(
34       @Autowired ShardingStrategy shardingStrategy,
35       @Autowired KafkaTemplate<String, String> messageTemplate,
36       @Autowired KafkaTemplate<Integer, String> chatRoomTemplate)
37   {
38     UUID chatRoomId = UUID.fromString("5c73531c-6fc4-426c-adcb-afc5c140a0f7");
39     int shard = shardingStrategy.selectShard(chatRoomId);
40     chatRoomTemplate.send(CHATROOMS_TOPIC, null,"{ \"id\": \"5c73531c-6fc4-426c-adcb-afc5c140a0f7\", \"shard\": " + shard + ", \"name\": \"FOO\" }");
41     messageTemplate.send(MESSAGES_TOPIC,"5c73531c-6fc4-426c-adcb-afc5c140a0f7","{ \"id\" : 1, \"user\" : \"peter\", \"text\" : \"Hallo, ich heiße Peter!\" }");
42     messageTemplate.send(MESSAGES_TOPIC,"5c73531c-6fc4-426c-adcb-afc5c140a0f7","{ \"id\" : 1, \"user\" : \"ute\", \"text\" : \"Ich bin Ute...\" }");
43     messageTemplate.send(MESSAGES_TOPIC,"5c73531c-6fc4-426c-adcb-afc5c140a0f7","{ \"id\" : 2, \"user\" : \"peter\", \"text\" : \"Willst du mit mir gehen?\" }");
44     messageTemplate.send(MESSAGES_TOPIC,"5c73531c-6fc4-426c-adcb-afc5c140a0f7","{ \"id\" : 1, \"user\" : \"klaus\", \"text\" : \"Ja? Nein? Vielleicht??\" }");
45   }
46 }