diff options
author | Joffrey F <joffrey@docker.com> | 2017-10-26 16:50:53 -0700 |
---|---|---|
committer | Joffrey F <joffrey@docker.com> | 2017-11-06 19:21:03 -0800 |
commit | c9814e66a96563bcbab4effd9c3028d025592e9b (patch) | |
tree | 8f702203ced7d6902abc2fd83569a1693d16f3a2 | |
parent | 57a891f4f5ee48edcfbf3319d02c45d6a30d7f18 (diff) | |
download | docker-py-c9814e66a96563bcbab4effd9c3028d025592e9b.tar.gz |
More ContainerSpec tests
Signed-off-by: Joffrey F <joffrey@docker.com>
-rw-r--r-- | tests/integration/api_config_test.py | 15 | ||||
-rw-r--r-- | tests/integration/api_secret_test.py | 15 | ||||
-rw-r--r-- | tests/integration/api_service_test.py | 51 | ||||
-rw-r--r-- | tests/integration/base.py | 20 |
4 files changed, 69 insertions, 32 deletions
diff --git a/tests/integration/api_config_test.py b/tests/integration/api_config_test.py index fb6002a..0ffd767 100644 --- a/tests/integration/api_config_test.py +++ b/tests/integration/api_config_test.py @@ -9,13 +9,16 @@ from .base import BaseAPIIntegrationTest @requires_api_version('1.30') class ConfigAPITest(BaseAPIIntegrationTest): - def setUp(self): - super(ConfigAPITest, self).setUp() - self.init_swarm() + @classmethod + def setup_class(cls): + client = cls.get_client_instance() + force_leave_swarm(client) + cls._init_swarm(client) - def tearDown(self): - super(ConfigAPITest, self).tearDown() - force_leave_swarm(self.client) + @classmethod + def teardown_class(cls): + client = cls.get_client_instance() + force_leave_swarm(client) def test_create_config(self): config_id = self.client.create_config( diff --git a/tests/integration/api_secret_test.py b/tests/integration/api_secret_test.py index dcd880f..b3d93b8 100644 --- a/tests/integration/api_secret_test.py +++ b/tests/integration/api_secret_test.py @@ -9,13 +9,16 @@ from .base import BaseAPIIntegrationTest @requires_api_version('1.25') class SecretAPITest(BaseAPIIntegrationTest): - def setUp(self): - super(SecretAPITest, self).setUp() - self.init_swarm() + @classmethod + def setup_class(cls): + client = cls.get_client_instance() + force_leave_swarm(client) + cls._init_swarm(client) - def tearDown(self): - super(SecretAPITest, self).tearDown() - force_leave_swarm(self.client) + @classmethod + def teardown_class(cls): + client = cls.get_client_instance() + force_leave_swarm(client) def test_create_secret(self): secret_id = self.client.create_secret( diff --git a/tests/integration/api_service_test.py b/tests/integration/api_service_test.py index 56c3e68..baa6afa 100644 --- a/tests/integration/api_service_test.py +++ b/tests/integration/api_service_test.py @@ -13,19 +13,24 @@ from .base import BaseAPIIntegrationTest, BUSYBOX class ServiceTest(BaseAPIIntegrationTest): - def setUp(self): - super(ServiceTest, self).setUp() - force_leave_swarm(self.client) - self.init_swarm() + @classmethod + def setup_class(cls): + client = cls.get_client_instance() + force_leave_swarm(client) + cls._init_swarm(client) + + @classmethod + def teardown_class(cls): + client = cls.get_client_instance() + force_leave_swarm(client) 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 - force_leave_swarm(self.client) + super(ServiceTest, self).tearDown() def get_service_name(self): return 'dockerpytest_{0:x}'.format(random.getrandbits(64)) @@ -473,7 +478,7 @@ class ServiceTest(BaseAPIIntegrationTest): secret_data = u'東方花映塚' secret_id = self.client.create_secret(secret_name, secret_data) self.tmp_secrets.append(secret_id) - secret_ref = docker.types.ConfigReference(secret_id, secret_name) + secret_ref = docker.types.SecretReference(secret_id, secret_name) container_spec = docker.types.ContainerSpec( 'busybox', ['sleep', '999'], secrets=[secret_ref] ) @@ -481,8 +486,8 @@ class ServiceTest(BaseAPIIntegrationTest): name = self.get_service_name() svc_id = self.client.create_service(task_tmpl, name=name) svc_info = self.client.inspect_service(svc_id) - assert 'Configs' in svc_info['Spec']['TaskTemplate']['ContainerSpec'] - secrets = svc_info['Spec']['TaskTemplate']['ContainerSpec']['Configs'] + assert 'Secrets' in svc_info['Spec']['TaskTemplate']['ContainerSpec'] + secrets = svc_info['Spec']['TaskTemplate']['ContainerSpec']['Secrets'] assert secrets[0] == secret_ref container = self.get_service_container(name) @@ -494,7 +499,7 @@ class ServiceTest(BaseAPIIntegrationTest): container_secret = container_secret.decode('utf-8') assert container_secret == secret_data - @requires_api_version('1.25') + @requires_api_version('1.30') def test_create_service_with_config(self): config_name = 'favorite_touhou' config_data = b'phantasmagoria of flower view' @@ -515,11 +520,11 @@ class ServiceTest(BaseAPIIntegrationTest): container = self.get_service_container(name) assert container is not None exec_id = self.client.exec_create( - container, 'cat /run/configs/{0}'.format(config_name) + container, 'cat /{0}'.format(config_name) ) assert self.client.exec_start(exec_id) == config_data - @requires_api_version('1.25') + @requires_api_version('1.30') def test_create_service_with_unicode_config(self): config_name = 'favorite_touhou' config_data = u'東方花映塚' @@ -540,7 +545,7 @@ class ServiceTest(BaseAPIIntegrationTest): container = self.get_service_container(name) assert container is not None exec_id = self.client.exec_create( - container, 'cat /run/configs/{0}'.format(config_name) + container, 'cat /{0}'.format(config_name) ) container_config = self.client.exec_start(exec_id) container_config = container_config.decode('utf-8') @@ -618,7 +623,7 @@ class ServiceTest(BaseAPIIntegrationTest): second = 1000000000 hc = docker.types.Healthcheck( test='true', retries=3, timeout=1 * second, - start_period=3 * second, interval=second / 2, + start_period=3 * second, interval=int(second / 2), ) container_spec = docker.types.ContainerSpec( BUSYBOX, ['sleep', '999'], healthcheck=hc @@ -665,3 +670,21 @@ class ServiceTest(BaseAPIIntegrationTest): svc_info['Spec']['TaskTemplate']['ContainerSpec']['StopSignal'] == 'SIGINT' ) + + @requires_api_version('1.30') + def test_create_service_with_privileges(self): + priv = docker.types.Privileges(selinux_disable=True) + container_spec = docker.types.ContainerSpec( + BUSYBOX, ['sleep', '999'], privileges=priv + ) + task_tmpl = docker.types.TaskTemplate(container_spec) + name = self.get_service_name() + svc_id = self.client.create_service(task_tmpl, name=name) + svc_info = self.client.inspect_service(svc_id) + assert ( + 'Privileges' in svc_info['Spec']['TaskTemplate']['ContainerSpec'] + ) + privileges = ( + svc_info['Spec']['TaskTemplate']['ContainerSpec']['Privileges'] + ) + assert privileges['SELinuxContext']['Disable'] is True diff --git a/tests/integration/base.py b/tests/integration/base.py index 701e7fc..4f92901 100644 --- a/tests/integration/base.py +++ b/tests/integration/base.py @@ -78,14 +78,24 @@ class BaseAPIIntegrationTest(BaseIntegrationTest): def setUp(self): super(BaseAPIIntegrationTest, self).setUp() - self.client = docker.APIClient( - version=TEST_API_VERSION, timeout=60, **kwargs_from_env() - ) + self.client = self.get_client_instance() def tearDown(self): super(BaseAPIIntegrationTest, self).tearDown() self.client.close() + @staticmethod + def get_client_instance(): + return docker.APIClient( + version=TEST_API_VERSION, timeout=60, **kwargs_from_env() + ) + + @staticmethod + def _init_swarm(client, **kwargs): + return client.init_swarm( + '127.0.0.1', listen_addr=helpers.swarm_listen_addr(), **kwargs + ) + def run_container(self, *args, **kwargs): container = self.client.create_container(*args, **kwargs) self.tmp_containers.append(container) @@ -116,6 +126,4 @@ class BaseAPIIntegrationTest(BaseIntegrationTest): assert actual_exit_code == exit_code, msg def init_swarm(self, **kwargs): - return self.client.init_swarm( - '127.0.0.1', listen_addr=helpers.swarm_listen_addr(), **kwargs - ) + return self._init_swarm(self.client, **kwargs) |