Merge "Add test for exposing container ports"
This commit is contained in:
commit
841c7d3793
@ -62,7 +62,6 @@ def container_data(default_data=None, **kwargs):
|
|||||||
'restart_policy': {'Name': 'no'},
|
'restart_policy': {'Name': 'no'},
|
||||||
'workdir': '/',
|
'workdir': '/',
|
||||||
'interactive': False,
|
'interactive': False,
|
||||||
'security_groups': ['default'],
|
|
||||||
}
|
}
|
||||||
|
|
||||||
default_data.update(kwargs)
|
default_data.update(kwargs)
|
||||||
|
@ -329,7 +329,6 @@ class TestContainer(base.BaseZunTest):
|
|||||||
@utils.requires_microversion('1.20')
|
@utils.requires_microversion('1.20')
|
||||||
def test_run_container_without_security_groups(self):
|
def test_run_container_without_security_groups(self):
|
||||||
gen_model = datagen.container_data()
|
gen_model = datagen.container_data()
|
||||||
delattr(gen_model, 'security_groups')
|
|
||||||
_, model = self._run_container(gen_model=gen_model)
|
_, model = self._run_container(gen_model=gen_model)
|
||||||
sgs = self._get_all_security_groups(model)
|
sgs = self._get_all_security_groups(model)
|
||||||
self.assertEqual(1, len(sgs))
|
self.assertEqual(1, len(sgs))
|
||||||
@ -444,6 +443,48 @@ class TestContainer(base.BaseZunTest):
|
|||||||
self.assertEqual(200, resp.status)
|
self.assertEqual(200, resp.status)
|
||||||
self.assertTrue('hello' in encodeutils.safe_decode(body))
|
self.assertTrue('hello' in encodeutils.safe_decode(body))
|
||||||
|
|
||||||
|
@decorators.idempotent_id('df7b2518-f779-43f6-b188-28cf3595e251')
|
||||||
|
@utils.requires_microversion('1.24')
|
||||||
|
def test_container_expose_port(self):
|
||||||
|
gen_model = datagen.container_data({'image': 'nginx',
|
||||||
|
'exposed_ports': {"80/tcp": {}}})
|
||||||
|
_, model = self._run_container(gen_model=gen_model)
|
||||||
|
# assert security group is created with port 80 open
|
||||||
|
secgroups = model.security_groups
|
||||||
|
self.assertEqual(1, len(secgroups))
|
||||||
|
secgroup = self.sgs_client.show_security_group(secgroups[0])
|
||||||
|
self.assertNotEqual('default', secgroup['security_group']['name'])
|
||||||
|
rules = secgroup['security_group']['security_group_rules']
|
||||||
|
for rule in rules:
|
||||||
|
if (rule['protocol'] == 'tcp' and rule['port_range_min'] == 80 and
|
||||||
|
rule['port_range_max'] == 80):
|
||||||
|
break
|
||||||
|
else:
|
||||||
|
self.fail('Security group doesnot have rules for opening the port')
|
||||||
|
|
||||||
|
# access the container port
|
||||||
|
ip_address = None
|
||||||
|
for net_id in model.addresses:
|
||||||
|
for address in model.addresses[net_id]:
|
||||||
|
ip_address = address['addr']
|
||||||
|
break
|
||||||
|
self.assertIsNotNone(ip_address)
|
||||||
|
_, m = self._run_container(desired_state='Stopped',
|
||||||
|
command=['curl', ip_address])
|
||||||
|
resp, body = self.container_client.logs_container(m.uuid)
|
||||||
|
self.assertEqual(200, resp.status)
|
||||||
|
self.assertTrue(
|
||||||
|
'If you see this page, the nginx web server is successfully '
|
||||||
|
'installed' in encodeutils.safe_decode(body))
|
||||||
|
|
||||||
|
# delete the container and ensure security group is clean up
|
||||||
|
self.container_client.delete_container(
|
||||||
|
model.uuid, params={'stop': True})
|
||||||
|
self.container_client.ensure_container_deleted(model.uuid)
|
||||||
|
self.assertRaises(lib_exc.NotFound,
|
||||||
|
self.sgs_client.show_security_group,
|
||||||
|
secgroup['security_group']['id'])
|
||||||
|
|
||||||
@decorators.idempotent_id('e49231b2-b095-40d3-9b54-33bb1b371cbe')
|
@decorators.idempotent_id('e49231b2-b095-40d3-9b54-33bb1b371cbe')
|
||||||
@utils.requires_microversion('1.20')
|
@utils.requires_microversion('1.20')
|
||||||
def test_run_container_with_cinder_volume_dynamic_created(self):
|
def test_run_container_with_cinder_volume_dynamic_created(self):
|
||||||
@ -724,7 +765,8 @@ class TestContainer(base.BaseZunTest):
|
|||||||
self.assertEqual('Created', self._get_container_state(model))
|
self.assertEqual('Created', self._get_container_state(model))
|
||||||
return resp, model
|
return resp, model
|
||||||
|
|
||||||
def _run_container(self, gen_model=None, **kwargs):
|
def _run_container(self, gen_model=None, desired_state='Running',
|
||||||
|
**kwargs):
|
||||||
if gen_model is None:
|
if gen_model is None:
|
||||||
gen_model = datagen.container_data(**kwargs)
|
gen_model = datagen.container_data(**kwargs)
|
||||||
resp, model = self.container_client.run_container(gen_model)
|
resp, model = self.container_client.run_container(gen_model)
|
||||||
@ -732,12 +774,12 @@ class TestContainer(base.BaseZunTest):
|
|||||||
self.assertEqual(202, resp.status)
|
self.assertEqual(202, resp.status)
|
||||||
# Wait for container to started
|
# Wait for container to started
|
||||||
self.container_client.ensure_container_in_desired_state(
|
self.container_client.ensure_container_in_desired_state(
|
||||||
model.uuid, 'Running')
|
model.uuid, desired_state)
|
||||||
|
|
||||||
# Assert the container is started
|
# Assert the container is started
|
||||||
resp, model = self.container_client.get_container(model.uuid)
|
resp, model = self.container_client.get_container(model.uuid)
|
||||||
self.assertEqual('Running', model.status)
|
self.assertEqual(desired_state, model.status)
|
||||||
self.assertEqual('Running', self._get_container_state(model))
|
self.assertEqual(desired_state, self._get_container_state(model))
|
||||||
return resp, model
|
return resp, model
|
||||||
|
|
||||||
def _get_container_state(self, model):
|
def _get_container_state(self, model):
|
||||||
|
Loading…
Reference in New Issue
Block a user