diff options
| author | Jenkins <jenkins@review.openstack.org> | 2017-06-06 04:48:46 +0000 |
|---|---|---|
| committer | Gerrit Code Review <review@openstack.org> | 2017-06-06 04:48:46 +0000 |
| commit | ee59989103d409da78460a2f961264db0da8ff4b (patch) | |
| tree | 6360aef987277a943f28d0b617ac3dce9a728214 /openstackclient/tests/functional/volume/base.py | |
| parent | c912717e42ce42b36125f4085c07baa04815e095 (diff) | |
| parent | eeb614c47759fa9a01e6d886ed07acceb8d9ff61 (diff) | |
| download | python-openstackclient-ee59989103d409da78460a2f961264db0da8ff4b.tar.gz | |
Merge "volume functest: ensure snapshots deleted when volume delete"
Diffstat (limited to 'openstackclient/tests/functional/volume/base.py')
| -rw-r--r-- | openstackclient/tests/functional/volume/base.py | 64 |
1 files changed, 64 insertions, 0 deletions
diff --git a/openstackclient/tests/functional/volume/base.py b/openstackclient/tests/functional/volume/base.py new file mode 100644 index 00000000..53032606 --- /dev/null +++ b/openstackclient/tests/functional/volume/base.py @@ -0,0 +1,64 @@ +# 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 json +import time + +from openstackclient.tests.functional import base + + +class BaseVolumeTests(base.TestCase): + """Base class for Volume functional tests. """ + + @classmethod + def wait_for_status(cls, check_type, check_name, desired_status, + wait=120, interval=5, failures=None): + current_status = "notset" + if failures is None: + failures = ['error'] + total_sleep = 0 + while total_sleep < wait: + output = json.loads(cls.openstack( + check_type + ' show -f json ' + check_name)) + current_status = output['status'] + if (current_status == desired_status): + print('{} {} now has status {}' + .format(check_type, check_name, current_status)) + return + print('Checking {} {} Waiting for {} current status: {}' + .format(check_type, check_name, + desired_status, current_status)) + if current_status in failures: + raise Exception( + 'Current status {} of {} {} is one of failures {}' + .format(current_status, check_type, check_name, failures)) + time.sleep(interval) + total_sleep += interval + cls.assertOutput(desired_status, current_status) + + @classmethod + def wait_for_delete(cls, check_type, check_name, wait=120, interval=5, + name_field=None): + total_sleep = 0 + name_field = name_field or 'Name' + while total_sleep < wait: + result = json.loads(cls.openstack(check_type + ' list -f json')) + names = [x[name_field] for x in result] + if check_name not in names: + print('{} {} is now deleted'.format(check_type, check_name)) + return + print('Checking {} {} Waiting for deleted' + .format(check_type, check_name)) + time.sleep(interval) + total_sleep += interval + raise Exception('Timeout: {} {} was not deleted in {} seconds' + .format(check_type, check_name, wait)) |
