Skip to content

Commit a926d3b

Browse files
Lekensteynkriskwiatkowski
authored andcommitted
interop_test_runner: use Python 3, improve wait logic (#170)
'python2' does not exist on macOS, it is called 'python2.7'. Porting to Python 3 is however more future-proof so do that instead. Rename the file such that it can be run with pytest.
1 parent 7761398 commit a926d3b

File tree

3 files changed

+32
-19
lines changed

3 files changed

+32
-19
lines changed

.travis.yml

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
1+
dist: xenial
12
language: go
23

34
matrix:
@@ -28,7 +29,10 @@ before_install:
2829
- make -f _dev/Makefile fmtcheck
2930

3031
install:
31-
- if [[ "$TRAVIS_OS_NAME" == "linux" ]] && [[ "$TEST_SUITE" != "test-unit" ]]; then sudo pip install docker; fi
32+
- |
33+
if [[ "$TRAVIS_OS_NAME" == "linux" ]] && [[ "$TEST_SUITE" != "test-unit" ]]; then
34+
sudo apt-get install -y python3-pip && sudo pip3 install docker
35+
fi
3236
3337
script:
3438
# Travis does not support Docker on macOS, disable it in the build-all target.

_dev/Makefile

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -135,7 +135,7 @@ test-bogo:
135135
$(DOCKER) run --rm -v $(PRJ_DIR):$(BOGO_DOCKER_TRIS_LOCATION) tls-tris:bogo
136136

137137
test-interop:
138-
$(DEV_DIR)/interop_test_runner -v
138+
$(DEV_DIR)/interop_test_runner.py -v
139139

140140
###############
141141
#

_dev/interop_test_runner renamed to _dev/interop_test_runner.py

Lines changed: 26 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
#!/usr/bin/env python2
1+
#!/usr/bin/env python3
22

33
import docker
44
import unittest
@@ -8,13 +8,13 @@
88
# Regex patterns used for testing
99

1010
# Checks if TLS 1.3 was negotiated
11-
RE_PATTERN_HELLO_TLS_13_NORESUME = "^.*Hello TLS 1.3 \(draft .*\) _o/$|^.*Hello TLS 1.3 _o/$"
11+
RE_PATTERN_HELLO_TLS_13_NORESUME = r"^.*Hello TLS 1.3 \(draft .*\) _o/$|^.*Hello TLS 1.3 _o/$"
1212
# Checks if TLS 1.3 was resumed
13-
RE_PATTERN_HELLO_TLS_13_RESUME = "Hello TLS 1.3 \[resumed\] _o/"
13+
RE_PATTERN_HELLO_TLS_13_RESUME = r"Hello TLS 1.3 \[resumed\] _o/"
1414
# Checks if 0-RTT was used and NOT confirmed
15-
RE_PATTERN_HELLO_0RTT = "^.*Hello TLS 1.3 .*\[resumed\] \[0-RTT\] _o/$"
15+
RE_PATTERN_HELLO_0RTT = r"^.*Hello TLS 1.3 .*\[resumed\] \[0-RTT\] _o/$"
1616
# Checks if 0-RTT was used and confirmed
17-
RE_PATTERN_HELLO_0RTT_CONFIRMED = "^.*Hello TLS 1.3 .*\[resumed\] \[0-RTT confirmed\] _o/$"
17+
RE_PATTERN_HELLO_0RTT_CONFIRMED = r"^.*Hello TLS 1.3 .*\[resumed\] \[0-RTT confirmed\] _o/$"
1818
# ALPN
1919
RE_PATTERN_ALPN = "ALPN protocol: npn_proto$"
2020
# Successful TLS establishement from TRIS
@@ -27,23 +27,24 @@ class Docker(object):
2727
def __init__(self):
2828
self.d = docker.from_env()
2929

30+
def close(self):
31+
self.d.close()
32+
3033
def get_ip(self, server):
3134
tris_localserver_container = self.d.containers.get(server)
3235
return tris_localserver_container.attrs['NetworkSettings']['IPAddress']
3336

3437
def run_client(self, image_name, cmd):
3538
''' Runs client and returns tuple (status_code, logs) '''
36-
c = self.d.containers.create(image=image_name, command=cmd)
37-
c.start()
39+
c = self.d.containers.run(image=image_name, detach=True, command=cmd)
3840
res = c.wait()
39-
ret = c.logs()
41+
ret = c.logs().decode('utf8')
4042
c.remove()
4143
return (res['StatusCode'], ret)
4244

4345
def run_server(self, image_name, cmd=None, ports=None, entrypoint=None):
4446
''' Starts server and returns docker container '''
45-
c = self.d.containers.create(image=image_name, detach=True, command=cmd, ports=ports, entrypoint=entrypoint)
46-
c.start()
47+
c = self.d.containers.run(image=image_name, auto_remove=True, detach=True, command=cmd, ports=ports, entrypoint=entrypoint)
4748
# TODO: maybe can be done better?
4849
time.sleep(3)
4950
return c
@@ -95,12 +96,16 @@ class InteropServer(object):
9596
@classmethod
9697
def setUpClass(self):
9798
self.d = Docker()
98-
self.server = self.d.run_server(self.TRIS_SERVER_NAME)
99+
try:
100+
self.server = self.d.run_server(self.TRIS_SERVER_NAME)
101+
except:
102+
self.d.close()
103+
raise
99104

100105
@classmethod
101106
def tearDownClass(self):
102107
self.server.kill()
103-
self.server.remove()
108+
self.d.close()
104109

105110
@property
106111
def server_ip(self):
@@ -193,15 +198,19 @@ class InteropClient(object):
193198
@classmethod
194199
def setUpClass(self):
195200
self.d = Docker()
196-
self.server = self.d.run_server(
197-
self.SERVER_NAME,
198-
ports={ '1443/tcp': 1443, '2443/tcp': 2443, '6443/tcp': 6443, '7443/tcp': 7443},
199-
entrypoint="/server.sh")
201+
try:
202+
self.server = self.d.run_server(
203+
self.SERVER_NAME,
204+
ports={ '1443/tcp': None, '2443/tcp': None, '6443/tcp': None, '7443/tcp': None},
205+
entrypoint="/server.sh")
206+
except:
207+
self.d.close()
208+
raise
200209

201210
@classmethod
202211
def tearDownClass(self):
203212
self.server.kill()
204-
self.server.remove()
213+
self.d.close()
205214

206215
@property
207216
def server_ip(self):

0 commit comments

Comments
 (0)