Files
python-cinderclient/cinderclient/tests/functional/base.py
John Griffith 4c5e5e4bba Add CLI read-only functional tests
First pass at functional tests in cinderclient.  This patch
just takes some of the basic CLI tests from tempest and moves
them into the cinderclient functional tests.

These are read-only tests, and just do simple field checks
on the tables generated by the basic list commands.

Note: to run use "tox -efunctional", this requires that you
have a full cinderclient env and credentials are set. You may
be either running this locally (say in a devstack env) or
you may have a remote cloud handy that you can just source the
credentials for and run it that way.

Change-Id: I2f09a63be265d6a74cb103d80579068b9ab66bf4
2015-05-04 21:51:31 -06:00

57 lines
1.9 KiB
Python

# Licensed under the Apache License, Version 2.0 (the "License"); you may
# not use this file except in compliance with the License. You may obtain
# a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
# License for the specific language governing permissions and limitations
# under the License.
import os
from tempest_lib.cli import base
from tempest_lib.cli import output_parser
class ClientTestBase(base.ClientTestBase):
"""Cinder base class, issues calls to cinderclient.
"""
def setUp(self):
super(ClientTestBase, self).setUp()
self.clients = self._get_clients()
self.parser = output_parser
def _get_clients(self):
cli_dir = os.environ.get(
'OS_CINDERCLIENT_EXEC_DIR',
os.path.join(os.path.abspath('.'), '.tox/functional/bin'))
return base.CLIClient(
username=os.environ.get('OS_USERNAME'),
password=os.environ.get('OS_PASSWORD'),
tenant_name=os.environ.get('OS_TENANT_NAME'),
uri=os.environ.get('OS_AUTH_URL'),
cli_dir=cli_dir)
def cinder(self, *args, **kwargs):
return self.clients.cinder(*args,
**kwargs)
def assertTableStruct(self, items, field_names):
"""Verify that all items has keys listed in field_names.
:param items: items to assert are field names in the output table
:type items: list
:param field_names: field names from the output table of the cmd
:type field_names: list
"""
# Strip off the --- if present
for item in items:
for field in field_names:
self.assertIn(field, item)