def test_name_without_project(self): container = Container.from_ps(None, { "Id":"abc", "Image":"busybox:latest", "Command":"sleep 300", "Names":["/figtest_db_1"] }, has_been_inspected=True) self.assertEqual(container.name_without_project, "db_1")
def test_name(self): container = Container.from_ps(None, { "Id": "abc", "Image": "ubuntu:12.04", "Command": "sleep 300", "Names": ["/figtest_db_1"] }, has_been_inspected=True) self.assertEqual(container.name, "figtest_db_1")
def test_human_readable_ports_public_and_private(self): self.container_dict['NetworkSettings']['Ports'].update({ "45454/tcp": [ { "HostIp": "0.0.0.0", "HostPort": "49197" } ], "45453/tcp": [], }) container = Container(None, self.container_dict, has_been_inspected=True) expected = "45453/tcp, 0.0.0.0:49197->45454/tcp" self.assertEqual(container.human_readable_ports, expected)
def test_create_container_with_volumes_from(self): volume_service = self.create_service('data') volume_container_1 = volume_service.create_container() volume_container_2 = Container.create(self.client, image='busybox:latest', command=["/bin/sleep", "300"]) host_service = self.create_service('host', volumes_from=[volume_service, volume_container_2]) host_container = host_service.create_container() host_service.start_container(host_container) self.assertIn(volume_container_1.id, host_container.inspect()['HostConfig']['VolumesFrom']) self.assertIn(volume_container_2.id, host_container.inspect()['HostConfig']['VolumesFrom'])
def test_from_ps(self): container = Container.from_ps(None, self.container_dict, has_been_inspected=True) self.assertEqual(container.dictionary, { "Id": "abc", "Image":"busybox:latest", "Name": "/figtest_db_1", })
def test_name_without_project(self): container = Container.from_ps(None, { "Id": "abc", "Image": "busybox:latest", "Command": "sleep 300", "Names": ["/figtest_db_1"] }, has_been_inspected=True) self.assertEqual(container.name_without_project, "db_1")
def test_get_local_port(self): self.container_dict['NetworkSettings']['Ports'].update({ "45454/tcp": [ { "HostIp": "0.0.0.0", "HostPort": "49197" } ], }) container = Container(None, self.container_dict, has_been_inspected=True) self.assertEqual( container.get_local_port(45454, protocol='tcp'), '0.0.0.0:49197')
def test_inspect_if_not_inspected(self): mock_client = mock.create_autospec(docker.Client) container = Container(mock_client, dict(Id="the_id")) container.inspect_if_not_inspected() mock_client.inspect_container.assert_called_once_with("the_id") self.assertEqual(container.dictionary, mock_client.inspect_container.return_value) self.assertTrue(container.has_been_inspected) container.inspect_if_not_inspected() self.assertEqual(mock_client.inspect_container.call_count, 1)
def test_number(self): container = Container.from_ps(None, { "Id":"abc", "Image":"busybox:latest", "Command":"sleep 300", "Created":1387384730, "Status":"Up 8 seconds", "Ports":None, "SizeRw":0, "SizeRootFs":0, "Names":["/figtest_db_1"] }, has_been_inspected=True) self.assertEqual(container.number, 1)
def test_create_container_with_volumes_from(self): volume_service = self.create_service('data') volume_container_1 = volume_service.create_container() volume_container_2 = Container.create(self.client, image='busybox:latest', command=["/bin/sleep", "300"]) host_service = self.create_service( 'host', volumes_from=[volume_service, volume_container_2]) host_container = host_service.create_container() host_service.start_container(host_container) self.assertIn(volume_container_1.id, host_container.inspect()['HostConfig']['VolumesFrom']) self.assertIn(volume_container_2.id, host_container.inspect()['HostConfig']['VolumesFrom'])
def test_number(self): container = Container.from_ps(self.client, { "Id": "abc", "Image": "ubuntu:12.04", "Command": "sleep 300", "Created": 1387384730, "Status": "Up 8 seconds", "Ports": None, "SizeRw": 0, "SizeRootFs": 0, "Names": ["/db_1"] }, has_been_inspected=True) self.assertEqual(container.number, 1)
def test_environment(self): container = Container(None, { 'Id': 'abc', 'Config': { 'Env': [ 'FOO=BAR', 'BAZ=DOGE', ] } }, has_been_inspected=True) self.assertEqual(container.environment, { 'FOO': 'BAR', 'BAZ': 'DOGE', })
def get_config(self): tmp_container = Container.create(self.client, image=self.image_name, command='true') try: res = self.client.copy(tmp_container.name, '/karakuri.yml') except APIError: work_dir = tmp_container.inspect()['Config']['WorkingDir'] res = self.client.copy(tmp_container.name, '{0}/karakuri.yml'.format(work_dir)) tmp_container.remove() io = BytesIO() io.write(res.data) io.seek(0) tar = tarfile.open(mode='r:', fileobj=io) config_str = tar.extractfile('karakuri.yml').read() config_str = Template(config_str).substitute(TAG=self.tag) return yaml.load(config_str)
def test_get(self): container = Container(None, { "Status": "Up 8 seconds", "HostConfig": { "VolumesFrom": [ "volume_id", ] }, }, has_been_inspected=True) self.assertEqual(container.get('Status'), "Up 8 seconds") self.assertEqual(container.get('HostConfig.VolumesFrom'), [ "volume_id", ]) self.assertEqual(container.get('Foo.Bar.DoesNotExist'), None)
def test_from_ps(self): container = Container.from_ps(self.client, { "Id":"abc", "Image":"ubuntu:12.04", "Command":"sleep 300", "Created":1387384730, "Status":"Up 8 seconds", "Ports":None, "SizeRw":0, "SizeRootFs":0, "Names":["/db_1"] }, has_been_inspected=True) self.assertEqual(container.dictionary, { "ID": "abc", "Image":"ubuntu:12.04", "Name": "/db_1", })
def test_from_ps(self): container = Container.from_ps(None, { "Id": "abc", "Image": "busybox:latest", "Command": "sleep 300", "Created": 1387384730, "Status": "Up 8 seconds", "Ports": None, "SizeRw": 0, "SizeRootFs": 0, "Names": ["/figtest_db_1"] }, has_been_inspected=True) self.assertEqual(container.dictionary, { "Id": "abc", "Image": "busybox:latest", "Name": "/figtest_db_1", })
def test_volumes_from_container(self): data_container = Container.create( self.client, image='busybox:latest', volumes=['/var/data'], name='figtest_data_container', ) project = Project.from_config( name='figtest', config={ 'db': { 'image': 'busybox:latest', 'volumes_from': ['figtest_data_container'], }, }, client=self.client, ) db = project.get_service('db') self.assertEqual(db.volumes_from, [data_container])
def test_number(self): container = Container.from_ps(None, self.container_dict, has_been_inspected=True) self.assertEqual(container.number, 1)
def test_name(self): container = Container.from_ps(None, self.container_dict, has_been_inspected=True) self.assertEqual(container.name, "figtest_db_1")
def test_name_without_project(self): container = Container.from_ps(None, self.container_dict, has_been_inspected=True) self.assertEqual(container.name_without_project, "db_1")
def test_human_readable_ports_none(self): container = Container(None, self.container_dict, has_been_inspected=True) self.assertEqual(container.human_readable_ports, '')