diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index c6316cee4ab091dc1b58de4e54ef8f9c73145f89..7fd92b797af61b2f26365ea6f47ba1a9084ea35f 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -29,6 +29,7 @@ build-metadata-db: test-backend-container: stage: test script: + - docker system prune -f - "./fda-container-service/rest-service/src/test/resources/integration-test.before" - "mvn -f fda-container-service/pom.xml clean test verify" - "./fda-container-service/rest-service/src/test/resources/integration-test.after" @@ -49,6 +50,7 @@ test-backend-container: test-backend-database: stage: test script: + - docker system prune -f - "./fda-database-service/rest-service/src/test/resources/integration-test.before" - "mvn -f fda-database-service/pom.xml clean test verify" - "./fda-database-service/rest-service/src/test/resources/integration-test.after" @@ -81,6 +83,7 @@ test-backend-gateway: test-backend-query: stage: test script: + - docker system prune -f - "./fda-query-service/rest-service/src/test/resources/integration-test.before" - "mvn -f fda-query-service/pom.xml clean test verify" - "./fda-query-service/rest-service/src/test/resources/integration-test.after" @@ -101,6 +104,7 @@ test-backend-query: test-backend-table: stage: test script: + - docker system prune -f - "./fda-table-service/rest-service/src/test/resources/integration-test.before" - "mvn -f fda-table-service/pom.xml clean test verify" - "./fda-table-service/rest-service/src/test/resources/integration-test.after" diff --git a/fda-container-service/rest-service/src/test/java/at/tuwien/service/ContainerServiceIntegrationTest.java b/fda-container-service/rest-service/src/test/java/at/tuwien/service/ContainerServiceIntegrationTest.java index 48e3d0a93e46cbb229f8dbda416c0af660007ce7..c9e578456e40a39ecfe8e48b7119a7387589d153 100644 --- a/fda-container-service/rest-service/src/test/java/at/tuwien/service/ContainerServiceIntegrationTest.java +++ b/fda-container-service/rest-service/src/test/java/at/tuwien/service/ContainerServiceIntegrationTest.java @@ -3,11 +3,10 @@ package at.tuwien.service; import at.tuwien.BaseUnitTest; import at.tuwien.api.container.ContainerCreateRequestDto; import at.tuwien.api.container.ContainerStateDto; -import at.tuwien.api.container.image.ImageCreateDto; import at.tuwien.entities.container.Container; -import at.tuwien.entities.container.image.ContainerImage; import at.tuwien.exception.ContainerNotFoundException; import at.tuwien.exception.ContainerNotRunningException; +import at.tuwien.exception.ContainerStillRunningException; import at.tuwien.exception.DockerClientException; import at.tuwien.repository.ContainerRepository; import at.tuwien.repository.ImageRepository; @@ -17,7 +16,6 @@ import com.github.dockerjava.api.exception.NotModifiedException; import com.github.dockerjava.api.model.*; import org.junit.jupiter.api.AfterEach; import org.junit.jupiter.api.BeforeEach; -import org.junit.jupiter.api.Disabled; import org.junit.jupiter.api.Test; import org.junit.jupiter.api.extension.ExtendWith; import org.springframework.beans.factory.annotation.Autowired; @@ -27,7 +25,6 @@ import org.springframework.test.context.junit.jupiter.SpringExtension; import javax.transaction.Transactional; import java.util.Arrays; -import java.util.List; import java.util.Map; import static org.junit.jupiter.api.Assertions.*; @@ -40,9 +37,6 @@ public class ContainerServiceIntegrationTest extends BaseUnitTest { @Autowired private ContainerService containerService; - @Autowired - private ImageService imageService; - @Autowired private HostConfig hostConfig; @@ -55,6 +49,9 @@ public class ContainerServiceIntegrationTest extends BaseUnitTest { @Autowired private DockerClient dockerClient; + private Long CONTAINER_1_ID, CONTAINER_2_ID; + private String CONTAINER_1_HASH; + @Transactional @BeforeEach public void beforeEach() { @@ -68,6 +65,7 @@ public class ContainerServiceIntegrationTest extends BaseUnitTest { .withEnableIpv6(false) .exec(); imageRepository.save(IMAGE_1); + imageRepository.save(IMAGE_2); /* create container */ final CreateContainerResponse request = dockerClient.createContainerCmd(IMAGE_1_REPOSITORY + ":" + IMAGE_1_TAG) .withEnv(IMAGE_1_ENVIRONMENT) @@ -79,8 +77,10 @@ public class ContainerServiceIntegrationTest extends BaseUnitTest { .exec(); /* start container */ dockerClient.startContainerCmd(request.getId()).exec(); - CONTAINER_1.setHash(request.getId()); - containerRepository.save(CONTAINER_1); + CONTAINER_1_HASH = request.getId(); + CONTAINER_1.setHash(CONTAINER_1_HASH); + CONTAINER_1_ID = containerRepository.save(CONTAINER_1).getId(); + CONTAINER_2_ID = containerRepository.save(CONTAINER_2).getId(); } @Transactional @@ -115,29 +115,29 @@ public class ContainerServiceIntegrationTest extends BaseUnitTest { public void findIpAddress_succeeds() throws ContainerNotRunningException { /* test */ - final Map<String, String> response = containerService.findIpAddresses(CONTAINER_1.getHash()); + final Map<String, String> response = containerService.findIpAddresses(CONTAINER_1_HASH); assertTrue(response.containsKey("fda-userdb")); assertEquals(CONTAINER_1_IP, response.get("fda-userdb")); } @Test public void findIpAddress_notRunning_fails() { - dockerClient.stopContainerCmd(CONTAINER_1.getHash()).exec(); + dockerClient.stopContainerCmd(CONTAINER_1_HASH).exec(); /* test */ assertThrows(ContainerNotRunningException.class, () -> { - containerService.findIpAddresses(CONTAINER_1.getHash()); + containerService.findIpAddresses(CONTAINER_1_HASH); }); } @Test public void findIpAddress_notFound_fails() { - dockerClient.stopContainerCmd(CONTAINER_1.getHash()).exec(); - dockerClient.removeContainerCmd(CONTAINER_1.getHash()).exec(); + dockerClient.stopContainerCmd(CONTAINER_1_HASH).exec(); + dockerClient.removeContainerCmd(CONTAINER_1_HASH).exec(); /* test */ assertThrows(ContainerNotFoundException.class, () -> { - containerService.findIpAddresses(CONTAINER_1.getHash()); + containerService.findIpAddresses(CONTAINER_1_HASH); }); } @@ -145,18 +145,18 @@ public class ContainerServiceIntegrationTest extends BaseUnitTest { public void getContainerState_succeeds() { /* test */ - final ContainerStateDto response = containerService.getContainerState(CONTAINER_1.getHash()); + final ContainerStateDto response = containerService.getContainerState(CONTAINER_1_HASH); assertEquals(ContainerStateDto.RUNNING, response); } @Test public void getContainerState_notFound_fails() { - dockerClient.stopContainerCmd(CONTAINER_1.getHash()).exec(); - dockerClient.removeContainerCmd(CONTAINER_1.getHash()).exec(); + dockerClient.stopContainerCmd(CONTAINER_1_HASH).exec(); + dockerClient.removeContainerCmd(CONTAINER_1_HASH).exec(); /* test */ assertThrows(DockerClientException.class, () -> { - containerService.getContainerState(CONTAINER_1.getHash()); + containerService.getContainerState(CONTAINER_1_HASH); }); } @@ -185,7 +185,7 @@ public class ContainerServiceIntegrationTest extends BaseUnitTest { @Test public void change_start_succeeds() { - dockerClient.stopContainerCmd(CONTAINER_1.getHash()).exec(); + dockerClient.stopContainerCmd(CONTAINER_1_HASH).exec(); /* test */ containerService.start(CONTAINER_1_ID); @@ -198,4 +198,48 @@ public class ContainerServiceIntegrationTest extends BaseUnitTest { containerService.stop(CONTAINER_1_ID); } + @Test + public void change_stop_notFoundDocker_fails() { + + /* test */ + assertThrows(DockerClientException.class, () -> { + containerService.stop(CONTAINER_2_ID); + }); + } + + @Test + public void remove_succeeds() { + dockerClient.stopContainerCmd(CONTAINER_1_HASH).exec(); + + /* test */ + containerService.remove(CONTAINER_1_ID); + } + + @Test + public void remove_notFound_fails() { + + /* test */ + assertThrows(ContainerNotFoundException.class, () -> { + containerService.remove(9999999L); + }); + } + + @Test + public void remove_docker_fails() { + + /* test */ + assertThrows(DockerClientException.class, () -> { + containerService.remove(CONTAINER_2_ID); + }); + } + + @Test + public void remove_stillRunning_fails() { + + /* test */ + assertThrows(ContainerStillRunningException.class, () -> { + containerService.remove(CONTAINER_1_ID); + }); + } + }