summaryrefslogtreecommitdiff
path: root/tests/integration
diff options
context:
space:
mode:
authorJoffrey F <joffrey@docker.com>2016-08-17 18:42:52 -0700
committerJoffrey F <joffrey@docker.com>2016-08-17 18:42:52 -0700
commit02e99e4967bebb116a7d9d650647df912c608297 (patch)
treed006074efca6a25048f32d45c2f8a8522880aeee /tests/integration
parent172e95d52fe4f9bc6146828b34fbed567aec3945 (diff)
downloaddocker-py-02e99e4967bebb116a7d9d650647df912c608297.tar.gz
Service API integration tests
Signed-off-by: Joffrey F <joffrey@docker.com>
Diffstat (limited to 'tests/integration')
-rw-r--r--tests/integration/service_test.py100
1 files changed, 100 insertions, 0 deletions
diff --git a/tests/integration/service_test.py b/tests/integration/service_test.py
new file mode 100644
index 0000000..0010986
--- /dev/null
+++ b/tests/integration/service_test.py
@@ -0,0 +1,100 @@
+import random
+
+import docker
+# import pytest
+
+from ..base import requires_api_version
+from .. import helpers
+
+
+BUSYBOX = helpers.BUSYBOX
+
+
+class ServiceTest(helpers.BaseTestCase):
+ def setUp(self):
+ super(ServiceTest, self).setUp()
+ try:
+ self.client.leave_swarm(force=True)
+ except docker.errors.APIError:
+ pass
+ self.client.init_swarm('eth0')
+
+ def tearDown(self):
+ super(ServiceTest, self).tearDown()
+ for service in self.client.services(filters={'name': 'dockerpytest_'}):
+ try:
+ self.client.remove_service(service['ID'])
+ except docker.errors.APIError:
+ pass
+ try:
+ self.client.leave_swarm(force=True)
+ except docker.errors.APIError:
+ pass
+
+ def get_service_name(self):
+ return 'dockerpytest_{0:x}'.format(random.getrandbits(64))
+
+ def create_simple_service(self, name=None):
+ if name:
+ name = 'dockerpytest_{0}'.format(name)
+ else:
+ name = self.get_service_name()
+
+ container_spec = docker.api.ContainerSpec('busybox', ['echo', 'hello'])
+ task_tmpl = docker.api.TaskTemplate(container_spec)
+ return name, self.client.create_service(task_tmpl, name=name)
+
+ @requires_api_version('1.24')
+ def test_list_services(self):
+ services = self.client.services()
+ assert isinstance(services, list)
+
+ test_services = self.client.services(filters={'name': 'dockerpytest_'})
+ assert len(test_services) == 0
+ self.create_simple_service()
+ test_services = self.client.services(filters={'name': 'dockerpytest_'})
+ assert len(test_services) == 1
+ assert 'dockerpytest_' in test_services[0]['Spec']['Name']
+
+ def test_inspect_service_by_id(self):
+ svc_name, svc_id = self.create_simple_service()
+ svc_info = self.client.inspect_service(svc_id)
+ assert 'ID' in svc_info
+ assert svc_info['ID'] == svc_id['ID']
+
+ def test_inspect_service_by_name(self):
+ svc_name, svc_id = self.create_simple_service()
+ svc_info = self.client.inspect_service(svc_name)
+ assert 'ID' in svc_info
+ assert svc_info['ID'] == svc_id['ID']
+
+ def test_remove_service_by_id(self):
+ svc_name, svc_id = self.create_simple_service()
+ assert self.client.remove_service(svc_id)
+ test_services = self.client.services(filters={'name': 'dockerpytest_'})
+ assert len(test_services) == 0
+
+ def test_rempve_service_by_name(self):
+ svc_name, svc_id = self.create_simple_service()
+ assert self.client.remove_service(svc_name)
+ test_services = self.client.services(filters={'name': 'dockerpytest_'})
+ assert len(test_services) == 0
+
+ def test_create_service_simple(self):
+ name, svc_id = self.create_simple_service()
+ assert self.client.inspect_service(svc_id)
+ services = self.client.services(filters={'name': name})
+ assert len(services) == 1
+ assert services[0]['ID'] == svc_id['ID']
+
+ def test_update_service_name(self):
+ name, svc_id = self.create_simple_service()
+ svc_info = self.client.inspect_service(svc_id)
+ svc_version = svc_info['Version']['Index']
+ new_name = self.get_service_name()
+ assert self.client.update_service(
+ svc_id, svc_version, name=new_name,
+ task_template=svc_info['Spec']['TaskTemplate']
+ )
+ svc_info = self.client.inspect_service(svc_id)
+ assert svc_info['Spec']['Name'] == new_name