Merge "Add more tempest tests for container run"
This commit is contained in:
commit
9952e0ea9b
@ -13,7 +13,7 @@
|
||||
from six.moves.urllib import parse
|
||||
from tempest import config
|
||||
from tempest.lib.common import rest_client
|
||||
from tempest.lib.services.compute import keypairs_client
|
||||
from tempest.lib.services.image.v2 import images_client
|
||||
from tempest import manager
|
||||
|
||||
from zun.container.docker import utils as docker_utils
|
||||
@ -30,9 +30,9 @@ class Manager(manager.Manager):
|
||||
def __init__(self, credentials=None, service=None):
|
||||
super(Manager, self).__init__(credentials=credentials)
|
||||
|
||||
params = {'service': CONF.container_management.catalog_type,
|
||||
params = {'service': 'image',
|
||||
'region': CONF.identity.region}
|
||||
self.keypairs_client = keypairs_client.KeyPairsClient(
|
||||
self.images_client = images_client.ImagesClient(
|
||||
self.auth_provider, **params)
|
||||
self.container_client = ZunClient(self.auth_provider)
|
||||
|
||||
@ -203,3 +203,15 @@ class DockerClient(object):
|
||||
else:
|
||||
return False
|
||||
utils.wait_for_condition(is_pid_changed)
|
||||
|
||||
def pull_image(self, repo, tag=None):
|
||||
with docker_utils.docker_client() as docker:
|
||||
docker.pull(repo, tag=tag)
|
||||
|
||||
def get_image(self, name):
|
||||
with docker_utils.docker_client() as docker:
|
||||
return docker.get_image(name)
|
||||
|
||||
def delete_image(self, name):
|
||||
with docker_utils.docker_client() as docker:
|
||||
return docker.remove_image(name)
|
||||
|
@ -52,9 +52,15 @@ def container_data(**kwargs):
|
||||
'name': data_utils.rand_name('container'),
|
||||
'image': 'cirros:latest',
|
||||
'command': 'sleep 10000',
|
||||
'cpu': 0.1,
|
||||
'memory': '100',
|
||||
'environment': {},
|
||||
'image_driver': 'docker'
|
||||
'labels': {},
|
||||
'image_driver': 'docker',
|
||||
'image_pull_policy': 'always',
|
||||
'restart_policy': {'Name': 'no'},
|
||||
'workdir': '/',
|
||||
'interactive': False
|
||||
}
|
||||
|
||||
data.update(kwargs)
|
||||
|
@ -34,6 +34,7 @@ class TestContainer(base.BaseZunTest):
|
||||
super(TestContainer, cls).setup_clients()
|
||||
cls.container_client = cls.os.container_client
|
||||
cls.docker_client = clients.DockerClient()
|
||||
cls.images_client = cls.os.images_client
|
||||
|
||||
@classmethod
|
||||
def resource_setup(cls):
|
||||
@ -77,6 +78,67 @@ class TestContainer(base.BaseZunTest):
|
||||
def test_run_container(self):
|
||||
self._run_container()
|
||||
|
||||
@decorators.idempotent_id('c32f93e3-da88-4c13-be38-25d2e662a28e')
|
||||
def test_run_container_with_image_driver_glance(self):
|
||||
image = None
|
||||
try:
|
||||
self.docker_client.pull_image('cirros')
|
||||
image_data = self.docker_client.get_image('cirros')
|
||||
image = self.images_client.create_image(
|
||||
name='cirros', disk_format='raw', container_format='docker')
|
||||
self.images_client.store_image_file(image['id'], image_data)
|
||||
# delete the local image that was previously pulled down
|
||||
self.docker_client.delete_image('cirros')
|
||||
|
||||
_, model = self._run_container(
|
||||
image='cirros', image_driver='glance')
|
||||
finally:
|
||||
if image:
|
||||
try:
|
||||
self.images_client.delete_image(image['id'])
|
||||
except Exception:
|
||||
pass
|
||||
|
||||
@decorators.idempotent_id('b70bedbc-5ba2-400c-8f5f-0cf05ca17151')
|
||||
def test_run_container_with_environment(self):
|
||||
_, model = self._run_container(environment={
|
||||
'key1': 'env1', 'key2': 'env2'})
|
||||
|
||||
container = self.docker_client.get_container(model.uuid)
|
||||
env = container.get('Config').get('Env')
|
||||
self.assertTrue('key1=env1', env)
|
||||
self.assertTrue('key2=env2', env)
|
||||
|
||||
@decorators.idempotent_id('0e59d549-58ff-440f-8704-10e223c31cbc')
|
||||
def test_run_container_with_labels(self):
|
||||
_, model = self._run_container(labels={
|
||||
'key1': 'label1', 'key2': 'label2'})
|
||||
|
||||
container = self.docker_client.get_container(model.uuid)
|
||||
labels = container.get('Config').get('Labels')
|
||||
self.assertTrue('key1=label1', labels)
|
||||
self.assertTrue('key2=label2', labels)
|
||||
|
||||
@decorators.idempotent_id('9fc7fec0-e1a9-4f65-a5a6-dba425c1607c')
|
||||
def test_run_container_with_restart_policy(self):
|
||||
_, model = self._run_container(restart_policy={
|
||||
'Name': 'on-failure', 'MaximumRetryCount': 2})
|
||||
|
||||
container = self.docker_client.get_container(model.uuid)
|
||||
policy = container.get('HostConfig').get('RestartPolicy')
|
||||
self.assertEqual('on-failure', policy['Name'])
|
||||
self.assertTrue(2, policy['MaximumRetryCount'])
|
||||
|
||||
@decorators.idempotent_id('58585a4f-cdce-4dbd-9741-4416d1098f94')
|
||||
def test_run_container_with_interactive(self):
|
||||
_, model = self._run_container(interactive=True)
|
||||
|
||||
container = self.docker_client.get_container(model.uuid)
|
||||
tty = container.get('Config').get('Tty')
|
||||
stdin_open = container.get('Config').get('OpenStdin')
|
||||
self.assertIs(True, tty)
|
||||
self.assertIs(True, stdin_open)
|
||||
|
||||
@decorators.idempotent_id('3fa024ef-aba1-48fe-9682-0d6b7854faa3')
|
||||
def test_start_stop_container(self):
|
||||
_, model = self._run_container()
|
||||
|
Loading…
x
Reference in New Issue
Block a user