Add case for router east west traffic
In order to avoid unexpected regression, this patch adds one
test case for router east west traffic.
Change-Id: I695e833ccedddafaf9f5b7ccbd4831f02efde733
diff --git a/neutron_tempest_plugin/scenario/base.py b/neutron_tempest_plugin/scenario/base.py
index ffb4dbd..f24c82b 100644
--- a/neutron_tempest_plugin/scenario/base.py
+++ b/neutron_tempest_plugin/scenario/base.py
@@ -238,21 +238,24 @@
LOG.debug("Server %s disappeared(deleted) while looking "
"for the console log", server['id'])
- def _check_remote_connectivity(self, source, dest, should_succeed=True,
+ def _check_remote_connectivity(self, source, dest, count,
+ should_succeed=True,
nic=None, mtu=None, fragmentation=True,
timeout=None):
"""check ping server via source ssh connection
:param source: RemoteClient: an ssh connection from which to ping
:param dest: and IP to ping against
+ :param count: Number of ping packet(s) to send
:param should_succeed: boolean should ping succeed or not
:param nic: specific network interface to ping from
:param mtu: mtu size for the packet to be sent
:param fragmentation: Flag for packet fragmentation
+ :param timeout: Timeout for all ping packet(s) to succeed
:returns: boolean -- should_succeed == ping
:returns: ping is false if ping failed
"""
- def ping_host(source, host, count=CONF.validation.ping_count,
+ def ping_host(source, host, count,
size=CONF.validation.ping_size, nic=None, mtu=None,
fragmentation=True):
IP_VERSION_4 = neutron_lib_constants.IP_VERSION_4
@@ -275,7 +278,7 @@
def ping_remote():
try:
- result = ping_host(source, dest, nic=nic, mtu=mtu,
+ result = ping_host(source, dest, count, nic=nic, mtu=mtu,
fragmentation=fragmentation)
except lib_exc.SSHExecCommandFailed:
@@ -296,10 +299,12 @@
def check_remote_connectivity(self, source, dest, should_succeed=True,
nic=None, mtu=None, fragmentation=True,
- servers=None, timeout=None):
+ servers=None, timeout=None,
+ ping_count=CONF.validation.ping_count):
try:
self.assertTrue(self._check_remote_connectivity(
- source, dest, should_succeed, nic, mtu, fragmentation,
+ source, dest, ping_count, should_succeed, nic, mtu,
+ fragmentation,
timeout=timeout))
except lib_exc.SSHTimeout as ssh_e:
LOG.debug(ssh_e)
diff --git a/neutron_tempest_plugin/scenario/test_connectivity.py b/neutron_tempest_plugin/scenario/test_connectivity.py
index 3385a04..311c263 100644
--- a/neutron_tempest_plugin/scenario/test_connectivity.py
+++ b/neutron_tempest_plugin/scenario/test_connectivity.py
@@ -109,3 +109,40 @@
self.check_remote_connectivity(
ap1_sshclient, ap2_internal_port['fixed_ips'][0]['ip_address'])
+
+ @decorators.idempotent_id('b72c3b77-3396-4144-b05d-9cd3c0099893')
+ def test_connectivity_router_east_west_traffic(self):
+ """This case is intended to test router east west taffic
+
+ The case can be used in various scenarios: legacy/distributed router,
+ same/different host.
+ """
+ net_1 = self.create_network()
+ net_2 = self.create_network()
+ subnet_1 = self.create_subnet(net_1, cidr="10.10.1.0/24")
+ subnet_2 = self.create_subnet(net_2, cidr="10.10.2.0/24")
+
+ router = self.create_router(
+ router_name=data_utils.rand_name("east_west_traffic_router"),
+ admin_state_up=True,
+ external_network_id=CONF.network.public_network_id)
+
+ internal_port_1 = self.create_port(
+ net_1, security_groups=[self.secgroup['id']])
+ internal_port_2 = self.create_port(
+ net_2, security_groups=[self.secgroup['id']])
+
+ self._create_servers(internal_port_1, internal_port_2)
+
+ self.create_router_interface(router['id'], subnet_1['id'])
+ self.create_router_interface(router['id'], subnet_2['id'])
+
+ fip = self.create_and_associate_floatingip(
+ internal_port_1['id'])
+ sshclient = ssh.Client(
+ fip['floating_ip_address'], CONF.validation.image_ssh_user,
+ pkey=self.keypair['private_key'])
+
+ self.check_remote_connectivity(
+ sshclient, internal_port_2['fixed_ips'][0]['ip_address'],
+ ping_count=10)