summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--sdnvpn/test/functest/config.yaml398
-rw-r--r--sdnvpn/test/functest/run_sdnvpn_tests.py57
-rw-r--r--sdnvpn/test/functest/run_tempest.py33
3 files changed, 266 insertions, 222 deletions
diff --git a/sdnvpn/test/functest/config.yaml b/sdnvpn/test/functest/config.yaml
index d719453..360d88f 100644
--- a/sdnvpn/test/functest/config.yaml
+++ b/sdnvpn/test/functest/config.yaml
@@ -3,218 +3,230 @@ defaults:
testcases:
sdnvpn.test.functest.run_tempest:
- enabled: true
- description: Neutron BGPVPN tests in tempest
+ enabled: true
+ order: 0
+ description: Neutron BGPVPN tests in tempest
+ image_name: bgpvpn-tempest-image
sdnvpn.test.functest.testcase_1:
- enabled: true
- description: VPN provides connectivity between subnets
- instance_1_name: sdnvpn-1-1
- instance_2_name: sdnvpn-1-2
- instance_3_name: sdnvpn-1-3
- instance_4_name: sdnvpn-1-4
- instance_5_name: sdnvpn-1-5
- image_name: sdnvpn-image
- net_1_name: sdnvpn-1-1-net
- subnet_1_name: sdnvpn-1-1-subnet
- subnet_1_cidr: 10.10.10.0/24
- router_1_name: sdnvpn-1-1-router
- net_2_name: sdnvpn-1-2-net
- subnet_2_name: sdnvpn-1-2-subnet
- subnet_2_cidr: 10.10.11.0/24
- router_2_name: sdnvpn-1-2-router
- secgroup_name: sdnvpn-sg
- secgroup_descr: Security group for SDNVPN test cases
- targets1: '88:88'
- targets2: '55:55'
- route_distinguishers: '11:11'
+ enabled: true
+ order: 1
+ description: VPN provides connectivity between subnets
+ instance_1_name: sdnvpn-1-1
+ instance_2_name: sdnvpn-1-2
+ instance_3_name: sdnvpn-1-3
+ instance_4_name: sdnvpn-1-4
+ instance_5_name: sdnvpn-1-5
+ image_name: sdnvpn-image
+ net_1_name: sdnvpn-1-1-net
+ subnet_1_name: sdnvpn-1-1-subnet
+ subnet_1_cidr: 10.10.10.0/24
+ router_1_name: sdnvpn-1-1-router
+ net_2_name: sdnvpn-1-2-net
+ subnet_2_name: sdnvpn-1-2-subnet
+ subnet_2_cidr: 10.10.11.0/24
+ router_2_name: sdnvpn-1-2-router
+ secgroup_name: sdnvpn-sg
+ secgroup_descr: Security group for SDNVPN test cases
+ targets1: '88:88'
+ targets2: '55:55'
+ route_distinguishers: '11:11'
sdnvpn.test.functest.testcase_2:
- enabled: true
- description: Tenant separation
- instance_1_name: sdnvpn-2-1
- instance_2_name: sdnvpn-2-2
- instance_3_name: sdnvpn-2-3
- instance_4_name: sdnvpn-2-4
- instance_5_name: sdnvpn-2-5
- instance_1_ip: 10.10.10.11
- instance_2_ip: 10.10.10.12
- instance_3_ip: 10.10.11.13
- instance_4_ip: 10.10.10.12
- instance_5_ip: 10.10.11.13
- image_name: sdnvpn-image
- net_1_name: sdnvpn-2-1-net
- subnet_1a_name: sdnvpn-2-1a-subnet
- subnet_1a_cidr: 10.10.10.0/24
- subnet_1b_name: sdnvpn-2-1b-subnet
- subnet_1b_cidr: 10.10.11.0/24
- router_1_name: sdnvpn-2-1-router
- net_2_name: sdnvpn-2-2-net
- subnet_2a_name: sdnvpn-2-2a-subnet
- subnet_2a_cidr: 10.10.11.0/24
- subnet_2b_name: sdnvpn-2-2b-subnet
- subnet_2b_cidr: 10.10.10.0/24
- router_2_name: sdnvpn-2-2-router
- secgroup_name: sdnvpn-sg
- secgroup_descr: Security group for SDNVPN test cases
- targets1: '88:88'
- targets2: '55:55'
- route_distinguishers1: '111:111'
- route_distinguishers2: '222:222'
+ enabled: true
+ order: 2
+ description: Tenant separation
+ instance_1_name: sdnvpn-2-1
+ instance_2_name: sdnvpn-2-2
+ instance_3_name: sdnvpn-2-3
+ instance_4_name: sdnvpn-2-4
+ instance_5_name: sdnvpn-2-5
+ instance_1_ip: 10.10.10.11
+ instance_2_ip: 10.10.10.12
+ instance_3_ip: 10.10.11.13
+ instance_4_ip: 10.10.10.12
+ instance_5_ip: 10.10.11.13
+ image_name: sdnvpn-image
+ net_1_name: sdnvpn-2-1-net
+ subnet_1a_name: sdnvpn-2-1a-subnet
+ subnet_1a_cidr: 10.10.10.0/24
+ subnet_1b_name: sdnvpn-2-1b-subnet
+ subnet_1b_cidr: 10.10.11.0/24
+ router_1_name: sdnvpn-2-1-router
+ net_2_name: sdnvpn-2-2-net
+ subnet_2a_name: sdnvpn-2-2a-subnet
+ subnet_2a_cidr: 10.10.11.0/24
+ subnet_2b_name: sdnvpn-2-2b-subnet
+ subnet_2b_cidr: 10.10.10.0/24
+ router_2_name: sdnvpn-2-2-router
+ secgroup_name: sdnvpn-sg
+ secgroup_descr: Security group for SDNVPN test cases
+ targets1: '88:88'
+ targets2: '55:55'
+ route_distinguishers1: '111:111'
+ route_distinguishers2: '222:222'
sdnvpn.test.functest.testcase_3:
- enabled: true
- description: Data center gateway integration
- secgroup_name: sdnvpn-sg
- secgroup_descr: Security group for SDNVPN test cases
- image_name: sdnvpn-image
- ubuntu_image_name: sdnvpn-ubuntu-image
- net_1_name: sdnvpn-3-1-net
- subnet_1_name: sdnvpn-3-1-subnet
- subnet_1_cidr: 10.10.10.0/24
- router_1_name: sdnvpn-3-1-router
- quagga_net_name: sdnvpn-3-2-quagga-net
- quagga_subnet_name: sdnvpn-3-2-quagga-subnet
- quagga_subnet_cidr: 10.10.11.0/24
- quagga_router_name: sdnvpn-3-2-quagga-router
- quagga_instance_name: sdnvpn-3-2-quagga
- quagga_instance_ip: 10.10.11.5
- instance_1_name: sdnvpn-3-1
- instance_1_ip: 10.10.10.5
- import_targets: '31:31'
- export_targets: '32:32'
-
+ enabled: true
+ order: 3
+ description: Data center gateway integration
+ secgroup_name: sdnvpn-sg
+ secgroup_descr: Security group for SDNVPN test cases
+ image_name: sdnvpn-image
+ ubuntu_image_name: sdnvpn-ubuntu-image
+ net_1_name: sdnvpn-3-1-net
+ subnet_1_name: sdnvpn-3-1-subnet
+ subnet_1_cidr: 10.10.10.0/24
+ router_1_name: sdnvpn-3-1-router
+ quagga_net_name: sdnvpn-3-2-quagga-net
+ quagga_subnet_name: sdnvpn-3-2-quagga-subnet
+ quagga_subnet_cidr: 10.10.11.0/24
+ quagga_router_name: sdnvpn-3-2-quagga-router
+ quagga_instance_name: sdnvpn-3-2-quagga
+ quagga_instance_ip: 10.10.11.5
+ instance_1_name: sdnvpn-3-1
+ instance_1_ip: 10.10.10.5
+ import_targets: '31:31'
+ export_targets: '32:32'
sdnvpn.test.functest.testcase_4:
- enabled: true
- description: VPN provides connectivity between subnets using router association
- instance_1_name: sdnvpn-4-1
- instance_2_name: sdnvpn-4-2
- instance_3_name: sdnvpn-4-3
- instance_4_name: sdnvpn-4-4
- instance_5_name: sdnvpn-4-5
- image_name: sdnvpn-image
- net_1_name: sdnvpn-4-1-net
- subnet_1_name: sdnvpn-4-1-subnet
- subnet_1_cidr: 10.10.10.0/24
- router_1_name: sdnvpn-4-1-router
- net_2_name: sdnvpn-4-2-net
- subnet_2_name: sdnvpn-4-2-subnet
- subnet_2_cidr: 10.10.11.0/24
- router_2_name: sdnvpn-4-2-router
- secgroup_name: sdnvpn-sg
- secgroup_descr: Security group for SDNVPN test cases
- targets1: '88:88'
- targets2: '55:55'
- route_distinguishers: '12:12'
+ enabled: true
+ order: 4
+ description: VPN provides connectivity between subnets using router association
+ instance_1_name: sdnvpn-4-1
+ instance_2_name: sdnvpn-4-2
+ instance_3_name: sdnvpn-4-3
+ instance_4_name: sdnvpn-4-4
+ instance_5_name: sdnvpn-4-5
+ image_name: sdnvpn-image
+ net_1_name: sdnvpn-4-1-net
+ subnet_1_name: sdnvpn-4-1-subnet
+ subnet_1_cidr: 10.10.10.0/24
+ router_1_name: sdnvpn-4-1-router
+ net_2_name: sdnvpn-4-2-net
+ subnet_2_name: sdnvpn-4-2-subnet
+ subnet_2_cidr: 10.10.11.0/24
+ router_2_name: sdnvpn-4-2-router
+ secgroup_name: sdnvpn-sg
+ secgroup_descr: Security group for SDNVPN test cases
+ targets1: '88:88'
+ targets2: '55:55'
+ route_distinguishers: '12:12'
sdnvpn.test.functest.testcase_7:
- enabled: false
- description: Network associate VPNs with routers attached (ODL Bug 6962)
- image_name: sdnvpn-image
- instance_1_name: sdnvpn-7-1
- instance_2_name: sdnvpn-7-2
- net_1_name: sdnvpn-7-1
- subnet_1_name: sdnvpn-7-1-subnet
- subnet_1_cidr: 10.10.10.0/24
- router_1_name: sdnvpn-7-1-router
- net_2_name: sdnvpn-7-2
- subnet_2_name: sdnvpn-7-2-subnet
- subnet_2_cidr: 10.10.20.0/24
- router_2_name: sdnvpn-7-2-router
- secgroup_name: sdnvpn-sg
- secgroup_descr: Security group for SDNVPN test cases
- targets: '77:77'
- route_distinguishers: '11:11'
+ enabled: false
+ order: 7
+ description: Network associate VPNs with routers attached (ODL Bug 6962)
+ image_name: sdnvpn-image
+ instance_1_name: sdnvpn-7-1
+ instance_2_name: sdnvpn-7-2
+ net_1_name: sdnvpn-7-1
+ subnet_1_name: sdnvpn-7-1-subnet
+ subnet_1_cidr: 10.10.10.0/24
+ router_1_name: sdnvpn-7-1-router
+ net_2_name: sdnvpn-7-2
+ subnet_2_name: sdnvpn-7-2-subnet
+ subnet_2_cidr: 10.10.20.0/24
+ router_2_name: sdnvpn-7-2-router
+ secgroup_name: sdnvpn-sg
+ secgroup_descr: Security group for SDNVPN test cases
+ targets: '77:77'
+ route_distinguishers: '11:11'
sdnvpn.test.functest.testcase_8:
- enabled: true
- description: Test floating IP and router assoc coexistence
- image_name: sdnvpn-image
- instance_1_name: sdnvpn-8-1
- instance_2_name: sdnvpn-8-2
- net_1_name: sdnvpn-8-1
- subnet_1_name: sdnvpn-8-1-subnet
- subnet_1_cidr: 10.10.10.0/24
- router_1_name: sdnvpn-8-1-router
- net_2_name: sdnvpn-8-2
- subnet_2_name: sdnvpn-8-2-subnet
- subnet_2_cidr: 10.10.20.0/24
- router_2_name: sdnvpn-8-2-router
- secgroup_name: sdnvpn-sg
- secgroup_descr: Security group for SDNVPN test cases
- targets: '88:88'
- route_distinguishers: '18:18'
+ enabled: true
+ order: 8
+ description: Test floating IP and router assoc coexistence
+ image_name: sdnvpn-image
+ instance_1_name: sdnvpn-8-1
+ instance_2_name: sdnvpn-8-2
+ net_1_name: sdnvpn-8-1
+ subnet_1_name: sdnvpn-8-1-subnet
+ subnet_1_cidr: 10.10.10.0/24
+ router_1_name: sdnvpn-8-1-router
+ net_2_name: sdnvpn-8-2
+ subnet_2_name: sdnvpn-8-2-subnet
+ subnet_2_cidr: 10.10.20.0/24
+ router_2_name: sdnvpn-8-2-router
+ secgroup_name: sdnvpn-sg
+ secgroup_descr: Security group for SDNVPN test cases
+ targets: '88:88'
+ route_distinguishers: '18:18'
sdnvpn.test.functest.testcase_9:
- enabled: true
- description: Verify that all OpenStack nodes OVS br-int have fail_mode set to secure.
+ enabled: true
+ order: 9
+ description: Verify that all OpenStack nodes OVS br-int have fail_mode set to secure.
sdnvpn.test.functest.testcase_10:
- enabled: true
- description: Test if interupts occure during ping, when removing and adding instances
- instance_1_name: sdnvpn-10-1
- instance_2_name: sdnvpn-10-2
- instance_3_name: sdnvpn-10-3
- instance_4_name: sdnvpn-10-4
- image_name: sdnvpn-image
- net_1_name: sdnvpn-10-1-net
- subnet_1_name: sdnvpn-10-1-subnet
- subnet_1_cidr: 10.10.10.0/24
- router_1_name: sdnvpn-10-1-router
- secgroup_name: sdnvpn-sg
- secgroup_descr: Security group for SDNVPN test cases
+ enabled: true
+ order: 10
+ description: Test if interupts occure during ping, when removing and adding instances
+ instance_1_name: sdnvpn-10-1
+ instance_2_name: sdnvpn-10-2
+ instance_3_name: sdnvpn-10-3
+ instance_4_name: sdnvpn-10-4
+ image_name: sdnvpn-image
+ net_1_name: sdnvpn-10-1-net
+ subnet_1_name: sdnvpn-10-1-subnet
+ subnet_1_cidr: 10.10.10.0/24
+ router_1_name: sdnvpn-10-1-router
+ secgroup_name: sdnvpn-sg
+ secgroup_descr: Security group for SDNVPN test cases
sdnvpn.test.functest.testcase_11:
- enabled: true
- description: Check relevant OVS groups are removed upon deletion of OpenStack topology
- instance_1_name: sdnvpn-11-1
- instance_2_name: sdnvpn-11-2
- image_name: sdnvpn-image
- net_1_name: sdnvpn-11-1-net
- subnet_1_name: sdnvpn-11-1-subnet
- subnet_1_cidr: 10.10.10.0/24
- router_1_name: sdnvpn-11-1-router
- secgroup_name: sdnvpn-sg
- secgroup_descr: Security group for SDNVPN test cases
+ enabled: true
+ order: 11
+ description: Check relevant OVS groups are removed upon deletion of OpenStack topology
+ instance_1_name: sdnvpn-11-1
+ instance_2_name: sdnvpn-11-2
+ image_name: sdnvpn-image
+ net_1_name: sdnvpn-11-1-net
+ subnet_1_name: sdnvpn-11-1-subnet
+ subnet_1_cidr: 10.10.10.0/24
+ router_1_name: sdnvpn-11-1-router
+ secgroup_name: sdnvpn-sg
+ secgroup_descr: Security group for SDNVPN test cases
sdnvpn.test.functest.testcase_12:
- enabled: true
- description: Check Flows and Groups are reprogrammed after OVS reconnect
- instance_1_name: sdnvpn-12-1
- instance_2_name: sdnvpn-12-2
- image_name: sdnvpn-image
- net_1_name: sdnvpn-12-1-net
- subnet_1_name: sdnvpn-12-1-subnet
- subnet_1_cidr: 10.10.10.0/24
- secgroup_name: sdnvpn-sg
- secgroup_descr: Security group for SDNVPN test cases
+ enabled: true
+ order: 12
+ description: Check Flows and Groups are reprogrammed after OVS reconnect
+ instance_1_name: sdnvpn-12-1
+ instance_2_name: sdnvpn-12-2
+ image_name: sdnvpn-image
+ net_1_name: sdnvpn-12-1-net
+ subnet_1_name: sdnvpn-12-1-subnet
+ subnet_1_cidr: 10.10.10.0/24
+ secgroup_name: sdnvpn-sg
+ secgroup_descr: Security group for SDNVPN test cases
sdnvpn.test.functest.testcase_13:
- enabled: true
- description: Testing extra route ECMP for intra-data center scenario
- instance_1_name: sdnvpn-13-1
- instance_2_name: sdnvpn-13-2
- instance_3_name: sdnvpn-13-3
- image_name: sdnvpn-image
- net_1_name: sdnvpn-13-1-net
- subnet_1_name: sdnvpn-13-1-subnet
- subnet_1_cidr: 10.10.10.0/24
- router_1_name: sdnvpn-13-1-router
- net_2_name: sdnvpn-13-2-net
- subnet_2_name: sdnvpn-13-2-subnet
- subnet_2_cidr: 10.10.11.0/24
- router_2_name: sdnvpn-13-2-router
- interface_name: lo
- interface_number: 1
- extra_route_cidr: 179.24.1.12/32
- extra_route_ip: 179.24.1.12
- extra_route_subnet_mask: 255.255.255.255
- extra_route_name: sdnvpn_extra_route_13
- secgroup_name: sdnvpn-sg
- secgroup_descr: Security group for SDNVPN test cases
- targets1: '88:88'
- targets2: '88:88'
- route_distinguishers:
- - '12:12'
- - '13:13'
+ enabled: true
+ order: 13
+ description: Testing extra route ECMP for intra-data center scenario
+ instance_1_name: sdnvpn-13-1
+ instance_2_name: sdnvpn-13-2
+ instance_3_name: sdnvpn-13-3
+ image_name: sdnvpn-image
+ net_1_name: sdnvpn-13-1-net
+ subnet_1_name: sdnvpn-13-1-subnet
+ subnet_1_cidr: 10.10.10.0/24
+ router_1_name: sdnvpn-13-1-router
+ net_2_name: sdnvpn-13-2-net
+ subnet_2_name: sdnvpn-13-2-subnet
+ subnet_2_cidr: 10.10.11.0/24
+ router_2_name: sdnvpn-13-2-router
+ interface_name: lo
+ interface_number: 1
+ extra_route_cidr: 179.24.1.12/32
+ extra_route_ip: 179.24.1.12
+ extra_route_subnet_mask: 255.255.255.255
+ extra_route_name: sdnvpn_extra_route_13
+ secgroup_name: sdnvpn-sg
+ secgroup_descr: Security group for SDNVPN test cases
+ targets1: '88:88'
+ targets2: '88:88'
+ route_distinguishers:
+ - '12:12'
+ - '13:13'
diff --git a/sdnvpn/test/functest/run_sdnvpn_tests.py b/sdnvpn/test/functest/run_sdnvpn_tests.py
index 8e55b2d..23a62e6 100644
--- a/sdnvpn/test/functest/run_sdnvpn_tests.py
+++ b/sdnvpn/test/functest/run_sdnvpn_tests.py
@@ -15,12 +15,14 @@ import sys
import traceback
import yaml
+from collections import OrderedDict
from xtesting.core import feature
from sdnvpn.lib import config as sdnvpn_config
from sdnvpn.lib import openstack_utils as os_utils
from sdnvpn.lib.gather_logs import gather_logs
from sdnvpn.lib import utils as test_utils
+logger = logging.getLogger(__name__)
COMMON_CONFIG = sdnvpn_config.CommonConfig()
@@ -42,8 +44,8 @@ class SdnvpnFunctest(feature.Feature):
neutron_quota['port'], neutron_quota['router'])
instances_quota = test_utils.get_nova_instances_quota(nova_client)
- self.logger.info("Setting net/subnet/port/router "
- "quota to unlimited")
+ logger.info("Setting net/subnet/port/router "
+ "quota to unlimited")
test_utils.update_nw_subnet_port_quota(
neutron_client,
tenant_id,
@@ -55,13 +57,14 @@ class SdnvpnFunctest(feature.Feature):
# Workaround for
# https://jira.opnfv.org/projects/SDNVPN/issues/SDNVPN-115
- self.logger.info("Setting instances quota class to unlimited")
+ logger.info("Setting instances quota class to unlimited")
test_utils.update_instance_quota_class(
nova_client,
COMMON_CONFIG.nova_instances_quota_class)
# Clean up the stale floating ip's so that required
# ip addresses are available for sdnvpn testcases
+ logger.info("Cleaning up the Floating IP Addresses")
floating_ips = os_utils.get_floating_ips(neutron_client)
if floating_ips is not None:
for floating_ip in floating_ips:
@@ -72,44 +75,46 @@ class SdnvpnFunctest(feature.Feature):
config_yaml = yaml.safe_load(f)
testcases = config_yaml.get("testcases")
+ testcases_ordered = OrderedDict(sorted(testcases.items(),
+ key=lambda x: x[1]['order']))
overall_status = "PASS"
- for tc in testcases:
- if testcases[tc]['enabled']:
+ for tc, test_sdnvpn in testcases_ordered.items():
+ if test_sdnvpn['enabled']:
test_name = tc
test_descr = testcases[tc]['description']
title = ("Running '%s - %s'" %
(test_name, test_descr))
- self.logger.info(title)
- self.logger.info("%s\n" % ("=" * len(title)))
+ logger.info(title)
+ logger.info("%s\n" % ("=" * len(title)))
try:
- self.logger.info("Importing the testcase %s" % test_name)
+ logger.info("Importing the testcase %s" % test_name)
t = importlib.import_module(test_name, package=None)
- self.logger.info("Calling the testcase %s main method"
- % test_name)
+ logger.info("Calling the testcase %s main method"
+ % test_name)
result = t.main()
- self.logger.info("Execution is complete for the"
- " testcase %s" % test_name)
+ logger.info("Execution is complete for the"
+ " testcase %s" % test_name)
except Exception as ex:
result = -1
- self.logger.info("Caught Exception in %s: %s Trace: %s"
- % (test_name, ex,
- traceback.format_exc()))
+ logger.info("Caught Exception in %s: %s Trace: %s"
+ % (test_name, ex,
+ traceback.format_exc()))
if result < 0:
status = "FAIL"
overall_status = "FAIL"
- self.logger.info("Testcase %s failed" % test_name)
+ logger.info("Testcase %s failed" % test_name)
else:
status = result.get("status")
self.details.update(
{test_name: {'status': status,
'details': result.get("details")}})
- self.logger.info("Results of test case '%s - %s':\n%s\n"
- % (test_name, test_descr, result))
+ logger.info("Results of test case '%s - %s':\n%s\n"
+ % (test_name, test_descr, result))
if status == "FAIL":
overall_status = "FAIL"
- self.logger.info("Resetting subnet/net/port quota")
+ logger.info("Resetting subnet/net/port quota")
test_utils.update_nw_subnet_port_quota(neutron_client,
tenant_id,
neutron_nw_quota,
@@ -117,7 +122,7 @@ class SdnvpnFunctest(feature.Feature):
neutron_port_quota,
neutron_router_quota)
- self.logger.info("Resetting instances quota class")
+ logger.info("Resetting instances quota class")
test_utils.update_instance_quota_class(nova_client, instances_quota)
try:
@@ -125,13 +130,13 @@ class SdnvpnFunctest(feature.Feature):
if installer_type in ["fuel", "apex"]:
gather_logs('overall')
else:
- self.logger.info("Skipping log gathering because installer"
- "type %s is neither fuel nor apex" %
- installer_type)
+ logger.info("Skipping log gathering because installer"
+ "type %s is neither fuel nor apex" %
+ installer_type)
except Exception as ex:
- self.logger.error(('Something went wrong in the Log gathering.'
- 'Ex: %s, Trace: %s')
- % (ex, traceback.format_exc()))
+ logger.error(('Something went wrong in the Log gathering.'
+ 'Ex: %s, Trace: %s')
+ % (ex, traceback.format_exc()))
if overall_status == "PASS":
self.result = 100
diff --git a/sdnvpn/test/functest/run_tempest.py b/sdnvpn/test/functest/run_tempest.py
index a1ef004..15d4eda 100644
--- a/sdnvpn/test/functest/run_tempest.py
+++ b/sdnvpn/test/functest/run_tempest.py
@@ -1,6 +1,6 @@
#!/usr/bin/env python
#
-# Copyright (c) 2017 All rights reserved
+# Copyright (c) 2018 All rights reserved
# This program and the accompanying materials
# are made available under the terms of the Apache License, Version 2.0
# which accompanies this distribution, and is available at
@@ -16,8 +16,16 @@ import shutil
import functest.opnfv_tests.openstack.tempest.conf_utils as tempest_utils
+from sdnvpn.lib import config as sdnvpn_config
+from sdnvpn.lib import openstack_utils as os_utils
+
+
logger = logging.getLogger('sdnvpn-tempest')
+COMMON_CONFIG = sdnvpn_config.CommonConfig()
+TESTCASE_CONFIG = sdnvpn_config.TestcaseConfig(
+ 'sdnvpn.test.functest.run_tempest')
+
def main():
verifier_id = tempest_utils.get_verifier_id()
@@ -39,18 +47,35 @@ def main():
exit(-1)
shutil.copy(src_tempest_conf, bgpvpn_tempest_conf)
+ glance_client = os_utils.get_glance_client()
+ img_ref = os_utils.create_glance_image(glance_client,
+ TESTCASE_CONFIG.image_name,
+ COMMON_CONFIG.image_path,
+ disk=COMMON_CONFIG.image_format,
+ container="bare", public='public')
+
+ nova_client = os_utils.get_nova_client()
+ flav_ref = os_utils.get_flavor_id(nova_client,
+ COMMON_CONFIG.default_flavor)
+
logger.info("Copying tempest.conf to %s." % bgpvpn_tempest_conf)
config = ConfigParser.RawConfigParser()
config.read(bgpvpn_tempest_conf)
config.set('service_available', 'bgpvpn', 'True')
logger.debug("Updating %s with bgpvpn=True" % bgpvpn_tempest_conf)
+ config.set('compute', 'flavor_ref', flav_ref)
+ logger.debug("Updating %s with flavor_id %s"
+ % (bgpvpn_tempest_conf, flav_ref))
+ config.set('compute', 'image_ref', img_ref)
+ logger.debug("Updating %s with image_id %s"
+ % (bgpvpn_tempest_conf, img_ref))
with open(bgpvpn_tempest_conf, 'wb') as tempest_conf:
config.write(tempest_conf)
# TODO: Though --config-file parameter is set during the tempest run,
# it looks for tempest.conf at /etc/tempest/ directory. so applying
# the following workaround. Will remove it when the root cause is found.
- cmd = ("mkdir /etc/tempest;"
+ cmd = ("mkdir -p /etc/tempest;"
"cp {0} /etc/tempest/tempest.conf".format(bgpvpn_tempest_conf))
logger.info("Configuring default tempest conf file")
os.popen(cmd)
@@ -94,7 +119,9 @@ def main():
return {"status": status, "details": results}
except Exception as e:
logger.error("Problem when parsing the results: %s", e)
-
+ finally:
+ os_utils.delete_glance_image(glance_client, img_ref)
+ logger.debug("Deleted image %s" % img_ref)
if __name__ == '__main__':
main()