summaryrefslogtreecommitdiff
path: root/tests/integration/network_test.py
diff options
context:
space:
mode:
Diffstat (limited to 'tests/integration/network_test.py')
-rw-r--r--tests/integration/network_test.py98
1 files changed, 98 insertions, 0 deletions
diff --git a/tests/integration/network_test.py b/tests/integration/network_test.py
new file mode 100644
index 0000000..e009660
--- /dev/null
+++ b/tests/integration/network_test.py
@@ -0,0 +1,98 @@
+import random
+
+import docker
+import pytest
+
+from . import api_test
+from ..base import requires_api_version
+
+
+@requires_api_version('1.21')
+class TestNetworks(api_test.BaseTestCase):
+ def create_network(self, *args, **kwargs):
+ net_name = 'dockerpy{}'.format(random.getrandbits(24))[:14]
+ net_id = self.client.create_network(net_name, *args, **kwargs)['id']
+ self.tmp_networks.append(net_id)
+ return (net_name, net_id)
+
+ def test_list_networks(self):
+ networks = self.client.networks()
+ initial_size = len(networks)
+
+ net_name, net_id = self.create_network()
+
+ networks = self.client.networks()
+ self.assertEqual(len(networks), initial_size + 1)
+ self.assertTrue(net_id in [n['id'] for n in networks])
+
+ networks_by_name = self.client.networks(names=[net_name])
+ self.assertEqual([n['id'] for n in networks_by_name], [net_id])
+
+ networks_by_partial_id = self.client.networks(ids=[net_id[:8]])
+ self.assertEqual([n['id'] for n in networks_by_partial_id], [net_id])
+
+ def test_inspect_network(self):
+ net_name, net_id = self.create_network()
+
+ net = self.client.inspect_network(net_id)
+ self.assertEqual(net, {
+ u'name': net_name,
+ u'id': net_id,
+ u'driver': 'bridge',
+ u'containers': {},
+ })
+
+ def test_create_network_with_host_driver_fails(self):
+ net_name = 'dockerpy{}'.format(random.getrandbits(24))[:14]
+
+ with pytest.raises(docker.errors.APIError):
+ self.client.create_network(net_name, driver='host')
+
+ def test_remove_network(self):
+ initial_size = len(self.client.networks())
+
+ net_name, net_id = self.create_network()
+ self.assertEqual(len(self.client.networks()), initial_size + 1)
+
+ self.client.remove_network(net_id)
+ self.assertEqual(len(self.client.networks()), initial_size)
+
+ def test_connect_and_disconnect_container(self):
+ net_name, net_id = self.create_network()
+
+ container = self.client.create_container('busybox', 'top')
+ self.tmp_containers.append(container)
+ self.client.start(container)
+
+ network_data = self.client.inspect_network(net_id)
+ self.assertFalse(network_data.get('containers'))
+
+ self.client.connect_container_to_network(container, net_id)
+ network_data = self.client.inspect_network(net_id)
+ self.assertEqual(
+ list(network_data['containers'].keys()),
+ [container['Id']])
+
+ self.client.disconnect_container_from_network(container, net_id)
+ network_data = self.client.inspect_network(net_id)
+ self.assertFalse(network_data.get('containers'))
+
+ def test_connect_on_container_create(self):
+ net_name, net_id = self.create_network()
+
+ container = self.client.create_container(
+ image='busybox',
+ command='top',
+ host_config=self.client.create_host_config(network_mode=net_name),
+ )
+ self.tmp_containers.append(container)
+ self.client.start(container)
+
+ network_data = self.client.inspect_network(net_id)
+ self.assertEqual(
+ list(network_data['containers'].keys()),
+ [container['Id']])
+
+ self.client.disconnect_container_from_network(container, net_id)
+ network_data = self.client.inspect_network(net_id)
+ self.assertFalse(network_data.get('containers'))