10
10
from .testcases import DockerClientTestCase
11
11
12
12
13
+ def create_and_start_container (service , ** override_options ):
14
+ container = service .create_container (** override_options )
15
+ return service .start_container (container , ** override_options )
16
+
17
+
13
18
class ServiceTest (DockerClientTestCase ):
14
19
def test_containers (self ):
15
20
foo = self .create_service ('foo' )
16
21
bar = self .create_service ('bar' )
17
22
18
- foo . start_container ( )
23
+ create_and_start_container ( foo )
19
24
20
25
self .assertEqual (len (foo .containers ()), 1 )
21
26
self .assertEqual (foo .containers ()[0 ].name , 'figtest_foo_1' )
22
27
self .assertEqual (len (bar .containers ()), 0 )
23
28
24
- bar . start_container ( )
25
- bar . start_container ( )
29
+ create_and_start_container ( bar )
30
+ create_and_start_container ( bar )
26
31
27
32
self .assertEqual (len (foo .containers ()), 1 )
28
33
self .assertEqual (len (bar .containers ()), 2 )
@@ -39,7 +44,7 @@ def test_containers_one_off(self):
39
44
40
45
def test_project_is_added_to_container_name (self ):
41
46
service = self .create_service ('web' )
42
- service . start_container ( )
47
+ create_and_start_container ( service )
43
48
self .assertEqual (service .containers ()[0 ].name , 'figtest_web_1' )
44
49
45
50
def test_start_stop (self ):
@@ -65,7 +70,7 @@ def test_start_stop(self):
65
70
def test_kill_remove (self ):
66
71
service = self .create_service ('scalingtest' )
67
72
68
- service . start_container ( )
73
+ create_and_start_container ( service )
69
74
self .assertEqual (len (service .containers ()), 1 )
70
75
71
76
service .remove_stopped ()
@@ -177,21 +182,21 @@ def test_recreate_containers_when_containers_are_stopped(self):
177
182
178
183
def test_start_container_passes_through_options (self ):
179
184
db = self .create_service ('db' )
180
- db . start_container ( environment = {'FOO' : 'BAR' })
185
+ create_and_start_container ( db , environment = {'FOO' : 'BAR' })
181
186
self .assertEqual (db .containers ()[0 ].environment ['FOO' ], 'BAR' )
182
187
183
188
def test_start_container_inherits_options_from_constructor (self ):
184
189
db = self .create_service ('db' , environment = {'FOO' : 'BAR' })
185
- db . start_container ( )
190
+ create_and_start_container ( db )
186
191
self .assertEqual (db .containers ()[0 ].environment ['FOO' ], 'BAR' )
187
192
188
193
def test_start_container_creates_links (self ):
189
194
db = self .create_service ('db' )
190
195
web = self .create_service ('web' , links = [(db , None )])
191
196
192
- db . start_container ( )
193
- db . start_container ( )
194
- web . start_container ( )
197
+ create_and_start_container ( db )
198
+ create_and_start_container ( db )
199
+ create_and_start_container ( web )
195
200
196
201
self .assertEqual (
197
202
set (web .containers ()[0 ].links ()),
@@ -206,9 +211,9 @@ def test_start_container_creates_links_with_names(self):
206
211
db = self .create_service ('db' )
207
212
web = self .create_service ('web' , links = [(db , 'custom_link_name' )])
208
213
209
- db . start_container ( )
210
- db . start_container ( )
211
- web . start_container ( )
214
+ create_and_start_container ( db )
215
+ create_and_start_container ( db )
216
+ create_and_start_container ( web )
212
217
213
218
self .assertEqual (
214
219
set (web .containers ()[0 ].links ()),
@@ -222,19 +227,19 @@ def test_start_container_creates_links_with_names(self):
222
227
def test_start_normal_container_does_not_create_links_to_its_own_service (self ):
223
228
db = self .create_service ('db' )
224
229
225
- db . start_container ( )
226
- db . start_container ( )
230
+ create_and_start_container ( db )
231
+ create_and_start_container ( db )
227
232
228
- c = db . start_container ( )
233
+ c = create_and_start_container ( db )
229
234
self .assertEqual (set (c .links ()), set ([]))
230
235
231
236
def test_start_one_off_container_creates_links_to_its_own_service (self ):
232
237
db = self .create_service ('db' )
233
238
234
- db . start_container ( )
235
- db . start_container ( )
239
+ create_and_start_container ( db )
240
+ create_and_start_container ( db )
236
241
237
- c = db . start_container ( one_off = True )
242
+ c = create_and_start_container ( db , one_off = True )
238
243
239
244
self .assertEqual (
240
245
set (c .links ()),
@@ -252,7 +257,7 @@ def test_start_container_builds_images(self):
252
257
build = 'tests/fixtures/simple-dockerfile' ,
253
258
project = 'figtest' ,
254
259
)
255
- container = service . start_container ( )
260
+ container = create_and_start_container ( service )
256
261
container .wait ()
257
262
self .assertIn ('success' , container .logs ())
258
263
self .assertEqual (len (self .client .images (name = 'figtest_test' )), 1 )
@@ -265,45 +270,45 @@ def test_start_container_uses_tagged_image_if_it_exists(self):
265
270
build = 'this/does/not/exist/and/will/throw/error' ,
266
271
project = 'figtest' ,
267
272
)
268
- container = service . start_container ( )
273
+ container = create_and_start_container ( service )
269
274
container .wait ()
270
275
self .assertIn ('success' , container .logs ())
271
276
272
277
def test_start_container_creates_ports (self ):
273
278
service = self .create_service ('web' , ports = [8000 ])
274
- container = service . start_container ( ).inspect ()
279
+ container = create_and_start_container ( service ).inspect ()
275
280
self .assertEqual (list (container ['NetworkSettings' ]['Ports' ].keys ()), ['8000/tcp' ])
276
281
self .assertNotEqual (container ['NetworkSettings' ]['Ports' ]['8000/tcp' ][0 ]['HostPort' ], '8000' )
277
282
278
283
def test_start_container_stays_unpriviliged (self ):
279
284
service = self .create_service ('web' )
280
- container = service . start_container ( ).inspect ()
285
+ container = create_and_start_container ( service ).inspect ()
281
286
self .assertEqual (container ['HostConfig' ]['Privileged' ], False )
282
287
283
288
def test_start_container_becomes_priviliged (self ):
284
289
service = self .create_service ('web' , privileged = True )
285
- container = service . start_container ( ).inspect ()
290
+ container = create_and_start_container ( service ).inspect ()
286
291
self .assertEqual (container ['HostConfig' ]['Privileged' ], True )
287
292
288
293
def test_expose_does_not_publish_ports (self ):
289
294
service = self .create_service ('web' , expose = [8000 ])
290
- container = service . start_container ( ).inspect ()
295
+ container = create_and_start_container ( service ).inspect ()
291
296
self .assertEqual (container ['NetworkSettings' ]['Ports' ], {'8000/tcp' : None })
292
297
293
298
def test_start_container_creates_port_with_explicit_protocol (self ):
294
299
service = self .create_service ('web' , ports = ['8000/udp' ])
295
- container = service . start_container ( ).inspect ()
300
+ container = create_and_start_container ( service ).inspect ()
296
301
self .assertEqual (list (container ['NetworkSettings' ]['Ports' ].keys ()), ['8000/udp' ])
297
302
298
303
def test_start_container_creates_fixed_external_ports (self ):
299
304
service = self .create_service ('web' , ports = ['8000:8000' ])
300
- container = service . start_container ( ).inspect ()
305
+ container = create_and_start_container ( service ).inspect ()
301
306
self .assertIn ('8000/tcp' , container ['NetworkSettings' ]['Ports' ])
302
307
self .assertEqual (container ['NetworkSettings' ]['Ports' ]['8000/tcp' ][0 ]['HostPort' ], '8000' )
303
308
304
309
def test_start_container_creates_fixed_external_ports_when_it_is_different_to_internal_port (self ):
305
310
service = self .create_service ('web' , ports = ['8001:8000' ])
306
- container = service . start_container ( ).inspect ()
311
+ container = create_and_start_container ( service ).inspect ()
307
312
self .assertIn ('8000/tcp' , container ['NetworkSettings' ]['Ports' ])
308
313
self .assertEqual (container ['NetworkSettings' ]['Ports' ]['8000/tcp' ][0 ]['HostPort' ], '8001' )
309
314
@@ -312,7 +317,7 @@ def test_port_with_explicit_interface(self):
312
317
'127.0.0.1:8001:8000' ,
313
318
'0.0.0.0:9001:9000/udp' ,
314
319
])
315
- container = service . start_container ( ).inspect ()
320
+ container = create_and_start_container ( service ).inspect ()
316
321
self .assertEqual (container ['NetworkSettings' ]['Ports' ], {
317
322
'8000/tcp' : [
318
323
{
@@ -361,28 +366,28 @@ def test_scale_sets_ports(self):
361
366
362
367
def test_network_mode_none (self ):
363
368
service = self .create_service ('web' , net = 'none' )
364
- container = service . start_container ( )
369
+ container = create_and_start_container ( service )
365
370
self .assertEqual (container .get ('HostConfig.NetworkMode' ), 'none' )
366
371
367
372
def test_network_mode_bridged (self ):
368
373
service = self .create_service ('web' , net = 'bridge' )
369
- container = service . start_container ( )
374
+ container = create_and_start_container ( service )
370
375
self .assertEqual (container .get ('HostConfig.NetworkMode' ), 'bridge' )
371
376
372
377
def test_network_mode_host (self ):
373
378
service = self .create_service ('web' , net = 'host' )
374
- container = service . start_container ( )
379
+ container = create_and_start_container ( service )
375
380
self .assertEqual (container .get ('HostConfig.NetworkMode' ), 'host' )
376
381
377
382
def test_dns_single_value (self ):
378
383
service = self .create_service ('web' , dns = '8.8.8.8' )
379
- container = service . start_container (). inspect ( )
380
- self .assertEqual (container [ 'HostConfig' ][ ' Dns'] , ['8.8.8.8' ])
384
+ container = create_and_start_container ( service )
385
+ self .assertEqual (container . get ( 'HostConfig. Dns' ) , ['8.8.8.8' ])
381
386
382
387
def test_dns_list (self ):
383
388
service = self .create_service ('web' , dns = ['8.8.8.8' , '9.9.9.9' ])
384
- container = service . start_container (). inspect ( )
385
- self .assertEqual (container [ 'HostConfig' ][ ' Dns'] , ['8.8.8.8' , '9.9.9.9' ])
389
+ container = create_and_start_container ( service )
390
+ self .assertEqual (container . get ( 'HostConfig. Dns' ) , ['8.8.8.8' , '9.9.9.9' ])
386
391
387
392
def test_restart_always_value (self ):
388
393
service = self .create_service ('web' , restart = 'always' )
@@ -417,12 +422,12 @@ def test_dns_search_list(self):
417
422
418
423
def test_working_dir_param (self ):
419
424
service = self .create_service ('container' , working_dir = '/working/dir/sample' )
420
- container = service .create_container (). inspect ()
421
- self .assertEqual (container [ 'Config' ][ ' WorkingDir'] , '/working/dir/sample' )
425
+ container = service .create_container ()
426
+ self .assertEqual (container . get ( 'Config. WorkingDir' ) , '/working/dir/sample' )
422
427
423
428
def test_split_env (self ):
424
429
service = self .create_service ('web' , environment = ['NORMAL=F1' , 'CONTAINS_EQUALS=F=2' , 'TRAILING_EQUALS=' ])
425
- env = service . start_container ( ).environment
430
+ env = create_and_start_container ( service ).environment
426
431
for k ,v in {'NORMAL' : 'F1' , 'CONTAINS_EQUALS' : 'F=2' , 'TRAILING_EQUALS' : '' }.iteritems ():
427
432
self .assertEqual (env [k ], v )
428
433
@@ -438,7 +443,7 @@ def test_resolve_env(self):
438
443
os .environ ['FILE_DEF_EMPTY' ] = 'E2'
439
444
os .environ ['ENV_DEF' ] = 'E3'
440
445
try :
441
- env = service . start_container ( ).environment
446
+ env = create_and_start_container ( service ).environment
442
447
for k ,v in {'FILE_DEF' : 'F1' , 'FILE_DEF_EMPTY' : '' , 'ENV_DEF' : 'E3' , 'NO_DEF' : '' }.iteritems ():
443
448
self .assertEqual (env [k ], v )
444
449
finally :
0 commit comments