From 9acb56eefb1c0eda737e828b0681c7fd6671e04f Mon Sep 17 00:00:00 2001 From: Cai Hui Date: Sat, 20 Oct 2018 02:20:04 -0400 Subject: [PATCH] Add freezer-tempest-client job Add freezer-tempest-client job and some freezerclient test cases. This job is a check/gate test job for python-freezerclinet project. Change-Id: I929290a42d40bdc51fc5063739df6b28b86159bb --- .zuul.yaml | 9 +++ .../tests/freezerclient/__init__.py | 0 .../tests/freezerclient/base.py | 81 +++++++++++++++++++ .../freezerclient/test_freezer_cmd_action.py | 33 ++++++++ .../freezerclient/test_freezer_cmd_backup.py | 34 ++++++++ .../freezerclient/test_freezer_cmd_client.py | 35 ++++++++ .../freezerclient/test_freezer_cmd_job.py | 35 ++++++++ .../freezerclient/test_freezer_cmd_session.py | 34 ++++++++ 8 files changed, 261 insertions(+) create mode 100644 freezer_tempest_plugin/tests/freezerclient/__init__.py create mode 100644 freezer_tempest_plugin/tests/freezerclient/base.py create mode 100644 freezer_tempest_plugin/tests/freezerclient/test_freezer_cmd_action.py create mode 100644 freezer_tempest_plugin/tests/freezerclient/test_freezer_cmd_backup.py create mode 100644 freezer_tempest_plugin/tests/freezerclient/test_freezer_cmd_client.py create mode 100644 freezer_tempest_plugin/tests/freezerclient/test_freezer_cmd_job.py create mode 100644 freezer_tempest_plugin/tests/freezerclient/test_freezer_cmd_session.py diff --git a/.zuul.yaml b/.zuul.yaml index fab48c4..ab51c8a 100644 --- a/.zuul.yaml +++ b/.zuul.yaml @@ -5,11 +5,13 @@ check: jobs: - freezer-tempest-basic + - freezer-tempest-client gate: queue: freezer jobs: - freezer-tempest-basic + - freezer-tempest-client - job: name: freezer-tempest-basic @@ -44,3 +46,10 @@ PYTHONUNBUFFERED: 'true' zuul_copy_output: /etc/hosts: logs + +- job: + name: freezer-tempest-client + parent: freezer-tempest-basic + voting: true + vars: + tempest_test_regex: freezer_tempest_plugin.tests.freezerclient diff --git a/freezer_tempest_plugin/tests/freezerclient/__init__.py b/freezer_tempest_plugin/tests/freezerclient/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/freezer_tempest_plugin/tests/freezerclient/base.py b/freezer_tempest_plugin/tests/freezerclient/base.py new file mode 100644 index 0000000..d00957c --- /dev/null +++ b/freezer_tempest_plugin/tests/freezerclient/base.py @@ -0,0 +1,81 @@ +# (C) opyright 2018 ZTE Corporation. +# +# 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 +import subprocess +from tempest import test + + +class BaseFreezerTest(test.BaseTestCase): + credentials = ['primary'] + + def __init__(self, *args, **kwargs): + + super(BaseFreezerTest, self).__init__(*args, **kwargs) + + # noinspection PyAttributeOutsideInit + def setUp(self): + super(BaseFreezerTest, self).setUp() + self.get_environ() + + def tearDown(self): + + super(BaseFreezerTest, self).tearDown() + + @classmethod + def get_auth_url(cls): + return cls.os_primary.auth_provider.auth_client.auth_url[:-len( + '/auth/tokens')] + + @classmethod + def setup_clients(cls): + super(BaseFreezerTest, cls).setup_clients() + cls.get_environ() + + @classmethod + def get_environ(cls): + os.environ['OS_PASSWORD'] = cls.os_primary.credentials.password + os.environ['OS_USERNAME'] = cls.os_primary.credentials.username + os.environ['OS_PROJECT_NAME'] = cls.os_primary.credentials.project_name + os.environ['OS_TENANT_NAME'] = cls.os_primary.credentials.project_name + os.environ['OS_PROJECT_DOMAIN_NAME'] = \ + cls.os_primary.credentials.project_domain_name + os.environ['OS_USER_DOMAIN_NAME'] = \ + cls.os_primary.credentials.user_domain_name + + # Allow developers to set OS_AUTH_URL when developing so that + # Keystone may be on a host other than localhost. + if 'OS_AUTH_URL' not in os.environ: + os.environ['OS_AUTH_URL'] = cls.get_auth_url() + + # Mac OS X uses gtar located in /usr/local/bin + os.environ['PATH'] = '/usr/local/bin:' + os.environ['PATH'] + + return os.environ + + def run_subprocess(self, sub_process_args, fail_message): + + proc = subprocess.Popen(sub_process_args, + stdout=subprocess.PIPE, + stderr=subprocess.PIPE, + env=self.environ, shell=False) + + out, err = proc.communicate() + + self.assertEqual(0, proc.returncode, + fail_message + " Output: {0}. " + "Error: {1}".format(out, err)) + + self.assertEqual('', err, + fail_message + " Output: {0}. " + "Error: {1}".format(out, err)) diff --git a/freezer_tempest_plugin/tests/freezerclient/test_freezer_cmd_action.py b/freezer_tempest_plugin/tests/freezerclient/test_freezer_cmd_action.py new file mode 100644 index 0000000..2404921 --- /dev/null +++ b/freezer_tempest_plugin/tests/freezerclient/test_freezer_cmd_action.py @@ -0,0 +1,33 @@ +# (C) opyright 2018 ZTE Corporation. +# +# 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. +from freezer_tempest_plugin.tests.freezerclient import base +from tempest.lib import decorators + + +class TestFreezerCmdAction(base.BaseFreezerTest): + def __init__(self, *args, **kwargs): + super(TestFreezerCmdAction, self).__init__(*args, **kwargs) + + def setUp(self): + super(TestFreezerCmdAction, self).setUp() + self.environ = super(TestFreezerCmdAction, self).get_environ() + + def tearDown(self): + super(TestFreezerCmdAction, self).tearDown() + + @decorators.attr(type="gate") + def test_freezer_cmd_actionlist(self): + args = ['freezer', 'action-list'] + + self.run_subprocess(args, "List all actions") diff --git a/freezer_tempest_plugin/tests/freezerclient/test_freezer_cmd_backup.py b/freezer_tempest_plugin/tests/freezerclient/test_freezer_cmd_backup.py new file mode 100644 index 0000000..d960fa3 --- /dev/null +++ b/freezer_tempest_plugin/tests/freezerclient/test_freezer_cmd_backup.py @@ -0,0 +1,34 @@ +# (C) Copyright 2018 ZTE corporation +# +# 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. +from tempest.lib import decorators + +from freezer_tempest_plugin.tests.freezerclient import base + + +class TestFreezerCmdBackup(base.BaseFreezerTest): + def __init__(self, *args, **kwargs): + super(TestFreezerCmdBackup, self).__init__(*args, **kwargs) + + def setUp(self): + super(TestFreezerCmdBackup, self).setUp() + self.environ = super(TestFreezerCmdBackup, self).get_environ() + + def tearDown(self): + super(TestFreezerCmdBackup, self).tearDown() + + @decorators.attr(type="gate") + def test_freezer_cmd_backuplist(self): + args = ['freezer', 'backup-list'] + + self.run_subprocess(args, " List all backups") diff --git a/freezer_tempest_plugin/tests/freezerclient/test_freezer_cmd_client.py b/freezer_tempest_plugin/tests/freezerclient/test_freezer_cmd_client.py new file mode 100644 index 0000000..95b669f --- /dev/null +++ b/freezer_tempest_plugin/tests/freezerclient/test_freezer_cmd_client.py @@ -0,0 +1,35 @@ +# (C) Copyright 2018 ZTE corporation. +# +# 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. + +from tempest.lib import decorators + +from freezer_tempest_plugin.tests.freezerclient import base + + +class TestFreezerCmdClient(base.BaseFreezerTest): + def __init__(self, *args, **kwargs): + super(TestFreezerCmdClient, self).__init__(*args, **kwargs) + + def setUp(self): + super(TestFreezerCmdClient, self).setUp() + self.environ = super(TestFreezerCmdClient, self).get_environ() + + def tearDown(self): + super(TestFreezerCmdClient, self).tearDown() + + @decorators.attr(type="gate") + def test_freezer_cmd_clientlist(self): + args = ['freezer', 'client-list'] + + self.run_subprocess(args, "List of clients registered in the api") diff --git a/freezer_tempest_plugin/tests/freezerclient/test_freezer_cmd_job.py b/freezer_tempest_plugin/tests/freezerclient/test_freezer_cmd_job.py new file mode 100644 index 0000000..f8d305e --- /dev/null +++ b/freezer_tempest_plugin/tests/freezerclient/test_freezer_cmd_job.py @@ -0,0 +1,35 @@ +# (C) Copyright 2018 ZTE Corporation. +# +# 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. + +from tempest.lib import decorators + +from freezer_tempest_plugin.tests.freezerclient import base + + +class TestFreezerCmdJob(base.BaseFreezerTest): + def __init__(self, *args, **kwargs): + super(TestFreezerCmdJob, self).__init__(*args, **kwargs) + + def setUp(self): + super(TestFreezerCmdJob, self).setUp() + self.environ = super(TestFreezerCmdJob, self).get_environ() + + def tearDown(self): + super(TestFreezerCmdJob, self).tearDown() + + @decorators.attr(type="gate") + def test_freezer_cmd_joblist(self): + args = ['freezer', 'job-list'] + + self.run_subprocess(args, "List all the jobs") diff --git a/freezer_tempest_plugin/tests/freezerclient/test_freezer_cmd_session.py b/freezer_tempest_plugin/tests/freezerclient/test_freezer_cmd_session.py new file mode 100644 index 0000000..3500493 --- /dev/null +++ b/freezer_tempest_plugin/tests/freezerclient/test_freezer_cmd_session.py @@ -0,0 +1,34 @@ +# (C) Copyright 2018 ZTE Corporation. +# +# 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. +from tempest.lib import decorators + +from freezer_tempest_plugin.tests.freezerclient import base + + +class TestFreezerCmdSession(base.BaseFreezerTest): + def __init__(self, *args, **kwargs): + super(TestFreezerCmdSession, self).__init__(*args, **kwargs) + + def setUp(self): + super(TestFreezerCmdSession, self).setUp() + self.environ = super(TestFreezerCmdSession, self).get_environ() + + def tearDown(self): + super(TestFreezerCmdSession, self).tearDown() + + @decorators.attr(type="gate") + def test_freezer_cmd_sessionlist(self): + args = ['freezer', 'session-list'] + + self.run_subprocess(args, "List all the sessions")