Skip to content

Commit 2cb7806

Browse files
committed
More ContainerSpec tests
Signed-off-by: Joffrey F <[email protected]>
1 parent b130163 commit 2cb7806

File tree

4 files changed

+69
-32
lines changed

4 files changed

+69
-32
lines changed

tests/integration/api_config_test.py

Lines changed: 9 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -9,13 +9,16 @@
99

1010
@requires_api_version('1.30')
1111
class ConfigAPITest(BaseAPIIntegrationTest):
12-
def setUp(self):
13-
super(ConfigAPITest, self).setUp()
14-
self.init_swarm()
12+
@classmethod
13+
def setup_class(cls):
14+
client = cls.get_client_instance()
15+
force_leave_swarm(client)
16+
cls._init_swarm(client)
1517

16-
def tearDown(self):
17-
super(ConfigAPITest, self).tearDown()
18-
force_leave_swarm(self.client)
18+
@classmethod
19+
def teardown_class(cls):
20+
client = cls.get_client_instance()
21+
force_leave_swarm(client)
1922

2023
def test_create_config(self):
2124
config_id = self.client.create_config(

tests/integration/api_secret_test.py

Lines changed: 9 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -9,13 +9,16 @@
99

1010
@requires_api_version('1.25')
1111
class SecretAPITest(BaseAPIIntegrationTest):
12-
def setUp(self):
13-
super(SecretAPITest, self).setUp()
14-
self.init_swarm()
12+
@classmethod
13+
def setup_class(cls):
14+
client = cls.get_client_instance()
15+
force_leave_swarm(client)
16+
cls._init_swarm(client)
1517

16-
def tearDown(self):
17-
super(SecretAPITest, self).tearDown()
18-
force_leave_swarm(self.client)
18+
@classmethod
19+
def teardown_class(cls):
20+
client = cls.get_client_instance()
21+
force_leave_swarm(client)
1922

2023
def test_create_secret(self):
2124
secret_id = self.client.create_secret(

tests/integration/api_service_test.py

Lines changed: 37 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -13,19 +13,24 @@
1313

1414

1515
class ServiceTest(BaseAPIIntegrationTest):
16-
def setUp(self):
17-
super(ServiceTest, self).setUp()
18-
force_leave_swarm(self.client)
19-
self.init_swarm()
16+
@classmethod
17+
def setup_class(cls):
18+
client = cls.get_client_instance()
19+
force_leave_swarm(client)
20+
cls._init_swarm(client)
21+
22+
@classmethod
23+
def teardown_class(cls):
24+
client = cls.get_client_instance()
25+
force_leave_swarm(client)
2026

2127
def tearDown(self):
22-
super(ServiceTest, self).tearDown()
2328
for service in self.client.services(filters={'name': 'dockerpytest_'}):
2429
try:
2530
self.client.remove_service(service['ID'])
2631
except docker.errors.APIError:
2732
pass
28-
force_leave_swarm(self.client)
33+
super(ServiceTest, self).tearDown()
2934

3035
def get_service_name(self):
3136
return 'dockerpytest_{0:x}'.format(random.getrandbits(64))
@@ -473,16 +478,16 @@ def test_create_service_with_unicode_secret(self):
473478
secret_data = u'東方花映塚'
474479
secret_id = self.client.create_secret(secret_name, secret_data)
475480
self.tmp_secrets.append(secret_id)
476-
secret_ref = docker.types.ConfigReference(secret_id, secret_name)
481+
secret_ref = docker.types.SecretReference(secret_id, secret_name)
477482
container_spec = docker.types.ContainerSpec(
478483
'busybox', ['sleep', '999'], secrets=[secret_ref]
479484
)
480485
task_tmpl = docker.types.TaskTemplate(container_spec)
481486
name = self.get_service_name()
482487
svc_id = self.client.create_service(task_tmpl, name=name)
483488
svc_info = self.client.inspect_service(svc_id)
484-
assert 'Configs' in svc_info['Spec']['TaskTemplate']['ContainerSpec']
485-
secrets = svc_info['Spec']['TaskTemplate']['ContainerSpec']['Configs']
489+
assert 'Secrets' in svc_info['Spec']['TaskTemplate']['ContainerSpec']
490+
secrets = svc_info['Spec']['TaskTemplate']['ContainerSpec']['Secrets']
486491
assert secrets[0] == secret_ref
487492

488493
container = self.get_service_container(name)
@@ -494,7 +499,7 @@ def test_create_service_with_unicode_secret(self):
494499
container_secret = container_secret.decode('utf-8')
495500
assert container_secret == secret_data
496501

497-
@requires_api_version('1.25')
502+
@requires_api_version('1.30')
498503
def test_create_service_with_config(self):
499504
config_name = 'favorite_touhou'
500505
config_data = b'phantasmagoria of flower view'
@@ -515,11 +520,11 @@ def test_create_service_with_config(self):
515520
container = self.get_service_container(name)
516521
assert container is not None
517522
exec_id = self.client.exec_create(
518-
container, 'cat /run/configs/{0}'.format(config_name)
523+
container, 'cat /{0}'.format(config_name)
519524
)
520525
assert self.client.exec_start(exec_id) == config_data
521526

522-
@requires_api_version('1.25')
527+
@requires_api_version('1.30')
523528
def test_create_service_with_unicode_config(self):
524529
config_name = 'favorite_touhou'
525530
config_data = u'東方花映塚'
@@ -540,7 +545,7 @@ def test_create_service_with_unicode_config(self):
540545
container = self.get_service_container(name)
541546
assert container is not None
542547
exec_id = self.client.exec_create(
543-
container, 'cat /run/configs/{0}'.format(config_name)
548+
container, 'cat /{0}'.format(config_name)
544549
)
545550
container_config = self.client.exec_start(exec_id)
546551
container_config = container_config.decode('utf-8')
@@ -618,7 +623,7 @@ def test_create_service_with_healthcheck(self):
618623
second = 1000000000
619624
hc = docker.types.Healthcheck(
620625
test='true', retries=3, timeout=1 * second,
621-
start_period=3 * second, interval=second / 2,
626+
start_period=3 * second, interval=int(second / 2),
622627
)
623628
container_spec = docker.types.ContainerSpec(
624629
BUSYBOX, ['sleep', '999'], healthcheck=hc
@@ -665,3 +670,21 @@ def test_create_service_with_stop_signal(self):
665670
svc_info['Spec']['TaskTemplate']['ContainerSpec']['StopSignal'] ==
666671
'SIGINT'
667672
)
673+
674+
@requires_api_version('1.30')
675+
def test_create_service_with_privileges(self):
676+
priv = docker.types.Privileges(selinux_disable=True)
677+
container_spec = docker.types.ContainerSpec(
678+
BUSYBOX, ['sleep', '999'], privileges=priv
679+
)
680+
task_tmpl = docker.types.TaskTemplate(container_spec)
681+
name = self.get_service_name()
682+
svc_id = self.client.create_service(task_tmpl, name=name)
683+
svc_info = self.client.inspect_service(svc_id)
684+
assert (
685+
'Privileges' in svc_info['Spec']['TaskTemplate']['ContainerSpec']
686+
)
687+
privileges = (
688+
svc_info['Spec']['TaskTemplate']['ContainerSpec']['Privileges']
689+
)
690+
assert privileges['SELinuxContext']['Disable'] is True

tests/integration/base.py

Lines changed: 14 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -78,14 +78,24 @@ class BaseAPIIntegrationTest(BaseIntegrationTest):
7878

7979
def setUp(self):
8080
super(BaseAPIIntegrationTest, self).setUp()
81-
self.client = docker.APIClient(
82-
version=TEST_API_VERSION, timeout=60, **kwargs_from_env()
83-
)
81+
self.client = self.get_client_instance()
8482

8583
def tearDown(self):
8684
super(BaseAPIIntegrationTest, self).tearDown()
8785
self.client.close()
8886

87+
@staticmethod
88+
def get_client_instance():
89+
return docker.APIClient(
90+
version=TEST_API_VERSION, timeout=60, **kwargs_from_env()
91+
)
92+
93+
@staticmethod
94+
def _init_swarm(client, **kwargs):
95+
return client.init_swarm(
96+
'127.0.0.1', listen_addr=helpers.swarm_listen_addr(), **kwargs
97+
)
98+
8999
def run_container(self, *args, **kwargs):
90100
container = self.client.create_container(*args, **kwargs)
91101
self.tmp_containers.append(container)
@@ -116,6 +126,4 @@ def execute(self, container, cmd, exit_code=0, **kwargs):
116126
assert actual_exit_code == exit_code, msg
117127

118128
def init_swarm(self, **kwargs):
119-
return self.client.init_swarm(
120-
'127.0.0.1', listen_addr=helpers.swarm_listen_addr(), **kwargs
121-
)
129+
return self._init_swarm(self.client, **kwargs)

0 commit comments

Comments
 (0)