Skip to content

Commit 6ed0c01

Browse files
committed
Adjust tests and add newest engine version to Jenkinsfile
Signed-off-by: Joffrey F <[email protected]>
1 parent 2bdaf7f commit 6ed0c01

File tree

4 files changed

+37
-17
lines changed

4 files changed

+37
-17
lines changed

Jenkinsfile

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@ def images = [:]
77

88
// Note: Swarm in dind seem notoriously flimsy with 1.12.1+, which is why we're
99
// sticking with 1.12.0 for the 1.12 series
10-
def dockerVersions = ["1.12.0", "1.13.1", "17.04.0-ce-rc1"]
10+
def dockerVersions = ["1.12.0", "1.13.1", "17.04.0-ce", "17.05.0-ce"]
1111

1212
def buildImage = { name, buildargs, pyTag ->
1313
img = docker.image(name)
@@ -35,7 +35,7 @@ def buildImages = { ->
3535
}
3636

3737
def getAPIVersion = { engineVersion ->
38-
def versionMap = ['1.12.': '1.24', '1.13.': '1.26', '17.04': '1.27']
38+
def versionMap = ['1.12.': '1.24', '1.13.': '1.26', '17.04': '1.27', '17.05': '1.29']
3939
return versionMap[engineVersion.substring(0, 5)]
4040
}
4141

Makefile

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -41,8 +41,8 @@ integration-test: build
4141
integration-test-py3: build-py3
4242
docker run --rm -v /var/run/docker.sock:/var/run/docker.sock docker-sdk-python3 py.test tests/integration/${file}
4343

44-
TEST_API_VERSION ?= 1.27
45-
TEST_ENGINE_VERSION ?= 17.04.0-ce-rc1
44+
TEST_API_VERSION ?= 1.29
45+
TEST_ENGINE_VERSION ?= 17.05.0-ce
4646

4747
.PHONY: integration-dind
4848
integration-dind: build build-py3

tests/helpers.py

Lines changed: 17 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -54,13 +54,23 @@ def requires_api_version(version):
5454
)
5555

5656

57-
def requires_experimental(f):
58-
@functools.wraps(f)
59-
def wrapped(self, *args, **kwargs):
60-
if not self.client.info()['ExperimentalBuild']:
61-
pytest.skip('Feature requires Docker Engine experimental mode')
62-
return f(self, *args, **kwargs)
63-
return wrapped
57+
def requires_experimental(until=None):
58+
test_version = os.environ.get(
59+
'DOCKER_TEST_API_VERSION', docker.constants.DEFAULT_DOCKER_API_VERSION
60+
)
61+
62+
def req_exp(f):
63+
@functools.wraps(f)
64+
def wrapped(self, *args, **kwargs):
65+
if not self.client.info()['ExperimentalBuild']:
66+
pytest.skip('Feature requires Docker Engine experimental mode')
67+
return f(self, *args, **kwargs)
68+
69+
if until and docker.utils.version_gte(test_version, until):
70+
return f
71+
return wrapped
72+
73+
return req_exp
6474

6575

6676
def wait_on_condition(condition, delay=0.1, timeout=40):

tests/integration/api_service_test.py

Lines changed: 16 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -103,18 +103,28 @@ def test_create_service_simple(self):
103103
assert services[0]['ID'] == svc_id['ID']
104104

105105
@requires_api_version('1.25')
106-
@requires_experimental
106+
@requires_experimental(until='1.29')
107107
def test_service_logs(self):
108108
name, svc_id = self.create_simple_service()
109109
assert self.get_service_container(name, include_stopped=True)
110-
logs = self.client.service_logs(svc_id, stdout=True, is_tty=False)
111-
log_line = next(logs)
110+
attempts = 20
111+
while True:
112+
if attempts == 0:
113+
self.fail('No service logs produced by endpoint')
114+
return
115+
logs = self.client.service_logs(svc_id, stdout=True, is_tty=False)
116+
try:
117+
log_line = next(logs)
118+
except StopIteration:
119+
attempts -= 1
120+
time.sleep(0.1)
121+
continue
122+
else:
123+
break
124+
112125
if six.PY3:
113126
log_line = log_line.decode('utf-8')
114127
assert 'hello\n' in log_line
115-
assert 'com.docker.swarm.service.id={}'.format(
116-
svc_id['ID']
117-
) in log_line
118128

119129
def test_create_service_custom_log_driver(self):
120130
container_spec = docker.types.ContainerSpec(

0 commit comments

Comments
 (0)