From 033903aec0afbabce5155e49b807c9793c79f908 Mon Sep 17 00:00:00 2001 From: Assaf Muller Date: Thu, 15 Sep 2016 18:02:16 -0400 Subject: [PATCH] Add fullstack test with OVS arp_responder Now that fullstack uses a modern OVS we may finally have an OVS ARP responder test. The code will now have implicit coverage. It previously was not run in any functional or integration test. Change-Id: I3db3185a08b7cc546dee9e711f5bda9143752f86 Related-Bug: #1623849 --- doc/source/devref/testing_coverage.rst | 6 ++---- neutron/tests/fullstack/resources/config.py | 1 + neutron/tests/fullstack/resources/environment.py | 3 ++- neutron/tests/fullstack/test_connectivity.py | 9 ++++++--- 4 files changed, 11 insertions(+), 8 deletions(-) diff --git a/doc/source/devref/testing_coverage.rst b/doc/source/devref/testing_coverage.rst index c5e3339c2e9..3970863cd5c 100644 --- a/doc/source/devref/testing_coverage.rst +++ b/doc/source/devref/testing_coverage.rst @@ -65,7 +65,7 @@ such as what L2 agent to use or what type of routers to create. +------------------------+------------+------------+------------+------------+------------+------------+ | DHCP HA | V | | | amuller | | | +------------------------+------------+------------+------------+------------+------------+------------+ -| OVS ARP responder | V | X* | | X* | | | +| OVS ARP responder | V | X* | | Implicit | | | +------------------------+------------+------------+------------+------------+------------+------------+ | OVS agent | V | V | | V | | V | +------------------------+------------+------------+------------+------------+------------+------------+ @@ -90,9 +90,7 @@ such as what L2 agent to use or what type of routers to create. layers, nor for the L3 agent changes. This has been an area of repeated regressions. * The functional job now compiles OVS 2.5 from source, enabling testing - features that we previously could not. The OVS ARP responder is one such - feature. Modifying the fullstack job to use OVS 2.5 as well will enable - testing the OVS ARP responder implicitly. + features that we previously could not. Missing Infrastructure ---------------------- diff --git a/neutron/tests/fullstack/resources/config.py b/neutron/tests/fullstack/resources/config.py index 7a654fe560b..adf526e3ca7 100644 --- a/neutron/tests/fullstack/resources/config.py +++ b/neutron/tests/fullstack/resources/config.py @@ -158,6 +158,7 @@ class OVSConfigFixture(ConfigFixture): }, 'agent': { 'l2_population': str(self.env_desc.l2_pop), + 'arp_responder': str(self.env_desc.arp_responder), } }) diff --git a/neutron/tests/fullstack/resources/environment.py b/neutron/tests/fullstack/resources/environment.py index feeeb0f0940..e207cc290e1 100644 --- a/neutron/tests/fullstack/resources/environment.py +++ b/neutron/tests/fullstack/resources/environment.py @@ -34,12 +34,13 @@ class EnvironmentDescription(object): Does the setup, as a whole, support tunneling? How about l2pop? """ def __init__(self, network_type='vxlan', l2_pop=True, qos=False, - mech_drivers='openvswitch,linuxbridge'): + mech_drivers='openvswitch,linuxbridge', arp_responder=False): self.network_type = network_type self.l2_pop = l2_pop self.qos = qos self.network_range = None self.mech_drivers = mech_drivers + self.arp_responder = arp_responder @property def tunneling_enabled(self): diff --git a/neutron/tests/fullstack/test_connectivity.py b/neutron/tests/fullstack/test_connectivity.py index 1fef368a66c..49516b3d650 100644 --- a/neutron/tests/fullstack/test_connectivity.py +++ b/neutron/tests/fullstack/test_connectivity.py @@ -28,6 +28,7 @@ class BaseConnectivitySameNetworkTest(base.BaseFullStackTestCase): of_interface = None ovsdb_interface = None + arp_responder = False def setUp(self): host_descriptions = [ @@ -42,7 +43,8 @@ class BaseConnectivitySameNetworkTest(base.BaseFullStackTestCase): env = environment.Environment( environment.EnvironmentDescription( network_type=self.network_type, - l2_pop=self.l2_pop), + l2_pop=self.l2_pop, + arp_responder=self.arp_responder), host_descriptions) super(BaseConnectivitySameNetworkTest, self).setUp(env) @@ -76,8 +78,9 @@ class TestOvsConnectivitySameNetwork(BaseConnectivitySameNetworkTest): network_scenarios = [ ('VXLAN', {'network_type': 'vxlan', 'l2_pop': False}), - ('GRE and l2pop', {'network_type': 'gre', - 'l2_pop': True}), + ('GRE-l2pop-arp_responder', {'network_type': 'gre', + 'l2_pop': True, + 'arp_responder': True}), ('VLANs', {'network_type': 'vlan', 'l2_pop': False})] interface_scenarios = [