Esempio n. 1
0
 def test_process_source(self, mock_get, mock_client, mock_rmtree,
                         mock_copyfile, mock_utime):
     for source in [{
             'source': 'http://fake/source1',
             'type': 'url',
             'name': 'fake-image-base1',
             'reference': 'http://fake/reference1'
     }, {
             'source': 'http://fake/source2',
             'type': 'git',
             'name': 'fake-image-base2',
             'reference': 'http://fake/reference2'
     }, {
             'source': 'http://fake/source3',
             'type': 'local',
             'name': 'fake-image-base3',
             'reference': 'http://fake/reference3'
     }, {
             'source': 'http://fake/source4',
             'type': None,
             'name': 'fake-image-base4',
             'reference': 'http://fake/reference4'
     }]:
         self.image.source = source
         push_queue = mock.Mock()
         builder = build.BuildTask(self.conf, self.image, push_queue)
         get_result = builder.process_source(self.image, self.image.source)
         self.assertEqual(self.image.status, build.STATUS_ERROR)
         self.assertFalse(builder.success)
         if source['type'] != 'local':
             self.assertIsNone(get_result)
         else:
             self.assertIsNotNone(get_result)
Esempio n. 2
0
    def test_build_image(self, mock_client):
        push_queue = mock.Mock()
        builder = build.BuildTask(self.conf, self.image, push_queue)
        builder.run()

        mock_client().build.assert_called_once_with(
            path=self.image.path, tag=self.image.canonical_name,
            nocache=False, rm=True, pull=True, forcerm=True,
            buildargs=None)

        self.assertTrue(builder.success)
Esempio n. 3
0
 def test_followups_docker_image(self, mock_client):
     self.imageChild.source = {
         'source': 'http://fake/source',
         'type': 'url',
         'name': 'fake-image-base'
     }
     self.imageChild.children.append(FAKE_IMAGE_CHILD_UNMATCHED)
     push_queue = mock.Mock()
     builder = build.BuildTask(self.conf, self.imageChild, push_queue)
     builder.success = True
     self.conf.push = FAKE_IMAGE_CHILD_UNMATCHED
     get_result = builder.followups
     self.assertEqual(1, len(get_result))
Esempio n. 4
0
    def test_build_arg_from_env(self, mock_client):
        push_queue = mock.Mock()
        build_args = {
            'http_proxy': 'http://FROM_ENV:8080',
        }
        builder = build.BuildTask(self.conf, self.image, push_queue)
        builder.run()

        mock_client().build.assert_called_once_with(
            path=self.image.path, tag=self.image.canonical_name,
            nocache=False, rm=True, pull=True, forcerm=True,
            buildargs=build_args)

        self.assertTrue(builder.success)
Esempio n. 5
0
    def test_build_image_with_network_mode(self, mock_client):
        self.dc = mock_client
        push_queue = mock.Mock()
        self.conf.set_override('network_mode', 'host')

        builder = build.BuildTask(self.conf, self.image, push_queue)
        builder.run()

        mock_client().build.assert_called_once_with(
            path=self.image.path, tag=self.image.canonical_name, decode=True,
            network_mode='host', nocache=False, rm=True, pull=True,
            forcerm=True, buildargs=None)

        self.assertTrue(builder.success)
Esempio n. 6
0
    def test_build_image_with_build_arg(self, mock_client):
        build_args = {
            'HTTP_PROXY': 'http://localhost:8080',
            'NO_PROXY': '127.0.0.1'
        }
        self.conf.set_override('build_args', build_args)
        push_queue = mock.Mock()
        builder = build.BuildTask(self.conf, self.image, push_queue)
        builder.run()

        mock_client().build.assert_called_once_with(
            path=self.image.path, tag=self.image.canonical_name,
            nocache=False, rm=True, pull=True, forcerm=True,
            buildargs=build_args)

        self.assertTrue(builder.success)
Esempio n. 7
0
    def test_requests_get_timeout(self, mock_get, mock_client):
        self.image.source = {
            'source': 'http://fake/source',
            'type': 'url',
            'name': 'fake-image-base'
        }
        push_queue = mock.Mock()
        builder = build.BuildTask(self.conf, self.image, push_queue)
        mock_get.side_effect = requests.exceptions.Timeout
        get_result = builder.process_source(self.image, self.image.source)

        self.assertIsNone(get_result)
        self.assertEqual(self.image.status, build.STATUS_ERROR)
        mock_get.assert_called_once_with(self.image.source['source'],
                                         timeout=120)

        self.assertFalse(builder.success)
Esempio n. 8
0
    def test_build_arg_precedence(self, mock_client):
        self.dc = mock_client
        build_args = {
            'http_proxy': 'http://localhost:8080',
        }
        self.conf.set_override('build_args', build_args)

        push_queue = mock.Mock()
        builder = build.BuildTask(self.conf, self.image, push_queue)
        builder.run()

        mock_client().build.assert_called_once_with(
            path=self.image.path, tag=self.image.canonical_name, decode=True,
            network_mode=None, nocache=False, rm=True, pull=True, forcerm=True,
            buildargs=build_args)

        self.assertTrue(builder.success)
Esempio n. 9
0
    def test_process_git_source_existing_dir(self, mock_rmtree, mock_utime,
                                             mock_path_exists):
        source = {'source': 'http://fake/source1', 'type': 'git',
                  'name': 'fake-image1',
                  'reference': 'fake/reference1'}

        self.image.source = source
        self.image.path = "fake_image_path"
        mock_path_exists.return_value = True
        push_queue = mock.Mock()
        builder = build.BuildTask(self.conf, self.image, push_queue)
        get_result = builder.process_source(self.image, self.image.source)

        mock_rmtree.assert_called_with(
            "fake_image_path/fake-image1-archive-fake-reference1")
        self.assertEqual(self.image.status, build.STATUS_ERROR)
        self.assertFalse(builder.success)
        self.assertIsNone(get_result)