diff --git a/app/src/test/java/ru/dragonestia/picker/picker/RoundRobinTests.java b/app/src/test/java/ru/dragonestia/picker/picker/RoundRobinTests.java index 3734db8..ad1ec55 100644 --- a/app/src/test/java/ru/dragonestia/picker/picker/RoundRobinTests.java +++ b/app/src/test/java/ru/dragonestia/picker/picker/RoundRobinTests.java @@ -1,7 +1,9 @@ package ru.dragonestia.picker.picker; import org.junit.jupiter.api.Assertions; +import org.junit.jupiter.api.Order; import org.junit.jupiter.api.Test; +import org.junit.jupiter.api.Timeout; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Qualifier; import org.springframework.boot.test.context.SpringBootTest; @@ -12,8 +14,6 @@ import ru.dragonestia.picker.repository.RoomRepository; import ru.dragonestia.picker.repository.UserRepository; import ru.dragonestia.picker.util.UserFiller; -import java.time.Duration; - @SpringBootTest @Import({FillingNodesConfig.class, UserFiller.class}) public class RoundRobinTests { @@ -31,61 +31,71 @@ public class RoundRobinTests { @Autowired private Node node; + @Timeout(value = 1, threadMode = Timeout.ThreadMode.SEPARATE_THREAD) + @Order(1) @Test - void testPickingRoundRobin() { - { // first iteration. Take 2 users. expected take 'room-2-0' - var roomOpt = roomRepository.pickFree(node, userFiller.createRandomUsers(2)); - Assertions.assertTrue(roomOpt.isPresent()); + void testFirstPicking() { // Take 2 users. expected take 'room-2-0' + var roomOpt = roomRepository.pickFree(node, userFiller.createRandomUsers(2)); + Assertions.assertTrue(roomOpt.isPresent()); - var room = roomOpt.get(); - var slots = room.getSlots(); - var users = userRepository.usersOf(room); - Assertions.assertTrue(slots.isUnlimited() || slots.getSlots() >= users.size()); // check slots limitation + var room = roomOpt.get(); + var slots = room.getSlots(); + var users = userRepository.usersOf(room); + Assertions.assertTrue(slots.isUnlimited() || slots.getSlots() >= users.size()); // check slots limitation - Assertions.assertEquals("room-2-0", room.getId()); - } + Assertions.assertEquals("room-2-0", room.getId()); + } - { // second iteration. Take 2 users. expected take 'room-2-1' - var roomOpt = roomRepository.pickFree(node, userFiller.createRandomUsers(2)); - Assertions.assertTrue(roomOpt.isPresent()); + @Timeout(value = 1, threadMode = Timeout.ThreadMode.SEPARATE_THREAD) + @Order(2) + @Test + void testSecondPicking() { // Take 2 users. expected take 'room-2-1' + var roomOpt = roomRepository.pickFree(node, userFiller.createRandomUsers(2)); + Assertions.assertTrue(roomOpt.isPresent()); - var room = roomOpt.get(); - var slots = room.getSlots(); - var users = userRepository.usersOf(room); - Assertions.assertTrue(slots.isUnlimited() || slots.getSlots() >= users.size()); // check slots limitation + var room = roomOpt.get(); + var slots = room.getSlots(); + var users = userRepository.usersOf(room); + Assertions.assertTrue(slots.isUnlimited() || slots.getSlots() >= users.size()); // check slots limitation - Assertions.assertEquals("room-2-1", room.getId()); - } + Assertions.assertEquals("room-2-1", room.getId()); + } - { // third iteration. Take 1 user. expected take 'room-2-2' - var roomOpt = roomRepository.pickFree(node, userFiller.createRandomUsers(1)); - Assertions.assertTrue(roomOpt.isPresent()); + @Timeout(value = 1, threadMode = Timeout.ThreadMode.SEPARATE_THREAD) + @Order(3) + @Test + void testThirdPicking() { // Take 1 user. expected take 'room-2-2' + var roomOpt = roomRepository.pickFree(node, userFiller.createRandomUsers(1)); + Assertions.assertTrue(roomOpt.isPresent()); - var room = roomOpt.get(); - var slots = room.getSlots(); - var users = userRepository.usersOf(room); - Assertions.assertTrue(slots.isUnlimited() || slots.getSlots() >= users.size()); // check slots limitation + var room = roomOpt.get(); + var slots = room.getSlots(); + var users = userRepository.usersOf(room); + Assertions.assertTrue(slots.isUnlimited() || slots.getSlots() >= users.size()); // check slots limitation - Assertions.assertEquals("room-2-2", room.getId()); - } + Assertions.assertEquals("room-2-2", room.getId()); + } - { // fourth iteration. Take 4 users. expected take 'room-2-2' - var roomOpt = roomRepository.pickFree(node, userFiller.createRandomUsers(4)); - Assertions.assertTrue(roomOpt.isPresent()); + @Timeout(value = 1, threadMode = Timeout.ThreadMode.SEPARATE_THREAD) + @Order(4) + @Test + void testFourthPicking() { // Take 4 users. expected take 'room-2-2' + var roomOpt = roomRepository.pickFree(node, userFiller.createRandomUsers(4)); + Assertions.assertTrue(roomOpt.isPresent()); - var room = roomOpt.get(); - var slots = room.getSlots(); - var users = userRepository.usersOf(room); - Assertions.assertTrue(slots.isUnlimited() || slots.getSlots() >= users.size()); // check slots limitation + var room = roomOpt.get(); + var slots = room.getSlots(); + var users = userRepository.usersOf(room); + Assertions.assertTrue(slots.isUnlimited() || slots.getSlots() >= users.size()); // check slots limitation - Assertions.assertEquals("room-4-0", room.getId()); - } + Assertions.assertEquals("room-4-0", room.getId()); + } - { // fifth iteration. Take 9 users. expected none result - Assertions.assertTimeoutPreemptively(Duration.ofSeconds(1), () -> { - var roomOpt = roomRepository.pickFree(node, userFiller.createRandomUsers(9)); - Assertions.assertTrue(roomOpt.isEmpty()); - }); - } + @Timeout(value = 1, threadMode = Timeout.ThreadMode.SEPARATE_THREAD) + @Order(5) + @Test + void testNoOneRoomExpected() { // Take 9 users. expected none result + var roomOpt = roomRepository.pickFree(node, userFiller.createRandomUsers(9)); + Assertions.assertTrue(roomOpt.isEmpty()); } }