Skip to content

Commit 71e7103

Browse files
committed
Fix some tests failing with docker 1.1.2 and add a comment to recreate_container() explaining what it does.
Signed-off-by: Daniel Nephin <dnephin@gmail.com>
1 parent dbd7236 commit 71e7103

3 files changed

Lines changed: 20 additions & 15 deletions

File tree

fig/service.py

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -200,6 +200,10 @@ def recreate_containers(self, **override_options):
200200
return tuples
201201

202202
def recreate_container(self, container, **override_options):
203+
"""Recreate a container. An intermediate container is created so that
204+
the new container has the same name, while still supporting
205+
`volumes-from` the original container.
206+
"""
203207
try:
204208
container.stop()
205209
except APIError as e:

tests/integration/project_test.py

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -94,23 +94,22 @@ def test_project_up(self):
9494

9595
def test_project_up_recreates_containers(self):
9696
web = self.create_service('web')
97-
db = self.create_service('db', volumes=['/var/db'])
97+
db = self.create_service('db', volumes=['/etc'])
9898
project = Project('figtest', [web, db], self.client)
9999
project.start()
100100
self.assertEqual(len(project.containers()), 0)
101101

102102
project.up(['db'])
103103
self.assertEqual(len(project.containers()), 1)
104104
old_db_id = project.containers()[0].id
105-
db_volume_path = project.containers()[0].inspect()['Volumes']['/var/db']
105+
db_volume_path = project.containers()[0].get('Volumes./etc')
106106

107107
project.up()
108108
self.assertEqual(len(project.containers()), 2)
109109

110110
db_container = [c for c in project.containers() if 'db' in c.name][0]
111111
self.assertNotEqual(db_container.id, old_db_id)
112-
self.assertEqual(db_container.inspect()['Volumes']['/var/db'],
113-
db_volume_path)
112+
self.assertEqual(db_container.get('Volumes./etc'), db_volume_path)
114113

115114
project.kill()
116115
project.remove_stopped()

tests/integration/service_test.py

Lines changed: 13 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -107,14 +107,16 @@ def test_create_container_with_volumes_from(self):
107107
host_service = self.create_service('host', volumes_from=[volume_service, volume_container_2])
108108
host_container = host_service.create_container()
109109
host_service.start_container(host_container)
110-
self.assertIn(volume_container_1.id, host_container.inspect()['HostConfig']['VolumesFrom'])
111-
self.assertIn(volume_container_2.id, host_container.inspect()['HostConfig']['VolumesFrom'])
110+
self.assertIn(volume_container_1.id,
111+
host_container.get('HostConfig.VolumesFrom'))
112+
self.assertIn(volume_container_2.id,
113+
host_container.get('HostConfig.VolumesFrom'))
112114

113115
def test_recreate_containers(self):
114116
service = self.create_service(
115117
'db',
116118
environment={'FOO': '1'},
117-
volumes=['/var/db'],
119+
volumes=['/etc'],
118120
entrypoint=['sleep'],
119121
command=['300']
120122
)
@@ -124,7 +126,7 @@ def test_recreate_containers(self):
124126
self.assertIn('FOO=1', old_container.dictionary['Config']['Env'])
125127
self.assertEqual(old_container.name, 'figtest_db_1')
126128
service.start_container(old_container)
127-
volume_path = old_container.inspect()['Volumes']['/var/db']
129+
volume_path = old_container.inspect()['Volumes']['/etc']
128130

129131
num_containers_before = len(self.client.containers(all=True))
130132

@@ -140,7 +142,7 @@ def test_recreate_containers(self):
140142
self.assertEqual(new_container.dictionary['Config']['Cmd'], ['300'])
141143
self.assertIn('FOO=2', new_container.dictionary['Config']['Env'])
142144
self.assertEqual(new_container.name, 'figtest_db_1')
143-
self.assertEqual(new_container.inspect()['Volumes']['/var/db'], volume_path)
145+
self.assertEqual(new_container.inspect()['Volumes']['/etc'], volume_path)
144146
self.assertIn(intermediate_container.id, new_container.dictionary['HostConfig']['VolumesFrom'])
145147

146148
self.assertEqual(len(self.client.containers(all=True)), num_containers_before)
@@ -340,18 +342,18 @@ def test_scale_sets_ports(self):
340342

341343
def test_network_mode_none(self):
342344
service = self.create_service('web', net='none')
343-
container = service.start_container().inspect()
344-
self.assertEqual(container['HostConfig']['NetworkMode'], 'none')
345+
container = service.start_container()
346+
self.assertEqual(container.get('HostConfig.NetworkMode'), 'none')
345347

346348
def test_network_mode_bridged(self):
347349
service = self.create_service('web', net='bridge')
348-
container = service.start_container().inspect()
349-
self.assertEqual(container['HostConfig']['NetworkMode'], 'bridge')
350+
container = service.start_container()
351+
self.assertEqual(container.get('HostConfig.NetworkMode'), 'bridge')
350352

351353
def test_network_mode_host(self):
352354
service = self.create_service('web', net='host')
353-
container = service.start_container().inspect()
354-
self.assertEqual(container['HostConfig']['NetworkMode'], 'host')
355+
container = service.start_container()
356+
self.assertEqual(container.get('HostConfig.NetworkMode'), 'host')
355357

356358
def test_dns_single_value(self):
357359
service = self.create_service('web', dns='8.8.8.8')

0 commit comments

Comments
 (0)