mirror of https://github.com/docker/docker-py.git
Re-added integration tests with hostconfig in start
This commit is contained in:
parent
12aad176b9
commit
2b5516afab
|
@ -171,9 +171,37 @@ class TestCreateContainerWithBinds(BaseTestCase):
|
||||||
host_config=create_host_config(binds=binds)
|
host_config=create_host_config(binds=binds)
|
||||||
)
|
)
|
||||||
container_id = container['Id']
|
container_id = container['Id']
|
||||||
self.client.start(
|
self.client.start(container_id)
|
||||||
container_id,
|
self.tmp_containers.append(container_id)
|
||||||
|
exitcode = self.client.wait(container_id)
|
||||||
|
self.assertEqual(exitcode, 0)
|
||||||
|
logs = self.client.logs(container_id)
|
||||||
|
|
||||||
|
os.unlink(shared_file)
|
||||||
|
self.assertIn(filename, logs)
|
||||||
|
|
||||||
|
|
||||||
|
class TestStartContainerWithBinds(BaseTestCase):
|
||||||
|
def runTest(self):
|
||||||
|
mount_dest = '/mnt'
|
||||||
|
mount_origin = tempfile.mkdtemp()
|
||||||
|
self.tmp_folders.append(mount_origin)
|
||||||
|
|
||||||
|
filename = 'shared.txt'
|
||||||
|
shared_file = os.path.join(mount_origin, filename)
|
||||||
|
binds = {
|
||||||
|
mount_origin: {
|
||||||
|
'bind': mount_dest,
|
||||||
|
'ro': False,
|
||||||
|
},
|
||||||
|
}
|
||||||
|
|
||||||
|
with open(shared_file, 'w'):
|
||||||
|
container = self.client.create_container(
|
||||||
|
'busybox', ['ls', mount_dest], volumes={mount_dest: {}}
|
||||||
)
|
)
|
||||||
|
container_id = container['Id']
|
||||||
|
self.client.start(container_id, binds=binds)
|
||||||
self.tmp_containers.append(container_id)
|
self.tmp_containers.append(container_id)
|
||||||
exitcode = self.client.wait(container_id)
|
exitcode = self.client.wait(container_id)
|
||||||
self.assertEqual(exitcode, 0)
|
self.assertEqual(exitcode, 0)
|
||||||
|
@ -229,7 +257,7 @@ class TestStartContainerWithDictInsteadOfId(BaseTestCase):
|
||||||
self.assertEqual(inspect['State']['ExitCode'], 0)
|
self.assertEqual(inspect['State']['ExitCode'], 0)
|
||||||
|
|
||||||
|
|
||||||
class TestStartContainerPrivileged(BaseTestCase):
|
class TestCreateContainerPrivileged(BaseTestCase):
|
||||||
def runTest(self):
|
def runTest(self):
|
||||||
res = self.client.create_container(
|
res = self.client.create_container(
|
||||||
'busybox', 'true', host_config=create_host_config(privileged=True)
|
'busybox', 'true', host_config=create_host_config(privileged=True)
|
||||||
|
@ -254,6 +282,29 @@ class TestStartContainerPrivileged(BaseTestCase):
|
||||||
self.assertEqual(inspect['Config']['Privileged'], True)
|
self.assertEqual(inspect['Config']['Privileged'], True)
|
||||||
|
|
||||||
|
|
||||||
|
class TestStartContainerPrivileged(BaseTestCase):
|
||||||
|
def runTest(self):
|
||||||
|
res = self.client.create_container('busybox', 'true')
|
||||||
|
self.assertIn('Id', res)
|
||||||
|
self.tmp_containers.append(res['Id'])
|
||||||
|
self.client.start(res['Id'], privileged=True)
|
||||||
|
inspect = self.client.inspect_container(res['Id'])
|
||||||
|
self.assertIn('Config', inspect)
|
||||||
|
self.assertIn('Id', inspect)
|
||||||
|
self.assertTrue(inspect['Id'].startswith(res['Id']))
|
||||||
|
self.assertIn('Image', inspect)
|
||||||
|
self.assertIn('State', inspect)
|
||||||
|
self.assertIn('Running', inspect['State'])
|
||||||
|
if not inspect['State']['Running']:
|
||||||
|
self.assertIn('ExitCode', inspect['State'])
|
||||||
|
self.assertEqual(inspect['State']['ExitCode'], 0)
|
||||||
|
# Since Nov 2013, the Privileged flag is no longer part of the
|
||||||
|
# container's config exposed via the API (safety concerns?).
|
||||||
|
#
|
||||||
|
if 'Privileged' in inspect['Config']:
|
||||||
|
self.assertEqual(inspect['Config']['Privileged'], True)
|
||||||
|
|
||||||
|
|
||||||
class TestWait(BaseTestCase):
|
class TestWait(BaseTestCase):
|
||||||
def runTest(self):
|
def runTest(self):
|
||||||
res = self.client.create_container('busybox', ['sleep', '3'])
|
res = self.client.create_container('busybox', ['sleep', '3'])
|
||||||
|
@ -491,6 +542,34 @@ class TestPort(BaseTestCase):
|
||||||
self.client.kill(id)
|
self.client.kill(id)
|
||||||
|
|
||||||
|
|
||||||
|
class TestStartWithPortBindings(BaseTestCase):
|
||||||
|
def runTest(self):
|
||||||
|
|
||||||
|
port_bindings = {
|
||||||
|
1111: ('127.0.0.1', '4567'),
|
||||||
|
2222: ('127.0.0.1', '4568')
|
||||||
|
}
|
||||||
|
|
||||||
|
container = self.client.create_container(
|
||||||
|
'busybox', ['sleep', '60'], ports=port_bindings.keys()
|
||||||
|
)
|
||||||
|
id = container['Id']
|
||||||
|
|
||||||
|
self.client.start(container, port_bindings=port_bindings)
|
||||||
|
|
||||||
|
# Call the port function on each biding and compare expected vs actual
|
||||||
|
for port in port_bindings:
|
||||||
|
actual_bindings = self.client.port(container, port)
|
||||||
|
port_binding = actual_bindings.pop()
|
||||||
|
|
||||||
|
ip, host_port = port_binding['HostIp'], port_binding['HostPort']
|
||||||
|
|
||||||
|
self.assertEqual(ip, port_bindings[port][0])
|
||||||
|
self.assertEqual(host_port, port_bindings[port][1])
|
||||||
|
|
||||||
|
self.client.kill(id)
|
||||||
|
|
||||||
|
|
||||||
class TestRestart(BaseTestCase):
|
class TestRestart(BaseTestCase):
|
||||||
def runTest(self):
|
def runTest(self):
|
||||||
container = self.client.create_container('busybox', ['sleep', '9999'])
|
container = self.client.create_container('busybox', ['sleep', '9999'])
|
||||||
|
@ -640,6 +719,86 @@ class TestCreateContainerWithLinks(BaseTestCase):
|
||||||
self.assertIn('{0}_ENV_FOO=1'.format(link_env_prefix2), logs)
|
self.assertIn('{0}_ENV_FOO=1'.format(link_env_prefix2), logs)
|
||||||
|
|
||||||
|
|
||||||
|
class TestStartContainerWithVolumesFrom(BaseTestCase):
|
||||||
|
def runTest(self):
|
||||||
|
vol_names = ['foobar_vol0', 'foobar_vol1']
|
||||||
|
|
||||||
|
res0 = self.client.create_container(
|
||||||
|
'busybox', 'true',
|
||||||
|
name=vol_names[0])
|
||||||
|
container1_id = res0['Id']
|
||||||
|
self.tmp_containers.append(container1_id)
|
||||||
|
self.client.start(container1_id)
|
||||||
|
|
||||||
|
res1 = self.client.create_container(
|
||||||
|
'busybox', 'true',
|
||||||
|
name=vol_names[1])
|
||||||
|
container2_id = res1['Id']
|
||||||
|
self.tmp_containers.append(container2_id)
|
||||||
|
self.client.start(container2_id)
|
||||||
|
with self.assertRaises(docker.errors.DockerException):
|
||||||
|
res2 = self.client.create_container(
|
||||||
|
'busybox', 'cat',
|
||||||
|
detach=True, stdin_open=True,
|
||||||
|
volumes_from=vol_names)
|
||||||
|
res2 = self.client.create_container(
|
||||||
|
'busybox', 'cat',
|
||||||
|
detach=True, stdin_open=True)
|
||||||
|
container3_id = res2['Id']
|
||||||
|
self.tmp_containers.append(container3_id)
|
||||||
|
self.client.start(container3_id, volumes_from=vol_names)
|
||||||
|
|
||||||
|
info = self.client.inspect_container(res2['Id'])
|
||||||
|
self.assertItemsEqual(info['HostConfig']['VolumesFrom'], vol_names)
|
||||||
|
|
||||||
|
|
||||||
|
class TestStartContainerWithLinks(BaseTestCase):
|
||||||
|
def runTest(self):
|
||||||
|
res0 = self.client.create_container(
|
||||||
|
'busybox', 'cat',
|
||||||
|
detach=True, stdin_open=True,
|
||||||
|
environment={'FOO': '1'})
|
||||||
|
|
||||||
|
container1_id = res0['Id']
|
||||||
|
self.tmp_containers.append(container1_id)
|
||||||
|
|
||||||
|
self.client.start(container1_id)
|
||||||
|
|
||||||
|
res1 = self.client.create_container(
|
||||||
|
'busybox', 'cat',
|
||||||
|
detach=True, stdin_open=True,
|
||||||
|
environment={'FOO': '1'})
|
||||||
|
|
||||||
|
container2_id = res1['Id']
|
||||||
|
self.tmp_containers.append(container2_id)
|
||||||
|
|
||||||
|
self.client.start(container2_id)
|
||||||
|
|
||||||
|
# we don't want the first /
|
||||||
|
link_path1 = self.client.inspect_container(container1_id)['Name'][1:]
|
||||||
|
link_alias1 = 'mylink1'
|
||||||
|
link_env_prefix1 = link_alias1.upper()
|
||||||
|
|
||||||
|
link_path2 = self.client.inspect_container(container2_id)['Name'][1:]
|
||||||
|
link_alias2 = 'mylink2'
|
||||||
|
link_env_prefix2 = link_alias2.upper()
|
||||||
|
|
||||||
|
res2 = self.client.create_container('busybox', 'env')
|
||||||
|
container3_id = res2['Id']
|
||||||
|
self.tmp_containers.append(container3_id)
|
||||||
|
self.client.start(
|
||||||
|
container3_id,
|
||||||
|
links={link_path1: link_alias1, link_path2: link_alias2}
|
||||||
|
)
|
||||||
|
self.assertEqual(self.client.wait(container3_id), 0)
|
||||||
|
|
||||||
|
logs = self.client.logs(container3_id)
|
||||||
|
self.assertIn('{0}_NAME='.format(link_env_prefix1), logs)
|
||||||
|
self.assertIn('{0}_ENV_FOO=1'.format(link_env_prefix1), logs)
|
||||||
|
self.assertIn('{0}_NAME='.format(link_env_prefix2), logs)
|
||||||
|
self.assertIn('{0}_ENV_FOO=1'.format(link_env_prefix2), logs)
|
||||||
|
|
||||||
|
|
||||||
class TestRestartingContainer(BaseTestCase):
|
class TestRestartingContainer(BaseTestCase):
|
||||||
def runTest(self):
|
def runTest(self):
|
||||||
container = self.client.create_container(
|
container = self.client.create_container(
|
||||||
|
|
Loading…
Reference in New Issue