diff --git a/app/src/main/java/ru/dragonestia/picker/config/TestPickersConfig.java b/app/src/main/java/ru/dragonestia/picker/config/TestPickersConfig.java deleted file mode 100644 index 2191821..0000000 --- a/app/src/main/java/ru/dragonestia/picker/config/TestPickersConfig.java +++ /dev/null @@ -1,64 +0,0 @@ -package ru.dragonestia.picker.config; - -import lombok.RequiredArgsConstructor; -import org.springframework.context.annotation.Bean; -import org.springframework.context.annotation.Configuration; -import org.springframework.context.annotation.Profile; -import ru.dragonestia.picker.model.Node; -import ru.dragonestia.picker.model.Room; -import ru.dragonestia.picker.model.User; -import ru.dragonestia.picker.model.type.PickingMode; -import ru.dragonestia.picker.model.type.SlotLimit; -import ru.dragonestia.picker.repository.NodeRepository; -import ru.dragonestia.picker.repository.RoomRepository; -import ru.dragonestia.picker.repository.UserRepository; - -import java.util.List; - -@Profile("test_pickers") -@Configuration -@RequiredArgsConstructor -public class TestPickersConfig { - - private final NodeRepository nodeRepository; - private final RoomRepository roomRepository; - private final UserRepository userRepository; - - @Bean - void createSequentialFillingNode() { - var node = new Node("seq", PickingMode.SEQUENTIAL_FILLING); - nodeRepository.create(node); - - fillNode(node); - } - - @Bean - void createRoundRobinNode() { - var node = new Node("round", PickingMode.ROUND_ROBIN); - nodeRepository.create(node); - - fillNode(node); - } - - @Bean - void createLeastPickerNode() { - var node = new Node("least", PickingMode.LEAST_PICKED); - nodeRepository.create(node); - - fillNode(node); - } - - private void fillNode(Node node) { - for (int i = 0, n = 5; i < n; i++) { - for (int j = 0; j < 3; j++) { - var room = Room.create("room-" + i + "-" + j, node, SlotLimit.of(n), ""); - roomRepository.create(room); - - for (int k = n - i - 1; k >= 0; k--) { - var user = new User("user-" + k); - userRepository.linkWithRoom(room, List.of(user), false); - } - } - } - } -} diff --git a/app/src/test/java/ru/dragonestia/picker/config/FillingNodesConfig.java b/app/src/test/java/ru/dragonestia/picker/config/FillingNodesConfig.java new file mode 100644 index 0000000..7f5271c --- /dev/null +++ b/app/src/test/java/ru/dragonestia/picker/config/FillingNodesConfig.java @@ -0,0 +1,114 @@ +package ru.dragonestia.picker.config; + +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.boot.test.context.TestConfiguration; +import org.springframework.context.annotation.Bean; +import ru.dragonestia.picker.model.Node; +import ru.dragonestia.picker.model.Room; +import ru.dragonestia.picker.model.User; +import ru.dragonestia.picker.model.type.PickingMode; +import ru.dragonestia.picker.model.type.SlotLimit; +import ru.dragonestia.picker.repository.NodeRepository; +import ru.dragonestia.picker.repository.RoomRepository; +import ru.dragonestia.picker.repository.UserRepository; + +import java.util.List; + +@TestConfiguration +public class FillingNodesConfig { + + /* All nodes have these rooms: + + Room 'room-0-0' has 5/5 users + Room 'room-0-1' has 5/5 users + Room 'room-0-2' has 5/5 users + Room 'room-1-0' has 4/5 users + Room 'room-1-1' has 4/5 users + Room 'room-1-2' has 4/5 users + Room 'room-2-0' has 3/5 users + Room 'room-2-1' has 3/5 users + Room 'room-2-2' has 3/5 users + Room 'room-3-0' has 2/5 users + Room 'room-3-1' has 2/5 users + Room 'room-3-2' has 2/5 users + Room 'room-4-0' has 1/5 users + Room 'room-4-1' has 1/5 users + Room 'room-4-2' has 1/5 users + */ + + @Autowired + private NodeRepository nodeRepository; + + @Autowired + private RoomRepository roomRepository; + + @Autowired + private UserRepository userRepository; + + private Node seqNode; + private Node roundNode; + private Node leastNode; + + @Bean + void createSequentialFillingNode() { + var node = new Node("seq", PickingMode.SEQUENTIAL_FILLING); + nodeRepository.create(node); + + fillNode(node); + + seqNode = node; + } + + @Bean + void createRoundRobinNode() { + var node = new Node("round", PickingMode.ROUND_ROBIN); + nodeRepository.create(node); + + fillNode(node); + + roundNode = node; + } + + @Bean + void createLeastPickerNode() { + var node = new Node("least", PickingMode.LEAST_PICKED); + nodeRepository.create(node); + + fillNode(node); + + leastNode = node; + } + + private void fillNode(Node node) { + for (int i = 0, n = 5; i < n; i++) { + for (int j = 0; j < 3; j++) { + var roomId = "room-" + i + "-" + j; + var room = Room.create(roomId, node, SlotLimit.of(n), ""); + roomRepository.create(room); + + var users = n - i; + for (int k = users - 1; k >= 0; k--) { + var user = new User("user-" + k); + userRepository.linkWithRoom(room, List.of(user), false); + } + + //System.out.printf("Room '%s' has %s/%s users%n", roomId, users, n); + } + } + } + + @Bean + Node seqNode() { + return seqNode; + } + + @Bean + Node roundNode() { + return roundNode; + } + + @Bean + Node leastNode() { + return leastNode; + } +}