summaryrefslogtreecommitdiffstats
path: root/sdnvpn/test/functest/testcase_3.py
diff options
context:
space:
mode:
authortomsou <soth@intracom-telecom.com>2017-06-27 11:48:31 +0000
committerPeriyasamy Palanisamy <periyasamy.palanisamy@ericsson.com>2018-06-26 15:38:17 +0200
commitd6943c92f042f4cdbc1811ff9f69fa128fbb1913 (patch)
tree0645666b6cf6f804e6f39bfcc7b2a01406cf0ab7 /sdnvpn/test/functest/testcase_3.py
parentc4ac6f6475fe7a6b7ebceba1a7af3ee6af5138fe (diff)
Route exchange test with testcase3
This review brings up quagga VM installed with 6WIND quagga, configures with external ip prefix and making sure that it gets exchanged with ODL peer. Change-Id: I9ba677e74f24258f7cc59db70b013fbdbbec917a Signed-off-by: Periyasamy Palanisamy <periyasamy.palanisamy@ericsson.com>
Diffstat (limited to 'sdnvpn/test/functest/testcase_3.py')
-rw-r--r--sdnvpn/test/functest/testcase_3.py102
1 files changed, 99 insertions, 3 deletions
diff --git a/sdnvpn/test/functest/testcase_3.py b/sdnvpn/test/functest/testcase_3.py
index 7f70043..a527236 100644
--- a/sdnvpn/test/functest/testcase_3.py
+++ b/sdnvpn/test/functest/testcase_3.py
@@ -186,7 +186,14 @@ def main():
test_utils.open_http_port(neutron_client, sg_id)
test_utils.open_bgp_port(neutron_client, sg_id)
- net_id, subnet_1_id, router_1_id = test_utils.create_network(
+
+ image_id = os_utils.create_glance_image(
+ glance_client, TESTCASE_CONFIG.image_name,
+ COMMON_CONFIG.image_path, disk=COMMON_CONFIG.image_format,
+ container="bare", public='public')
+ image_ids.append(image_id)
+
+ net_1_id, subnet_1_id, router_1_id = test_utils.create_network(
neutron_client,
TESTCASE_CONFIG.net_1_name,
TESTCASE_CONFIG.subnet_1_name,
@@ -203,7 +210,7 @@ def main():
interfaces.append(tuple((router_1_id, subnet_1_id)))
interfaces.append(tuple((router_quagga_id, subnet_quagga_id)))
- network_ids.extend([net_id, quagga_net_id])
+ network_ids.extend([net_1_id, quagga_net_id])
router_ids.extend([router_1_id, router_quagga_id])
subnet_ids.extend([subnet_1_id, subnet_quagga_id])
@@ -250,7 +257,11 @@ def main():
quagga_bootstrap_script = quagga.gen_quagga_setup_script(
controller_ext_ip,
fake_fip['fip_addr'],
- ext_net_mask)
+ ext_net_mask,
+ TESTCASE_CONFIG.external_network_ip_prefix,
+ TESTCASE_CONFIG.route_distinguishers,
+ TESTCASE_CONFIG.import_targets,
+ TESTCASE_CONFIG.export_targets)
quagga_vm = test_utils.create_instance(
nova_client,
@@ -306,6 +317,83 @@ def main():
else:
results.add_failure("Peering with quagga")
+ test_utils.add_quagga_external_gre_end_point(controllers,
+ fake_fip['fip_addr'])
+ test_utils.wait_before_subtest()
+
+ msg = ("Create VPN to define a VRF")
+ results.record_action(msg)
+ vpn_name = vpn_name = "sdnvpn-3"
+ kwargs = {
+ "import_targets": TESTCASE_CONFIG.import_targets,
+ "export_targets": TESTCASE_CONFIG.export_targets,
+ "route_targets": TESTCASE_CONFIG.route_targets,
+ "route_distinguishers": TESTCASE_CONFIG.route_distinguishers,
+ "name": vpn_name
+ }
+ bgpvpn = test_utils.create_bgpvpn(neutron_client, **kwargs)
+ bgpvpn_id = bgpvpn['bgpvpn']['id']
+ logger.debug("VPN1 created details: %s" % bgpvpn)
+ bgpvpn_ids.append(bgpvpn_id)
+
+ msg = ("Associate network '%s' to the VPN." %
+ TESTCASE_CONFIG.net_1_name)
+ results.record_action(msg)
+ results.add_to_summary(0, "-")
+
+ # create a vm and connect it with network1,
+ # which is going to be bgpvpn associated
+ userdata_common = test_utils.generate_ping_userdata(
+ [TESTCASE_CONFIG.external_network_ip])
+
+ compute_node = nova_client.hypervisors.list()[0]
+ av_zone_1 = "nova:" + compute_node.hypervisor_hostname
+ vm_bgpvpn = test_utils.create_instance(
+ nova_client,
+ TESTCASE_CONFIG.instance_1_name,
+ image_id,
+ net_1_id,
+ sg_id,
+ fixed_ip=TESTCASE_CONFIG.instance_1_ip,
+ secgroup_name=TESTCASE_CONFIG.secgroup_name,
+ compute_node=av_zone_1,
+ userdata=userdata_common)
+ instance_ids.append(vm_bgpvpn)
+
+ # wait for VM to get IP
+ instance_up = test_utils.wait_for_instances_up(vm_bgpvpn)
+ if not instance_up:
+ logger.error("One or more instances are down")
+
+ test_utils.create_network_association(
+ neutron_client, bgpvpn_id, net_1_id)
+
+ test_utils.wait_before_subtest()
+
+ msg = ("External IP prefix %s is exchanged with ODL"
+ % TESTCASE_CONFIG.external_network_ip_prefix)
+ fib_added = test_utils.is_fib_entry_present_on_odl(
+ controllers,
+ TESTCASE_CONFIG.external_network_ip_prefix,
+ TESTCASE_CONFIG.route_distinguishers)
+ if fib_added:
+ results.add_success(msg)
+ else:
+ results.add_failure(msg)
+
+ # TODO: uncomment the following once OVS is installed with > 2.8.3 and
+ # underlay connectivity is established between vxlan overlay and
+ # external network.
+ # results.get_ping_status_target_ip(
+ # vm_bgpvpn,
+ # TESTCASE_CONFIG.external_network_name,
+ # TESTCASE_CONFIG.external_network_ip,
+ # expected="PASS",
+ # timeout=300)
+
+ results.add_to_summary(0, "=")
+ logger.info("\n%s" % results.summary)
+
except Exception as e:
logger.error("exception occurred while executing testcase_3: %s", e)
raise
@@ -315,6 +403,14 @@ def main():
test_utils.cleanup_neutron(neutron_client, floatingip_ids,
bgpvpn_ids, interfaces, subnet_ids,
router_ids, network_ids)
+ bgp_nbr_disconnect_cmd = ("bgp-nbr -i %s -a 200 del"
+ % fake_fip['fip_addr'])
+ bgp_server_stop_cmd = ("bgp-rtr -r %s -a 100 del"
+ % controller_ext_ip)
+ odl_zrpc_disconnect_cmd = "bgp-connect -p 7644 -h 127.0.0.1 del"
+ test_utils.run_odl_cmd(controller, bgp_nbr_disconnect_cmd)
+ test_utils.run_odl_cmd(controller, bgp_server_stop_cmd)
+ test_utils.run_odl_cmd(controller, odl_zrpc_disconnect_cmd)
return results.compile_summary()