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)
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)
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))
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)
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)
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)
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)
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)
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)