From 058dbb30971131ff382aed801873a5731973a826 Mon Sep 17 00:00:00 2001 From: madhusudhan-kandadai Date: Wed, 17 Feb 2016 14:53:56 -0800 Subject: [PATCH] Octavia: Implement Tempest Plugin This patch discovers Tempest tests via tempest plugin. Also included is are the config opt parameters needed for testing. Co-Authored-By: Franklin Naval Change-Id: I5c99fc5aa3caeb6bd1a9c90c27d956cf0372180b --- octavia/tests/tempest/README.rst | 6 +++++ octavia/tests/tempest/__init__.py | 0 octavia/tests/tempest/config.py | 41 +++++++++++++++++++++++++++++++ octavia/tests/tempest/plugin.py | 41 +++++++++++++++++++++++++++++++ setup.cfg | 2 ++ 5 files changed, 90 insertions(+) create mode 100644 octavia/tests/tempest/README.rst create mode 100644 octavia/tests/tempest/__init__.py create mode 100644 octavia/tests/tempest/config.py create mode 100644 octavia/tests/tempest/plugin.py diff --git a/octavia/tests/tempest/README.rst b/octavia/tests/tempest/README.rst new file mode 100644 index 0000000000..bad9179b09 --- /dev/null +++ b/octavia/tests/tempest/README.rst @@ -0,0 +1,6 @@ +=============================================== +Tempest Integration of octavia +=============================================== + +This directory contains Tempest tests to cover the octavia project. + diff --git a/octavia/tests/tempest/__init__.py b/octavia/tests/tempest/__init__.py new file mode 100644 index 0000000000..e69de29bb2 diff --git a/octavia/tests/tempest/config.py b/octavia/tests/tempest/config.py new file mode 100644 index 0000000000..a5b4bc79eb --- /dev/null +++ b/octavia/tests/tempest/config.py @@ -0,0 +1,41 @@ +# Copyright 2016 Rackspace Inc. +# +# 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 oslo_config import cfg + +""" + For running Octavia tests, it is assumed that the following option is + defined in the [service_available] section of etc/tempest.conf + octavia = True +""" +service_option = cfg.BoolOpt('octavia', + default=False, + help="Whether or not Octavia is expected to be " + "available"), + +octavia_group = cfg.OptGroup(name='octavia', title='Octavia Service') + +OctaviaGroup = [ + cfg.StrOpt('catalog_type', + default='network', + help='Catalog type of the Octavia service.'), + cfg.IntOpt('lb_build_interval', + default=15, + help='Time in seconds between build status checks.'), + cfg.IntOpt('lb_build_timeout', + default=900, + help='Timeout in seconds to wait for a ' + 'load balancer to build.'), +] diff --git a/octavia/tests/tempest/plugin.py b/octavia/tests/tempest/plugin.py new file mode 100644 index 0000000000..6b02b42b83 --- /dev/null +++ b/octavia/tests/tempest/plugin.py @@ -0,0 +1,41 @@ +# Copyright 2016 Hewlett Packard Enterprise Development Company +# Copyright 2016 Rackspace Inc. +# All Rights Reserved. +# +# 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 octavia.tests.tempest import config as octavia_config + +from tempest.test_discover import plugins + + +class OctaviaTempestPlugin(plugins.TempestPlugin): + + def load_tests(self): + base_path = os.path.split(os.path.dirname( + os.path.abspath(__file__)))[0] + test_dir = "octavia/tests/tempest/v1" + full_test_dir = os.path.join(base_path, test_dir) + return full_test_dir, base_path + + def register_opts(self, conf): + conf.register_group(octavia_config.octavia_group) + conf.register_opts(octavia_config.OctaviaGroup, group='octavia') + conf.register_opts(octavia_config.service_option, + group='service_available') + + def get_opt_lists(self): + return [('octavia', octavia_config.OctaviaGroup), + ('service_available', [octavia_config.service_option])] diff --git a/setup.cfg b/setup.cfg index 908a1f4782..6c00cffd65 100644 --- a/setup.cfg +++ b/setup.cfg @@ -73,3 +73,5 @@ octavia.plugins = hot_plug_plugin = octavia.controller.worker.controller_worker:ControllerWorker oslo.config.opts = octavia = octavia.opts:list_opts +tempest.test_plugins = + octavia = octavia.tests.tempest.plugin:OctaviaTempestPlugin