1 package de.juplo.kafka.chat.backend.persistence;
3 import com.fasterxml.jackson.databind.ObjectMapper;
4 import com.fasterxml.jackson.databind.SerializationFeature;
5 import com.fasterxml.jackson.datatype.jsr310.JavaTimeModule;
6 import de.juplo.kafka.chat.backend.domain.ChatHomeService;
7 import de.juplo.kafka.chat.backend.domain.ChatRoomFactory;
8 import de.juplo.kafka.chat.backend.persistence.inmemory.InMemoryChatRoomFactory;
9 import de.juplo.kafka.chat.backend.persistence.storage.files.FilesStorageStrategy;
10 import de.juplo.kafka.chat.backend.persistence.inmemory.InMemoryChatHomeService;
11 import de.juplo.kafka.chat.backend.persistence.inmemory.InMemoryChatRoomService;
12 import lombok.extern.slf4j.Slf4j;
13 import org.junit.jupiter.api.BeforeEach;
15 import java.io.IOException;
16 import java.nio.file.Files;
17 import java.nio.file.Path;
18 import java.nio.file.Paths;
19 import java.time.Clock;
23 public class InMemoryWithFilesStorageIT extends AbstractStorageStrategyIT
25 final static Path path = Paths.get("target","files");
28 final ObjectMapper mapper;
29 final FilesStorageStrategy storageStrategy;
32 public InMemoryWithFilesStorageIT()
34 clock = Clock.systemDefaultZone();
35 mapper = new ObjectMapper();
36 mapper.registerModule(new JavaTimeModule());
37 mapper.disable(SerializationFeature.WRITE_DATES_AS_TIMESTAMPS);
38 storageStrategy = new FilesStorageStrategy(
43 messageFlux -> new InMemoryChatRoomService(messageFlux),
49 protected StorageStrategy getStorageStrategy()
51 return storageStrategy;
55 protected StorageStrategyITConfig getConfig()
57 return new StorageStrategyITConfig()
59 InMemoryChatHomeService chatHomeService = new InMemoryChatHomeService(
62 getStorageStrategy().read());
64 InMemoryChatRoomFactory chatRoomFactory = new InMemoryChatRoomFactory(
70 public ChatHomeService getChatHomeService()
72 return chatHomeService;
76 public ChatRoomFactory getChatRoomFactory()
78 return chatRoomFactory;
84 void reset() throws Exception
86 if (Files.exists(path))
94 if (!file.equals(path))
96 log.debug("Deleting file {}", file);
100 catch (IOException e)
102 throw new RuntimeException(e);
105 log.debug("Deleting data-directory {}", path);