Skip to content

Commit 3ff5f57

Browse files
committed
Adjust integration tests
Signed-off-by: Christopher Petito <47751006+krissetto@users.noreply.github.com>
1 parent bd164f9 commit 3ff5f57

6 files changed

+52
-32
lines changed

tests/integration/api_container_test.py

+10-3
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@
1414
from ..helpers import ctrl_with
1515
from ..helpers import requires_api_version, skip_if_desktop
1616
from .base import BaseAPIIntegrationTest
17-
from .base import TEST_IMG
17+
from .base import TEST_IMG, TEST_API_VERSION
1818
from docker.constants import IS_WINDOWS_PLATFORM
1919
from docker.utils.socket import next_frame_header
2020
from docker.utils.socket import read_exactly
@@ -1285,7 +1285,11 @@ def test_run_container_reading_socket_ws(self):
12851285
self.client.start(container)
12861286

12871287
data = pty_stdout.recv()
1288-
assert data.decode('utf-8') == line
1288+
1289+
if TEST_API_VERSION < "1.25":
1290+
assert data == line
1291+
else:
1292+
assert data.decode('utf-8') == line
12891293

12901294
@pytest.mark.timeout(10)
12911295
def test_attach_no_stream(self):
@@ -1294,7 +1298,10 @@ def test_attach_no_stream(self):
12941298
)
12951299
self.tmp_containers.append(container)
12961300
self.client.start(container)
1297-
self.client.wait(container, condition='not-running')
1301+
wait_kwargs = {}
1302+
if TEST_API_VERSION >= "1.30":
1303+
wait_kwargs['condition'] = 'not-running'
1304+
self.client.wait(container, **wait_kwargs)
12981305
output = self.client.attach(container, stream=False, logs=True)
12991306
assert output == 'hello\n'.encode(encoding='ascii')
13001307

tests/integration/api_exec_test.py

+14-12
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22
from ..helpers import ctrl_with
33
from ..helpers import requires_api_version
44
from .base import BaseAPIIntegrationTest
5-
from .base import TEST_IMG
5+
from .base import TEST_IMG, TEST_API_VERSION
66
from docker.utils.proxy import ProxyConfig
77
from docker.utils.socket import next_frame_header
88
from docker.utils.socket import read_exactly
@@ -35,17 +35,19 @@ def test_execute_command_with_proxy_env(self):
3535
for item in expected:
3636
assert item in output
3737

38-
# Overwrite some variables with a custom environment
39-
env = {'https_proxy': 'xxx', 'HTTPS_PROXY': 'XXX'}
40-
41-
res = self.client.exec_create(container, cmd=cmd, environment=env)
42-
output = self.client.exec_start(res).decode('utf-8').split('\n')
43-
expected = [
44-
'ftp_proxy=a', 'https_proxy=xxx', 'http_proxy=c', 'no_proxy=d',
45-
'FTP_PROXY=a', 'HTTPS_PROXY=XXX', 'HTTP_PROXY=c', 'NO_PROXY=d'
46-
]
47-
for item in expected:
48-
assert item in output
38+
# Setting environment for exec is not supported in API < 1.25
39+
if TEST_API_VERSION > "1.24":
40+
# Overwrite some variables with a custom environment
41+
env = {'https_proxy': 'xxx', 'HTTPS_PROXY': 'XXX'}
42+
43+
res = self.client.exec_create(container, cmd=cmd, environment=env)
44+
output = self.client.exec_start(res).decode('utf-8').split('\n')
45+
expected = [
46+
'ftp_proxy=a', 'https_proxy=xxx', 'http_proxy=c', 'no_proxy=d',
47+
'FTP_PROXY=a', 'HTTPS_PROXY=XXX', 'HTTP_PROXY=c', 'NO_PROXY=d'
48+
]
49+
for item in expected:
50+
assert item in output
4951

5052
def test_execute_command(self):
5153
container = self.client.create_container(TEST_IMG, 'cat',

tests/integration/api_service_test.py

+2
Original file line numberDiff line numberDiff line change
@@ -382,6 +382,7 @@ def test_create_service_with_custom_networks(self):
382382
{'Target': net1['Id']}, {'Target': net2['Id']}
383383
]
384384

