1- #!/usr/bin/env python2
1+ #!/usr/bin/env python3
22
33import docker
44import unittest
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
1919RE_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