class TestContainerManager(TestCase):
    """
    Verifies functionality of ContainerManager by calling Docker APIs
    """
    IMAGE = "busybox"  # small sized Linux container

    @classmethod
    def setUpClass(cls):
        # Make sure we start with a clean slate
        docker_client = docker.from_env()
        TestContainerManager._remove_image(docker_client)

    def setUp(self):
        self.manager = ContainerManager()
        self.docker_client = docker.from_env()

    def tearDown(self):
        self._remove_image(self.docker_client)

    def test_pull_image(self):
        # Image should not exist
        self.assertFalse(self.manager.has_image(self.IMAGE))

        # Pull the image
        self.manager.pull_image(self.IMAGE)

        # Image should be available now
        self.assertTrue(self.manager.has_image(self.IMAGE))

    @classmethod
    def _remove_image(cls, docker_client):
        try:
            docker_client.images.remove(cls.IMAGE)
        except docker.errors.ImageNotFound:
            pass
Example #2
0
class TestContainerManager_has_image(TestCase):
    def setUp(self):
        self.image_name = "image name"

        self.mock_docker_client = Mock()
        self.mock_docker_client.images = Mock()
        self.mock_docker_client.images.get = Mock()

        self.manager = ContainerManager(docker_client=self.mock_docker_client)

    def test_must_find_an_image(self):

        self.assertTrue(self.manager.has_image(self.image_name))

    def test_must_not_find_image(self):

        self.mock_docker_client.images.get.side_effect = ImageNotFound("test")
        self.assertFalse(self.manager.has_image(self.image_name))
Example #3
0
class TestContainerManager_has_image(TestCase):

    def setUp(self):
        self.image_name = "image name"

        self.mock_docker_client = Mock()
        self.mock_docker_client.images = Mock()
        self.mock_docker_client.images.get = Mock()

        self.manager = ContainerManager(docker_client=self.mock_docker_client)

    def test_must_find_an_image(self):

        self.assertTrue(self.manager.has_image(self.image_name))

    def test_must_not_find_image(self):

        self.mock_docker_client.images.get.side_effect = ImageNotFound("test")
        self.assertFalse(self.manager.has_image(self.image_name))
    def setUpClass(cls):

        manager = ContainerManager()
        if not manager.has_image(cls.IMAGE_NAME):
            manager.pull_image(cls.IMAGE_NAME)
    def setUpClass(cls):

        manager = ContainerManager()
        if not manager.has_image(cls.IMAGE_NAME):
            manager.pull_image(cls.IMAGE_NAME)