385+
@requires_api_version('1.25')
385386
def test_create_service_with_network_attachment_config(self):
386387
network = self.client.create_network(
387388
'dockerpytest_1', driver='overlay', ipam={'Driver': 'default'}
@@ -1108,6 +1109,7 @@ def test_update_service_with_defaults_update_config(self):
11081109
assert update_config['Delay'] == uc['Delay']
11091110
assert update_config['FailureAction'] == uc['FailureAction']
11101111

1112+
@requires_api_version('1.25')
11111113
def test_update_service_with_defaults_networks(self):
11121114
net1 = self.client.create_network(
11131115
'dockerpytest_1', driver='overlay', ipam={'Driver': 'default'}

tests/integration/api_swarm_test.py

-2
Original file line numberDiff line numberDiff line change
@@ -27,8 +27,6 @@ def test_init_swarm_simple(self):
2727

2828
@requires_api_version('1.24')
2929
def test_init_swarm_force_new_cluster(self):
30-
pytest.skip('Test stalls the engine on 1.12.0')
31-
3230
assert self.init_swarm()
3331
version_1 = self.client.inspect_swarm()['Version']['Index']
3432
assert self.client.init_swarm(force_new_cluster=True)

tests/integration/models_containers_test.py

+8-3
Original file line numberDiff line numberDiff line change
@@ -104,6 +104,7 @@ def test_run_with_network(self):
104104
assert 'Networks' in attrs['NetworkSettings']
105105
assert list(attrs['NetworkSettings']['Networks'].keys()) == [net_name]
106106

107+
@requires_api_version('1.32')
107108
def test_run_with_networking_config(self):
108109
net_name = random_name()
109110
client = docker.from_env(version=TEST_API_VERSION)
@@ -132,11 +133,12 @@ def test_run_with_networking_config(self):
132133
assert 'NetworkSettings' in attrs
133134
assert 'Networks' in attrs['NetworkSettings']
134135
assert list(attrs['NetworkSettings']['Networks'].keys()) == [net_name]
135-
assert attrs['NetworkSettings']['Networks'][net_name]['Aliases'] == \
136-
test_aliases
136+
for alias in test_aliases:
137+
assert alias in attrs['NetworkSettings']['Networks'][net_name]['Aliases']
137138
assert attrs['NetworkSettings']['Networks'][net_name]['DriverOpts'] \
138139
== test_driver_opt
139140

141+
@requires_api_version('1.32')
140142
def test_run_with_networking_config_with_undeclared_network(self):
141143
net_name = random_name()
142144
client = docker.from_env(version=TEST_API_VERSION)
@@ -165,6 +167,7 @@ def test_run_with_networking_config_with_undeclared_network(self):
165167
)
166168
self.tmp_containers.append(container.id)
167169

170+
@requires_api_version('1.32')
168171
def test_run_with_networking_config_only_undeclared_network(self):
169172
net_name = random_name()
170173
client = docker.from_env(version=TEST_API_VERSION)
@@ -190,9 +193,11 @@ def test_run_with_networking_config_only_undeclared_network(self):
190193
assert 'NetworkSettings' in attrs
191194
assert 'Networks' in attrs['NetworkSettings']
192195
assert list(attrs['NetworkSettings']['Networks'].keys()) == [net_name]
193-
assert attrs['NetworkSettings']['Networks'][net_name]['Aliases'] is None
194196
assert (attrs['NetworkSettings']['Networks'][net_name]['DriverOpts']
195197
is None)
198+
# Aliases should include the container's short-id (but it will be removed
199+
# in API v1.45).
200+
assert attrs['NetworkSettings']['Networks'][net_name]['Aliases'] == [attrs["Id"][:12]]
196201

197202
def test_run_with_none_driver(self):
198203
client = docker.from_env(version=TEST_API_VERSION)

tests/integration/models_services_test.py

+18-12
Original file line numberDiff line numberDiff line change
@@ -23,26 +23,32 @@ def tearDownClass(cls):
2323
def test_create(self):
2424
client = docker.from_env(version=TEST_API_VERSION)
2525
name = helpers.random_name()
26-
service = client.services.create(
26+
create_kwargs = {
2727
# create arguments
28-
name=name,
29-
labels={'foo': 'bar'},
28+
'name': name,
29+
'labels': {'foo': 'bar'},
3030
# ContainerSpec arguments
31-
image="alpine",
32-
command="sleep 300",
33-
container_labels={'container': 'label'},
34-
rollback_config={'order': 'start-first'}
35-
)
31+
'image': "alpine",
32+
'command': "sleep 300",
33+
'container_labels': {'container': 'label'}
34+
}
35+
if TEST_API_VERSION >= "1.28":
36+
create_kwargs['rollback_config'] = {'order': 'start-first'}
37+
38+
service = client.services.create(**create_kwargs)
39+
3640
assert service.name == name
3741
assert service.attrs['Spec']['Labels']['foo'] == 'bar'
3842
container_spec = service.attrs['Spec']['TaskTemplate']['ContainerSpec']
3943
assert "alpine" in container_spec['Image']
4044
assert container_spec['Labels'] == {'container': 'label'}
41-
spec_rollback = service.attrs['Spec'].get('RollbackConfig', None)
42-
assert spec_rollback is not None
43-
assert ('Order' in spec_rollback and
44-
spec_rollback['Order'] == 'start-first')
45+
if TEST_API_VERSION >= "1.28":
46+
spec_rollback = service.attrs['Spec'].get('RollbackConfig', None)
47+
assert spec_rollback is not None
48+
assert ('Order' in spec_rollback and
49+
spec_rollback['Order'] == 'start-first')
4550

51+
@helpers.requires_api_version("1.25")
4652
def test_create_with_network(self):
4753
client = docker.from_env(version=TEST_API_VERSION)
4854
name = helpers.random_name()

0 commit comments

Comments
 (0)