1 package de.juplo.kafka.chat.backend.implementation.inmemory;
3 import com.fasterxml.jackson.databind.ObjectMapper;
4 import de.juplo.kafka.chat.backend.domain.ChatHomeServiceWithShardsTest;
5 import de.juplo.kafka.chat.backend.implementation.ShardingStrategy;
6 import de.juplo.kafka.chat.backend.implementation.StorageStrategy;
7 import de.juplo.kafka.chat.backend.storage.files.FilesStorageStrategy;
8 import org.springframework.boot.test.context.TestConfiguration;
9 import org.springframework.context.annotation.Bean;
12 import java.nio.file.Paths;
13 import java.time.Clock;
14 import java.util.stream.IntStream;
16 public class ShardedChatHomeServiceTest extends ChatHomeServiceWithShardsTest
19 static class Configuration
22 ShardedChatHomeService chatHome(
23 StorageStrategy storageStrategy,
26 SimpleChatHomeService[] chatHomes = new SimpleChatHomeService[NUM_SHARDS];
30 .forEach(shard -> chatHomes[shard] = new SimpleChatHomeService(
36 ShardingStrategy strategy = new KafkaLikeShardingStrategy(NUM_SHARDS);
38 return new ShardedChatHomeService(
42 .mapToObj(shard -> "http://instance-0")
43 .map(uriString -> URI.create(uriString))
44 .toArray(size -> new URI[size]),
49 public FilesStorageStrategy storageStrategy(Clock clock)
51 return new FilesStorageStrategy(
52 Paths.get("target", "test-classes", "data", "files"),
53 new KafkaLikeShardingStrategy(NUM_SHARDS),
60 return Clock.systemDefaultZone();
65 return new int[] { OWNED_SHARD };