Use tempest plugin interface
Make use of the Tempest plugin interface instead of copying Neutron files into Tempest. This will remove the burden to port Neutron tests onto Tempest master recurrently. It uses neutron/tests/tempest/ as new top folder for all Tempest tests. It follows the model of Heat [1]. [1]: https://github.com/openstack/heat/tree/master/heat_integrationtests Partially implements bp external-plugin-interface Change-Id: Ia233aa162746845f6ae08a8157dcd242dcd58eab
This commit is contained in:
parent
2397fd0d5c
commit
c56918027a
@ -283,7 +283,7 @@ the hypervisor appropriately.
|
||||
API Tests
|
||||
~~~~~~~~~
|
||||
|
||||
API tests (neutron/tests/api/) are intended to ensure the function
|
||||
API tests (neutron/tests/tempest/api/) are intended to ensure the function
|
||||
and stability of the Neutron API. As much as possible, changes to
|
||||
this path should not be made at the same time as changes to the code
|
||||
to limit the potential for introducing backwards-incompatible changes,
|
||||
@ -297,7 +297,7 @@ be made about implementation. Only the contract defined by Neutron's REST API
|
||||
should be validated, and all interaction with the daemon should be via
|
||||
a REST client.
|
||||
|
||||
neutron/tests/api was copied from the Tempest project. At the time, there was
|
||||
neutron/tests/tempest/api was copied from the Tempest project. At the time, there was
|
||||
an overlap of tests between the Tempest and Neutron repositories. This overlap
|
||||
was then eliminated by carving out a subset of resources that belong to
|
||||
Tempest, with the rest in Neutron.
|
||||
@ -525,6 +525,11 @@ TEMPEST_CONFIG_DIR before invoking tox: ::
|
||||
export TEMPEST_CONFIG_DIR=[path to dir containing tempest.conf]
|
||||
tox -e api
|
||||
|
||||
You may also utilize Neutron's Tempest plugin by going to the Tempest directory
|
||||
and executing:
|
||||
|
||||
tox -e all-plugin neutron
|
||||
|
||||
|
||||
Running Individual Tests
|
||||
~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
|
@ -412,4 +412,4 @@ API tests
|
||||
|
||||
API tests for basic CRUD operations for ports, networks, policies, and rules were added in:
|
||||
|
||||
* neutron.tests.api.test_qos
|
||||
* neutron.tests.tempest.api.test_qos
|
||||
|
@ -3,8 +3,8 @@ WARNING
|
||||
|
||||
The files under this path were copied from tempest as part of the move
|
||||
of the api tests, and they will be removed as required over time to
|
||||
minimize the depedency on the tempest testing framework.
|
||||
While it exists, only neutron.tests.api and neutron.tests.retargetable should
|
||||
be importing files from this path. neutron.tests.tempest.config uses
|
||||
minimize the dependency on the tempest testing framework.
|
||||
While it exists, only neutron.tests.tempest.api and neutron.tests.retargetable
|
||||
should be importing files from this path. neutron.tests.tempest.config uses
|
||||
the global cfg.CONF instance and importing it outside of the api tests
|
||||
has the potential to break Neutron's use of cfg.CONF.
|
||||
|
@ -15,7 +15,7 @@
|
||||
from neutron.tests.tempest.common import tempest_fixtures
|
||||
from tempest import test
|
||||
|
||||
from neutron.tests.api import base
|
||||
from neutron.tests.tempest.api import base
|
||||
|
||||
|
||||
class AgentManagementTestJSON(base.BaseAdminNetworkTest):
|
@ -14,7 +14,7 @@
|
||||
|
||||
from tempest import test
|
||||
|
||||
from neutron.tests.api import base
|
||||
from neutron.tests.tempest.api import base
|
||||
|
||||
|
||||
class DHCPAgentSchedulersTestJSON(base.BaseAdminNetworkTest):
|
@ -16,8 +16,8 @@
|
||||
from tempest.lib import exceptions as lib_exc
|
||||
from tempest import test
|
||||
|
||||
from neutron.tests.api import base
|
||||
from neutron.tests.api import base_security_groups as base_security
|
||||
from neutron.tests.tempest.api import base
|
||||
from neutron.tests.tempest.api import base_security_groups as base_security
|
||||
|
||||
|
||||
class PortSecurityAdminTests(base_security.BaseSecGroupTest,
|
@ -16,7 +16,7 @@ from tempest.lib import exceptions as lib_exc
|
||||
from tempest import test
|
||||
import testtools
|
||||
|
||||
from neutron.tests.api import base
|
||||
from neutron.tests.tempest.api import base
|
||||
|
||||
|
||||
class ExternalNetworksRBACTestJSON(base.BaseAdminNetworkTest):
|
@ -18,7 +18,7 @@ from tempest.lib import exceptions as lib_exc
|
||||
from tempest import test
|
||||
import testtools
|
||||
|
||||
from neutron.tests.api import base
|
||||
from neutron.tests.tempest.api import base
|
||||
from neutron.tests.tempest import config
|
||||
|
||||
CONF = config.CONF
|
@ -15,7 +15,7 @@
|
||||
from tempest.lib.common.utils import data_utils
|
||||
from tempest import test
|
||||
|
||||
from neutron.tests.api import base
|
||||
from neutron.tests.tempest.api import base
|
||||
from neutron.tests.tempest import exceptions
|
||||
|
||||
AGENT_TYPE = 'L3 agent'
|
@ -17,7 +17,7 @@ import six
|
||||
from tempest.lib.common.utils import data_utils
|
||||
from tempest import test
|
||||
|
||||
from neutron.tests.api import base
|
||||
from neutron.tests.tempest.api import base
|
||||
|
||||
|
||||
class QuotasTest(base.BaseAdminNetworkTest):
|
@ -16,7 +16,7 @@
|
||||
from tempest.lib.common.utils import data_utils
|
||||
from tempest import test
|
||||
|
||||
from neutron.tests.api import base_routers as base
|
||||
from neutron.tests.tempest.api import base_routers as base
|
||||
|
||||
|
||||
class RoutersTestDVR(base.BaseRouterTest):
|
@ -21,7 +21,7 @@ from tempest.lib import exceptions as lib_exc
|
||||
from tempest import test
|
||||
import testtools
|
||||
|
||||
from neutron.tests.api import base
|
||||
from neutron.tests.tempest.api import base
|
||||
|
||||
|
||||
class SharedNetworksTest(base.BaseAdminNetworkTest):
|
@ -18,7 +18,7 @@ from tempest.lib.common.utils import data_utils
|
||||
from tempest.lib import exceptions as lib_exc
|
||||
from tempest import test
|
||||
|
||||
from neutron.tests.api import clients
|
||||
from neutron.tests.tempest.api import clients
|
||||
from neutron.tests.tempest import config
|
||||
from neutron.tests.tempest import exceptions
|
||||
|
@ -13,7 +13,7 @@
|
||||
# License for the specific language governing permissions and limitations
|
||||
# under the License.
|
||||
|
||||
from neutron.tests.api import base
|
||||
from neutron.tests.tempest.api import base
|
||||
|
||||
|
||||
class BaseRouterTest(base.BaseAdminNetworkTest):
|
@ -15,7 +15,7 @@
|
||||
|
||||
from tempest.lib.common.utils import data_utils
|
||||
|
||||
from neutron.tests.api import base
|
||||
from neutron.tests.tempest.api import base
|
||||
|
||||
|
||||
class BaseSecGroupTest(base.BaseNetworkTest):
|
@ -16,7 +16,7 @@ from tempest.lib.common.utils import data_utils
|
||||
from tempest.lib import exceptions as lib_exc
|
||||
from tempest import test
|
||||
|
||||
from neutron.tests.api import base
|
||||
from neutron.tests.tempest.api import base
|
||||
|
||||
|
||||
ADDRESS_SCOPE_NAME = 'smoke-address-scope'
|
@ -16,7 +16,7 @@ from tempest.lib.common.utils import data_utils
|
||||
from tempest.lib import exceptions as lib_exc
|
||||
from tempest import test
|
||||
|
||||
from neutron.tests.api import test_address_scopes
|
||||
from neutron.tests.tempest.api import test_address_scopes
|
||||
|
||||
|
||||
class AddressScopeTestNegative(test_address_scopes.AddressScopeTestBase):
|
@ -16,7 +16,7 @@
|
||||
import netaddr
|
||||
from tempest import test
|
||||
|
||||
from neutron.tests.api import base
|
||||
from neutron.tests.tempest.api import base
|
||||
from neutron.tests.tempest import config
|
||||
|
||||
CONF = config.CONF
|
@ -16,7 +16,7 @@
|
||||
from oslo_config import cfg
|
||||
from tempest import test
|
||||
|
||||
from neutron.tests.api import base
|
||||
from neutron.tests.tempest.api import base
|
||||
|
||||
|
||||
class TestAutoAllocatedTopology(base.BaseAdminNetworkTest):
|
@ -18,7 +18,7 @@ from tempest.lib import exceptions as lib_exc
|
||||
from tempest import test
|
||||
import testtools
|
||||
|
||||
from neutron.tests.api import base
|
||||
from neutron.tests.tempest.api import base
|
||||
from neutron.tests.tempest.common import tempest_fixtures as fixtures
|
||||
|
||||
CONF = config.CONF
|
@ -15,7 +15,7 @@
|
||||
import netaddr
|
||||
from tempest.lib import exceptions as lib_exc
|
||||
|
||||
from neutron.tests.api import test_bgp_speaker_extensions as test_base
|
||||
from neutron.tests.tempest.api import test_bgp_speaker_extensions as test_base
|
||||
from tempest import test
|
||||
|
||||
|
@ -18,7 +18,7 @@ from tempest.lib import exceptions as lib_exc
|
||||
from tempest import test
|
||||
|
||||
from neutron.common import constants
|
||||
from neutron.tests.api import base
|
||||
from neutron.tests.tempest.api import base
|
||||
from neutron.tests.tempest import config
|
||||
|
||||
CONF = config.CONF
|
@ -17,8 +17,8 @@ import ddt
|
||||
from tempest.lib import exceptions as lib_exc
|
||||
from tempest import test
|
||||
|
||||
from neutron.tests.api import base
|
||||
from neutron.tests.api import base_security_groups as base_security
|
||||
from neutron.tests.tempest.api import base
|
||||
from neutron.tests.tempest.api import base_security_groups as base_security
|
||||
|
||||
FAKE_IP = '10.0.0.1'
|
||||
FAKE_MAC = '00:25:64:e8:19:dd'
|
@ -16,7 +16,7 @@
|
||||
from tempest.lib.common.utils import data_utils
|
||||
from tempest import test
|
||||
|
||||
from neutron.tests.api import base
|
||||
from neutron.tests.tempest.api import base
|
||||
|
||||
|
||||
class ExtraDHCPOptionsTestJSON(base.BaseNetworkTest):
|
@ -15,7 +15,7 @@
|
||||
from tempest.lib import exceptions as lib_exc
|
||||
from tempest import test
|
||||
|
||||
from neutron.tests.api import base
|
||||
from neutron.tests.tempest.api import base
|
||||
|
||||
|
||||
class TestFlavorsJson(base.BaseAdminNetworkTest):
|
@ -16,7 +16,7 @@
|
||||
from tempest.lib.common.utils import data_utils
|
||||
from tempest import test
|
||||
|
||||
from neutron.tests.api import base
|
||||
from neutron.tests.tempest.api import base
|
||||
from neutron.tests.tempest import config
|
||||
|
||||
CONF = config.CONF
|
@ -18,7 +18,7 @@ from tempest.lib.common.utils import data_utils
|
||||
from tempest.lib import exceptions as lib_exc
|
||||
from tempest import test
|
||||
|
||||
from neutron.tests.api import base
|
||||
from neutron.tests.tempest.api import base
|
||||
from neutron.tests.tempest import config
|
||||
|
||||
CONF = config.CONF
|
@ -15,7 +15,7 @@
|
||||
from tempest.lib.common.utils import data_utils
|
||||
from tempest import test
|
||||
|
||||
from neutron.tests.api import base
|
||||
from neutron.tests.tempest.api import base
|
||||
|
||||
|
||||
class MeteringTestJSON(base.BaseAdminNetworkTest):
|
@ -19,7 +19,7 @@ from tempest.lib.common.utils import data_utils
|
||||
from tempest.lib import exceptions as lib_exc
|
||||
from tempest import test
|
||||
|
||||
from neutron.tests.api import base
|
||||
from neutron.tests.tempest.api import base
|
||||
from neutron.tests.tempest import config
|
||||
|
||||
from neutron_lib import constants as lib_constants
|
@ -15,7 +15,7 @@
|
||||
|
||||
from tempest import test
|
||||
|
||||
from neutron.tests.api import base
|
||||
from neutron.tests.tempest.api import base
|
||||
from neutron.tests.tempest import config
|
||||
|
||||
CONF = config.CONF
|
@ -15,7 +15,7 @@
|
||||
|
||||
from tempest import test
|
||||
|
||||
from neutron.tests.api import base
|
||||
from neutron.tests.tempest.api import base
|
||||
|
||||
|
||||
class PortsTestJSON(base.BaseNetworkTest):
|
@ -19,7 +19,7 @@ from tempest import test
|
||||
import testtools
|
||||
|
||||
from neutron.services.qos import qos_consts
|
||||
from neutron.tests.api import base
|
||||
from neutron.tests.tempest.api import base
|
||||
|
||||
|
||||
class QosTestJSON(base.BaseAdminNetworkTest):
|
@ -18,7 +18,7 @@ import six
|
||||
from tempest.lib.common.utils import data_utils
|
||||
from tempest import test
|
||||
|
||||
from neutron.tests.api import base_routers as base
|
||||
from neutron.tests.tempest.api import base_routers as base
|
||||
from neutron.tests.tempest import config
|
||||
|
||||
CONF = config.CONF
|
@ -18,7 +18,7 @@ from tempest.lib import exceptions as lib_exc
|
||||
from tempest import test
|
||||
import testtools
|
||||
|
||||
from neutron.tests.api import base_routers as base
|
||||
from neutron.tests.tempest.api import base_routers as base
|
||||
|
||||
|
||||
class DvrRoutersNegativeTest(base.BaseRouterTest):
|
@ -16,7 +16,7 @@
|
||||
from tempest.lib.common.utils import data_utils
|
||||
from tempest import test
|
||||
|
||||
from neutron.tests.api import base_security_groups as base
|
||||
from neutron.tests.tempest.api import base_security_groups as base
|
||||
|
||||
|
||||
class SecGroupTest(base.BaseSecGroupTest):
|
@ -16,7 +16,7 @@
|
||||
from tempest.lib import exceptions as lib_exc
|
||||
from tempest import test
|
||||
|
||||
from neutron.tests.api import base_security_groups as base
|
||||
from neutron.tests.tempest.api import base_security_groups as base
|
||||
from neutron.tests.tempest import config
|
||||
|
||||
CONF = config.CONF
|
@ -12,7 +12,7 @@
|
||||
|
||||
from tempest import test
|
||||
|
||||
from neutron.tests.api import base
|
||||
from neutron.tests.tempest.api import base
|
||||
|
||||
|
||||
class ServiceTypeManagementTest(base.BaseNetworkTest):
|
@ -16,7 +16,7 @@
|
||||
from tempest.lib.common.utils import data_utils
|
||||
from tempest import test
|
||||
|
||||
from neutron.tests.api import base
|
||||
from neutron.tests.tempest.api import base
|
||||
|
||||
SUBNETPOOL_NAME = 'smoke-subnetpool'
|
||||
SUBNET_NAME = 'smoke-subnet'
|
@ -20,7 +20,7 @@ from tempest.lib.common.utils import data_utils
|
||||
from tempest.lib import exceptions as lib_exc
|
||||
from tempest import test
|
||||
|
||||
from neutron.tests.api import test_subnetpools
|
||||
from neutron.tests.tempest.api import test_subnetpools
|
||||
|
||||
|
||||
SUBNETPOOL_NAME = 'smoke-subnetpool'
|
@ -15,7 +15,7 @@ import copy
|
||||
from tempest.lib.common.utils import data_utils
|
||||
from tempest import test
|
||||
|
||||
from neutron.tests.api import base
|
||||
from neutron.tests.tempest.api import base
|
||||
|
||||
|
||||
class TestTimeStamp(base.BaseAdminNetworkTest):
|
36
neutron/tests/tempest/plugin.py
Normal file
36
neutron/tests/tempest/plugin.py
Normal file
@ -0,0 +1,36 @@
|
||||
# Copyright 2015
|
||||
# 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 tempest import config
|
||||
from tempest.test_discover import plugins
|
||||
|
||||
import neutron
|
||||
|
||||
class NeutronTempestPlugin(plugins.TempestPlugin):
|
||||
def load_tests(self):
|
||||
base_path = os.path.split(os.path.dirname(
|
||||
os.path.abspath(neutron.__file__)))[0]
|
||||
test_dir = "neutron/tests/tempest"
|
||||
full_test_dir = os.path.join(base_path, test_dir)
|
||||
return full_test_dir, base_path
|
||||
|
||||
def register_opts(self, conf):
|
||||
pass
|
||||
|
||||
def get_opt_lists(self):
|
||||
pass
|
0
neutron/tests/tempest/scenario/__init__.py
Normal file
0
neutron/tests/tempest/scenario/__init__.py
Normal file
@ -163,6 +163,8 @@ neutron.agent.firewall_drivers =
|
||||
iptables = neutron.agent.linux.iptables_firewall:IptablesFirewallDriver
|
||||
iptables_hybrid = neutron.agent.linux.iptables_firewall:OVSHybridIptablesFirewallDriver
|
||||
openvswitch = neutron.agent.linux.openvswitch_firewall:OVSFirewallDriver
|
||||
tempest.test_plugins =
|
||||
neutron_tests = neutron.tests.tempest.plugin:NeutronTempestPlugin
|
||||
|
||||
[build_sphinx]
|
||||
all_files = 1
|
||||
|
2
tox.ini
2
tox.ini
@ -21,7 +21,7 @@ commands =
|
||||
basepython = python2.7
|
||||
passenv = {[testenv]passenv} TEMPEST_CONFIG_DIR
|
||||
setenv = {[testenv]setenv}
|
||||
OS_TEST_PATH=./neutron/tests/api
|
||||
OS_TEST_PATH=./neutron/tests/tempest/api
|
||||
TEMPEST_CONFIG_DIR={env:TEMPEST_CONFIG_DIR:/opt/stack/tempest/etc}
|
||||
OS_TEST_API_WITH_REST=1
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user