WIP:test: Simp...
authorKai Moritz <kai@juplo.de>
Wed, 23 Aug 2023 16:30:37 +0000 (18:30 +0200)
committerKai Moritz <kai@juplo.de>
Wed, 23 Aug 2023 16:30:37 +0000 (18:30 +0200)
src/main/java/de/juplo/kafka/chat/backend/persistence/inmemory/ShardedChatHome.java
src/test/java/de/juplo/kafka/chat/backend/domain/ChatHomeWithShardsTestBase.java
src/test/java/de/juplo/kafka/chat/backend/persistence/inmemory/ShardedChatHomeTest.java

index 4fa4d9b..ac7a980 100644 (file)
@@ -44,9 +44,9 @@ public class ShardedChatHome implements ChatHome
   public Mono<ChatRoom> getChatRoom(UUID id)
   {
     int shard = selectShard(id);
-    if (chatHomes[shard] == null)
-      throw new ShardNotOwnedException(shard);
-    return chatHomes[shard].getChatRoom(id);
+    return chatHomes[shard] == null
+        ? Mono.error(new ShardNotOwnedException(shard))
+        : chatHomes[shard].getChatRoom(id);
   }
 
   @Override
index a417e6f..587c754 100644 (file)
@@ -24,9 +24,9 @@ public class ChatHomeWithShardsTestBase extends ChatHomeTestBase
     // Then
     assertThat(mono).sendsError(e ->
     {
-      assertThat(e).isInstanceOf(UnknownChatroomException.class);
-      UnknownChatroomException unknownChatroomException = (UnknownChatroomException) e;
-      assertThat(unknownChatroomException.getChatroomId()).isEqualTo(chatRoomId);
+      assertThat(e).isInstanceOf(ShardNotOwnedException.class);
+      ShardNotOwnedException shardNotOwnedException = (ShardNotOwnedException) e;
+      assertThat(shardNotOwnedException.getShard()).isEqualTo(0);
     });
   }
 }
index ff82986..d36bf22 100644 (file)
@@ -19,52 +19,46 @@ public class ShardedChatHomeTest extends ChatHomeWithShardsTestBase
   {
     @Bean
     ShardedChatHome chatHome(
-        Integer numShards,
-        int[] ownedShards,
         InMemoryChatHomeService chatHomeService)
     {
-      SimpleChatHome[] chatHomes = new SimpleChatHome[numShards];
+      SimpleChatHome[] chatHomes = new SimpleChatHome[numShards()];
 
       IntStream
-          .of(ownedShards)
+          .of(ownedShards())
           .forEach(shard -> chatHomes[shard] = new SimpleChatHome(chatHomeService, shard));
 
-      ShardingStrategy strategy = new KafkaLikeShardingStrategy(numShards);
+      ShardingStrategy strategy = new KafkaLikeShardingStrategy(numShards());
 
       return new ShardedChatHome(chatHomes, strategy);
     }
 
     @Bean
     InMemoryChatHomeService chatHomeService(
-        Integer numShards,
-        int[] ownedShards,
         StorageStrategy storageStrategy)
     {
       return new InMemoryChatHomeService(
-          numShards,
-          ownedShards,
+          numShards(),
+          ownedShards(),
           storageStrategy.read());
     }
 
     @Bean
-    public FilesStorageStrategy storageStrategy(Integer numShards)
+    public FilesStorageStrategy storageStrategy()
     {
       return new FilesStorageStrategy(
           Paths.get("target", "test-classes", "data", "files"),
           Clock.systemDefaultZone(),
           8,
-          new KafkaLikeShardingStrategy(numShards),
+          new KafkaLikeShardingStrategy(numShards()),
           messageFlux -> new InMemoryChatRoomService(messageFlux),
           new ObjectMapper());
     }
 
-    @Bean
     Integer numShards()
     {
       return 10;
     }
 
-    @Bean
     int[] ownedShards()
     {
       return new int[] { 2 };