X-Git-Url: https://juplo.de/gitweb/?a=blobdiff_plain;f=src%2Ftest%2Fjava%2Fde%2Fjuplo%2Fkafka%2Fchat%2Fbackend%2Fimplementation%2Finmemory%2FShardedChatHomeServiceTest.java;h=95501ad97213af394f5b1b86a007a4f757efa6ad;hb=64ede95835a496e84857c38213dbf8ea451878e0;hp=8ed18448c27573cdd3e2fbb7dc78cb2d64b55c3e;hpb=fe129c06f3a518bfadc1176d5d723c36ab5bd463;p=demos%2Fkafka%2Fchat diff --git a/src/test/java/de/juplo/kafka/chat/backend/implementation/inmemory/ShardedChatHomeServiceTest.java b/src/test/java/de/juplo/kafka/chat/backend/implementation/inmemory/ShardedChatHomeServiceTest.java index 8ed18448..95501ad9 100644 --- a/src/test/java/de/juplo/kafka/chat/backend/implementation/inmemory/ShardedChatHomeServiceTest.java +++ b/src/test/java/de/juplo/kafka/chat/backend/implementation/inmemory/ShardedChatHomeServiceTest.java @@ -1,85 +1,18 @@ package de.juplo.kafka.chat.backend.implementation.inmemory; -import com.fasterxml.jackson.databind.ObjectMapper; -import com.fasterxml.jackson.datatype.jsr310.JavaTimeModule; import de.juplo.kafka.chat.backend.domain.ChatHomeServiceWithShardsTest; -import de.juplo.kafka.chat.backend.implementation.ShardingStrategy; -import de.juplo.kafka.chat.backend.implementation.StorageStrategy; -import de.juplo.kafka.chat.backend.storage.files.FilesStorageStrategy; -import org.springframework.boot.test.context.TestConfiguration; -import org.springframework.context.annotation.Bean; +import org.springframework.test.context.TestPropertySource; -import java.net.URI; -import java.nio.file.Paths; -import java.time.Clock; -import java.util.stream.IntStream; +import static de.juplo.kafka.chat.backend.domain.ChatHomeServiceWithShardsTest.NUM_SHARDS; +import static de.juplo.kafka.chat.backend.domain.ChatHomeServiceWithShardsTest.OWNED_SHARD; + +@TestPropertySource(properties = { + "chat.backend.inmemory.sharding-strategy=kafkalike", + "chat.backend.inmemory.num-shards=" + NUM_SHARDS, + "chat.backend.inmemory.owned-shards=" + OWNED_SHARD, + "chat.backend.inmemory.storage-strategy=files", + "chat.backend.inmemory.storage-directory=target/test-classes/data/files" }) public class ShardedChatHomeServiceTest extends ChatHomeServiceWithShardsTest { - @TestConfiguration - static class Configuration - { - @Bean - ShardedChatHomeService chatHome( - StorageStrategy storageStrategy, - Clock clock) - { - SimpleChatHomeService[] chatHomes = new SimpleChatHomeService[NUM_SHARDS]; - - IntStream - .of(ownedShards()) - .forEach(shard -> chatHomes[shard] = new SimpleChatHomeService( - shard, - storageStrategy, - clock, - bufferSize())); - - ShardingStrategy strategy = new KafkaLikeShardingStrategy(NUM_SHARDS); - - return new ShardedChatHomeService( - "http://instance-0", - chatHomes, - IntStream - .range(0, NUM_SHARDS) - .mapToObj(shard -> "http://instance-0") - .map(uriString -> URI.create(uriString)) - .toArray(size -> new URI[size]), - strategy); - } - - @Bean - FilesStorageStrategy storageStrategy( - Clock clock, - ObjectMapper objectMapper) - { - return new FilesStorageStrategy( - Paths.get("target", "test-classes", "data", "files"), - new KafkaLikeShardingStrategy(NUM_SHARDS), - objectMapper); - } - - @Bean - ObjectMapper objectMapper() - { - ObjectMapper objectMapper = new ObjectMapper(); - objectMapper.registerModule(new JavaTimeModule()); - return objectMapper; - } - - @Bean - Clock clock() - { - return Clock.systemDefaultZone(); - } - - int[] ownedShards() - { - return new int[] { OWNED_SHARD }; - } - - int bufferSize() - { - return 8; - } - } }