diff options
author | Aanand Prasad <aanand.prasad@gmail.com> | 2016-01-20 15:54:37 +0000 |
---|---|---|
committer | Aanand Prasad <aanand.prasad@gmail.com> | 2016-01-20 17:47:45 +0000 |
commit | 01a754a7f7fa335672eeea57998392af9168b9f2 (patch) | |
tree | f50ffcc32986acefaa5ec6d5b59ff4db5c566815 /tests | |
parent | 656e6cffb6cfc5c8b701334c4ca9cebdbb086f2d (diff) | |
download | docker-py-01a754a7f7fa335672eeea57998392af9168b9f2.tar.gz |
Support links when creating containers or connecting to networks
Signed-off-by: Aanand Prasad <aanand.prasad@gmail.com>
Diffstat (limited to 'tests')
-rw-r--r-- | tests/helpers.py | 15 | ||||
-rw-r--r-- | tests/integration/network_test.py | 49 | ||||
-rw-r--r-- | tests/unit/network_test.py | 2 |
3 files changed, 66 insertions, 0 deletions
diff --git a/tests/helpers.py b/tests/helpers.py index eca5035..21036ac 100644 --- a/tests/helpers.py +++ b/tests/helpers.py @@ -168,3 +168,18 @@ class BaseTestCase(unittest.TestCase): .format(exitcode, output)) return container + + def create_and_start(self, image='busybox', command='top', **kwargs): + container = self.client.create_container( + image=image, command=command, **kwargs) + self.tmp_containers.append(container) + self.client.start(container) + return container + + def execute(self, container, cmd, exit_code=0, **kwargs): + exc = self.client.exec_create(container, cmd, **kwargs) + output = self.client.exec_start(exc) + actual_exit_code = self.client.exec_inspect(exc)['ExitCode'] + msg = "Expected `{}` to exit with code {} but returned {}:\n{}".format( + " ".join(cmd), exit_code, actual_exit_code, output) + assert actual_exit_code == exit_code, msg diff --git a/tests/integration/network_test.py b/tests/integration/network_test.py index a6ec089..51cc53a 100644 --- a/tests/integration/network_test.py +++ b/tests/integration/network_test.py @@ -180,3 +180,52 @@ class TestNetworks(helpers.BaseTestCase): self.assertEqual( container_data['NetworkSettings']['Networks'][net_name]['Aliases'], ['foo', 'bar']) + + @requires_api_version('1.22') + def test_create_with_links(self): + net_name, net_id = self.create_network() + + container = self.create_and_start( + host_config=self.client.create_host_config(network_mode=net_name), + networking_config=self.client.create_networking_config({ + net_name: self.client.create_endpoint_config( + links=[('docker-py-test-upstream', 'bar')], + ), + }), + ) + + container_data = self.client.inspect_container(container) + self.assertEqual( + container_data['NetworkSettings']['Networks'][net_name]['Links'], + ['docker-py-test-upstream:bar']) + + self.create_and_start( + name='docker-py-test-upstream', + host_config=self.client.create_host_config(network_mode=net_name), + ) + + self.execute(container, ['nslookup', 'bar']) + + @requires_api_version('1.22') + def test_connect_with_links(self): + net_name, net_id = self.create_network() + + container = self.create_and_start( + host_config=self.client.create_host_config(network_mode=net_name)) + + self.client.disconnect_container_from_network(container, net_name) + self.client.connect_container_to_network( + container, net_name, + links=[('docker-py-test-upstream', 'bar')]) + + container_data = self.client.inspect_container(container) + self.assertEqual( + container_data['NetworkSettings']['Networks'][net_name]['Links'], + ['docker-py-test-upstream:bar']) + + self.create_and_start( + name='docker-py-test-upstream', + host_config=self.client.create_host_config(network_mode=net_name), + ) + + self.execute(container, ['nslookup', 'bar']) diff --git a/tests/unit/network_test.py b/tests/unit/network_test.py index 492bcc7..5bba9db 100644 --- a/tests/unit/network_test.py +++ b/tests/unit/network_test.py @@ -150,6 +150,7 @@ class NetworkTest(DockerClientTest): {'Id': container_id}, network_id, aliases=['foo', 'bar'], + links=[('baz', 'quux')] ) self.assertEqual( @@ -162,6 +163,7 @@ class NetworkTest(DockerClientTest): 'Container': container_id, 'EndpointConfig': { 'Aliases': ['foo', 'bar'], + 'Links': ['baz:quux'], }, }) |