aboutsummaryrefslogtreecommitdiffstats
path: root/testcases
diff options
context:
space:
mode:
Diffstat (limited to 'testcases')
-rw-r--r--testcases/Controllers/ONOS/Sfc/Sfc.py321
-rw-r--r--testcases/Controllers/ONOS/Sfc/Sfc_fun.py168
-rw-r--r--testcases/Controllers/ONOS/Teston/adapters/client.py14
-rw-r--r--testcases/Controllers/ONOS/Teston/adapters/connection.py18
-rw-r--r--testcases/Controllers/ONOS/Teston/adapters/environment.py39
-rw-r--r--testcases/Controllers/ONOS/Teston/adapters/foundation.py59
-rwxr-xr-xtestcases/Controllers/ONOS/Teston/onosfunctest.py45
-rwxr-xr-xtestcases/OpenStack/examples/create_instance_and_ip.py45
-rw-r--r--testcases/OpenStack/rally/blacklist.txt8
-rwxr-xr-xtestcases/OpenStack/rally/run_rally-cert.py148
-rw-r--r--testcases/OpenStack/rally/scenario/opnfv-glance.yaml6
-rw-r--r--testcases/OpenStack/rally/task.yaml20
-rw-r--r--testcases/OpenStack/tempest/custom_tests/blacklist.txt25
-rwxr-xr-xtestcases/OpenStack/tempest/gen_tempest_conf.py4
-rwxr-xr-xtestcases/OpenStack/tempest/run_tempest.py74
-rw-r--r--testcases/OpenStack/vPing/vping_util.py56
-rwxr-xr-xtestcases/features/copper.py8
-rwxr-xr-xtestcases/features/doctor.py28
-rwxr-xr-xtestcases/features/domino.py35
-rwxr-xr-xtestcases/features/promise.py75
-rwxr-xr-xtestcases/features/sfc/prepare_odl_sfc.bash38
-rwxr-xr-xtestcases/features/sfc/sfc.py86
-rwxr-xr-xtestcases/security_scan/security_scan.py10
-rwxr-xr-xtestcases/vnf/vIMS/vIMS.py101
-rwxr-xr-xtestcases/vnf/vRNC/parser.py8
25 files changed, 798 insertions, 641 deletions
diff --git a/testcases/Controllers/ONOS/Sfc/Sfc.py b/testcases/Controllers/ONOS/Sfc/Sfc.py
index 99d07aaed..28611982b 100644
--- a/testcases/Controllers/ONOS/Sfc/Sfc.py
+++ b/testcases/Controllers/ONOS/Sfc/Sfc.py
@@ -1,7 +1,7 @@
"""Script to Test the SFC scenarios in ONOS."""
# !/usr/bin/python
#
-# Copyright (c) 2015 All rights reserved
+# Copyright (c) CREATED5 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
@@ -15,198 +15,196 @@
# Testcase 1 : Prerequisites configuration for SFC
# Testcase 2 : Creation of 3 VNF Nodes and Attaching Ports
-# TestCase 3 : Configure SFC [Port pair,Port Group ,Flow classifer
-# TestCase 4 : Configure Port Chain and verify the flows are added.
-# TestCase 5 : Verify traffic with VNF node.
-# TestCase 6 : Remove the Port Chain and Verify the traffic.
+# Testcase 3 : Configure SFC [Port pair,Port Group ,Flow classifer
+# Testcase 4 : Configure Port Chain and verify the flows are added.
+# Testcase 5 : Verify traffic with VNF node.
+# Testcase 6 : Remove the Port Chain and Verify the traffic.
# Testcase 7 : Cleanup
# ###########################################################################
#
+import time
import functest.utils.functest_logger as ft_logger
import functest.utils.functest_utils as functest_utils
-import time
from Sfc_fun import Sfc_fun
+logger = ft_logger.Logger("sfc").getLogger()
+Sfc_obj = Sfc_fun()
-class Sfc:
- """Script to Test the SFC scenarios in ONOS."""
- logger = ft_logger.Logger("sfc").getLogger()
- Sfc_obj = Sfc_fun()
- start_time = time.time()
- status = "PASS"
- print("################################################################")
- print(" OPNFV SFC Script ")
- print("################################################################")
+OK = 200
+CREATED = 201
+ACCEPTED = 202
+NO_CONTENT = 204
+
+
+def PreConfig():
logger.info("Testcase 1 : Prerequisites configuration for SFC")
- #########################################################################
- logger.info("\t1.1 Creation of Auth-Token")
- if (Sfc_obj.getToken() == 200):
- logger.info("\t\tCreation of Token is successfull")
- else:
- status = "FAIL"
- logger.error("\t\t : Creation of Token is NOT successfull")
- #########################################################################
- logger.info("\t1.2 Creation of Network")
- if (Sfc_obj.createNetworks() == 201):
- logger.info("\t\tCreation of network is successfull")
- else:
- status = "FAIL"
- logger.error("\t\t : Creation of network is NOT successfull")
- #########################################################################
- logger.info("\t1.3 Creation of Subnetwork")
- if (Sfc_obj.createSubnets() == 201):
- logger.info("\t\tCreation of Subnetwork is successfull")
- else:
- status = "FAIL"
- logger.error("\t\t : Creation of Subnetwork is NOT successfull")
- print ("\n###########################################################\n")
- ########################################################################
- logger.info("Testcase 2 : Creation of 3 VNF Nodes and Attaching Ports")
- #########################################################################
- logger.info("\t2.1 Creation of Ports")
- if (Sfc_obj.createPorts() == 201):
- logger.info("\t\tCreation of Port is successfull")
- else:
- status = "FAIL"
- logger.error("\t\t : Creation of Port is NOT successfull")
- #########################################################################
- logger.info("\t2.2 Creation of VM-Compute-Node")
- if (Sfc_obj.createVm() == 202):
- logger.info("\t\tCreation of VM is successfull")
- else:
- status = "FAIL"
- logger.error("\t\t : Creation of VM is NOT successfull")
- #########################################################################
- logger.info("\t2.3 Check VM Status")
- if (Sfc_obj.checkVmState() == 200):
- logger.info("\t\tVM are in active state")
- else:
- status = "FAIL"
- logger.error("\t\t : VM is NOT Active")
- #########################################################################
- logger.info("\t\t2.4 Router Creation")
- if (Sfc_obj.createRouter() == 201):
- logger.info("\t\t Router Creation is Successful")
- else:
- status = "FAIL"
- logger.error("\t\t : Router Creation is NOT Successful")
- #########################################################################
- logger.info("\t\t2.5 Attachement of Interface to VM")
- if (Sfc_obj.attachInterface() == 200):
- logger.info("\t\t Interface attached to VM")
- else:
- status = "FAIL"
- logger.error("\t\t : Interface NOT attached to VM")
- #########################################################################
- logger.info("\t\t2.6 Attachement of FLoating Ip to VM")
- if (Sfc_obj.addFloatingIp() == 202):
- logger.info("\t\t Floating Ip attached to VM SUccessful")
- else:
- status = "FAIL"
- logger.error("\t\t : Floating Ip NOT attached to VM ")
- print ("\n###########################################################\n")
- ########################################################################
- logger.info(
- "TestCase 3 : Configure SFC [Portair,PortGroup,Flow classifer]")
- #########################################################################
- logger.info("\t3.1 Creation of Port Pair")
- if (Sfc_obj.createPortPair() == 201):
- logger.info("\t\tCreation of Port pair is successful")
- else:
- status = "FAIL"
- logger.error("\t\t : Creation of Port pair is NOT successful")
+ logger.info("1.1 Creation of Auth-Token")
+ if (Sfc_obj.getToken() == OK):
+ logger.info("Creation of Token is successfull")
+ else:
+ logger.error(" : Creation of Token is NOT successfull")
+ fail()
+ logger.info("1.2 Creation of Network")
+ if (Sfc_obj.createNetworks() == CREATED):
+ logger.info("Creation of network is successfull")
+ else:
+ logger.error(" : Creation of network is NOT successfull")
+ fail()
+ logger.info("1.3 Creation of Subnetwork")
- #########################################################################
- logger.info("\t3.2 Getting the Port Pair ID")
- if (Sfc_obj.getPortPair() == 200):
- logger.info("\t\tSuccessfully got Port Pair ID")
+ if (Sfc_obj.createSubnets() == CREATED):
+ logger.info("Creation of Subnetwork is successfull")
else:
- status = "FAIL"
- logger.error("\t\t : UnSuccessfully got Port Pair ID")
+ logger.error(" : Creation of Subnetwork is NOT successfull")
+ fail()
- #########################################################################
- logger.info("\t3.3 Creation of Port Pair Group")
- if (Sfc_obj.createPortGroup() == 201):
- logger.info("\t\tPort Pair Group successfully Created")
- else:
- status = "FAIL"
- logger.error("\t\t : Port Pair Group NOT successfully Created")
- #########################################################################
- logger.info("\t3.4 Getting Port Pair Group ID ")
+def CreateNodes():
+ logger.info("Testcase 2 : Creation of 3 VNF Nodes and Attaching Ports")
+ logger.info("2.1 Creation of Ports")
+ if (Sfc_obj.createPorts() == CREATED):
+ logger.info("Creation of Port is successfull")
+ else:
+ logger.error(" : Creation of Port is NOT successfull")
+ fail()
+ logger.info("2.2 Creation of VM-Compute-Node")
+ if (Sfc_obj.createVm() == ACCEPTED):
+ logger.info("Creation of VM is successfull")
+ else:
+ logger.error(" : Creation of VM is NOT successfull")
+ fail()
+ logger.info("2.3 Check VM Status")
+ if (Sfc_obj.checkVmState() == OK):
+ logger.info("VM are in active state")
+ else:
+ logger.error(" : VM is NOT Active")
+ fail()
+ logger.info("2.4 Router Creation")
+ if (Sfc_obj.createRouter() == CREATED):
+ logger.info("Creation of Router is Successful")
+ else:
+ logger.error(" : Router Creation is NOT Successful")
+ fail()
+ logger.info("2.5 Attachement of Interface to VM")
+ if (Sfc_obj.attachInterface() == OK):
+ logger.info("Interface attached to VM")
+ else:
+ logger.error(" : Interface NOT attached to VM")
+ fail()
+ logger.info("2.6 Attachement of FLoating Ip to VM")
+ if (Sfc_obj.addFloatingIp() == ACCEPTED):
+ logger.info("Floating Ip attached to VM SUccessful")
+ else:
+ logger.error(" : Floating Ip NOT attached to VM ")
+ fail()
- if (Sfc_obj.getPortGroup() == 200):
- logger.info("\t\tPort Pair Group ID successfully received")
- else:
- status = "FAIL"
- logger.error("\t\t : Port Pair Group ID NOT successfully received")
- #########################################################################
- logger.info("\t3.5 Creation of Flow Classifier")
- if (Sfc_obj.createFlowClassifier() == 201):
- logger.info("\t\tFlow Classifier successfully Created")
- else:
- status = "FAIL"
- logger.error("\t\t : Flow Classifier NOT successfully Created")
- print ("\n###########################################################\n")
- ########################################################################
+def ConfigSfc():
logger.info(
- "TestCase 4 : Configure Port Chain and verify flows are added")
- #########################################################################
- logger.info("\t4.1 Creation of PortChain")
- if (Sfc_obj.createPortChain() == 201):
- logger.info("\t\tPortChain successfully Created")
+ "Testcase 3 : Configure SFC [Portair,PortGroup,Flow classifer]")
+ logger.info("3.1 Creation of Port Pair")
+ if (Sfc_obj.createPortPair() == CREATED):
+ logger.info("Creation of Port pair is successful")
+ else:
+ logger.error(" : Creation of Port pair is NOT successful")
+ fail()
+ logger.info("3.2 Getting the Port Pair ID")
+ if (Sfc_obj.getPortPair() == OK):
+ logger.info("Port Pair ID is successfully got")
+ else:
+ logger.error(" : UnSuccessfully got Port Pair ID")
+ fail()
+ logger.info("3.3 Creation of Port Pair Group")
+ if (Sfc_obj.createPortGroup() == CREATED):
+ logger.info("Creation of Port Pair Group is successful")
+ else:
+ logger.error(" : Creation of Port Pair Group is NOT successful")
+ fail()
+ logger.info("3.4 Getting Port Pair Group ID ")
+ if (Sfc_obj.getPortGroup() == OK):
+ logger.info("Port Pair Group ID is successfully received")
+ else:
+ logger.error(" : Port Pair Group ID is NOT successfully got")
+ fail()
+ logger.info("3.5 Creation of Flow Classifier")
+ if (Sfc_obj.createFlowClassifier() == CREATED):
+ logger.info("Creation of Flow Classifier is successful")
+ else:
+ logger.error(" : Creation of Flow Classifier is NOT successful")
+ fail()
+ logger.info(
+ "Testcase 4 : Configure Port Chain and verify flows are added")
+ logger.info("4.1 Creation of Port Chain")
+ if (Sfc_obj.createPortChain() == CREATED):
+ logger.info("Creation of Port Chain is successful")
else:
- status = "FAIL"
- logger.error("\t\tPortChain NOT successfully Created")
- print ("\n###########################################################\n")
- #########################################################################
- logger.info("\tTestCase 5 : Verify traffic with VNF node.")
+ logger.error("Creation of Port Chain is NOT successful")
+
+
+def VerifySfcTraffic():
+ status = "PASS"
+ logger.info("Testcase 5 : Verify traffic with VNF node.")
if (Sfc_obj.loginToVM() == "1"):
- logger.info("\t\tSFC function Working")
+ logger.info("SFC function Working")
else:
+ logger.error(" : SFC function not working")
status = "FAIL"
- logger.error("\t\t : SFC function not working")
- print ("\n###########################################################\n")
- #########################################################################
- logger.info("TestCase 6 : Remove the Port Chain and Verify the traffic")
- if (Sfc_obj.deletePortChain() == 204):
+
+ logger.info("Testcase 6 : Remove the Port Chain and Verify the traffic")
+ if (Sfc_obj.deletePortChain() == NO_CONTENT):
if (Sfc_obj.loginToVM() == "0"):
- logger.info("\t\tSFC function is removed Successfully")
+ logger.info("SFC function is removed Successfully")
else:
+ logger.error(":SFC function not Removed. Have some problem")
status = "FAIL"
- logger.error("\t\t:SFC function not Removed.Have some problem")
- if (Sfc_obj.deleteFlowClassifier() == 204):
- if (Sfc_obj.deletePortGroup() == 204):
- if (Sfc_obj.deletePortPair() == 204):
+ if (Sfc_obj.deleteFlowClassifier() == NO_CONTENT):
+ if (Sfc_obj.deletePortGroup() == NO_CONTENT):
+ if (Sfc_obj.deletePortPair() == NO_CONTENT):
logger.info(
- "\t\tSFC configuration is deleted successfully")
+ "SFC configuration is deleted successfully")
else:
- status = "FAIL"
- logger.error("\t\t : Port pair configuration is NOT\
+ logger.error(" : Port pair configuration is NOT\
deleted successfully")
+ status = "FAIL"
else:
- status = "FAIL"
- logger.error("\t\t : Port Group configuration is NOT \
+ logger.error(" : Port Group configuration is NOT \
deleted successfully")
- else:
status = "FAIL"
- logger.error("\t\t : Flow classifier configuration is NOT \
+ else:
+ logger.error(" : Flow classifier configuration is NOT \
deleted successfully")
+ status = "FAIL"
else:
- status = "FAIL"
- logger.error("\t\t:PortChain configuration is NOT deleted \
+ logger.error(":PortChain configuration is NOT deleted \
successfully")
- print ("\n###########################################################n")
- #######################################################################
+ status = "FAIL"
+ if (status == "FAIL"):
+ fail()
+
+
+def CleanUp():
logger.info("Testcase 7 : Cleanup")
- if (Sfc_obj.cleanup() == 204):
- logger.info("\t\tCleanUp is successfull")
+ if (Sfc_obj.cleanup() == NO_CONTENT):
+ logger.info("CleanUp is successfull")
else:
- status = "FAIL"
- logger.error("\t\t : CleanUp is NOT successfull")
- print ("###############################################################")
+ logger.error(" : CleanUp is NOT successfull")
+
+
+def fail():
+ CleanUp()
+ exit(-1)
+
+
+def main():
+ """Script to Test the SFC scenarios in ONOS."""
+ start_time = time.time()
+ PreConfig()
+ CreateNodes()
+ ConfigSfc()
+ VerifySfcTraffic()
+ CleanUp()
+ status = "PASS"
logger.info("Summary :")
try:
logger.debug("Push ONOS SFC results into DB")
@@ -226,8 +224,5 @@ class Sfc:
except:
logger.error("Error pushing results into Database")
- if status == "FAIL":
- EXIT_CODE = -1
- exit(EXIT_CODE)
-
- print("############################END OF SCRIPT ######################")
+if __name__ == '__main__':
+ main()
diff --git a/testcases/Controllers/ONOS/Sfc/Sfc_fun.py b/testcases/Controllers/ONOS/Sfc/Sfc_fun.py
index 0d9eaf80d..69e076d05 100644
--- a/testcases/Controllers/ONOS/Sfc/Sfc_fun.py
+++ b/testcases/Controllers/ONOS/Sfc/Sfc_fun.py
@@ -1,14 +1,19 @@
-"""SFC functions."""
+import os
+import re
+import time
import json
+import requests
+
from multiprocessing import Process
from multiprocessing import Queue
-import os
-import re
-import time
+from pexpect import pxssh
import functest.utils.functest_logger as ft_logger
-from pexpect import pxssh
-import requests
+
+OK = 200
+CREATED = 201
+ACCEPTED = 202
+NO_CONTENT = 204
class Sfc_fun:
@@ -105,10 +110,10 @@ class Sfc_fun:
url = 'http://' + self.keystone_hostname + \
':5000/' + self.osver + '/tokens'
data = '{"auth": {"tenantName": "admin", "passwordCredentials":\
- { "username": "admin", "password": "console"}}}'
+ { "username": "admin", "password": "console"}}}'
headers = {"Accept": "application/json"}
response = requests.post(url, headers=headers, data=data)
- if (response.status_code == 200):
+ if (response.status_code == OK):
json1_data = json.loads(response.content)
self.logger.debug(response.status_code)
self.logger.debug(response.content)
@@ -133,7 +138,7 @@ class Sfc_fun:
headers = {"Accept": "application/json",
"X-Auth-Token": self.token_id}
response = requests.post(url, headers=headers, data=data)
- if (response.status_code == 201):
+ if (response.status_code == CREATED):
self.logger.debug(response.status_code)
self.logger.debug(response.content)
@@ -164,7 +169,7 @@ class Sfc_fun:
"X-Auth-Token": self.token_id}
response = requests.post(url, headers=headers, data=data)
- if (response.status_code == 201):
+ if (response.status_code == CREATED):
self.logger.debug(response.status_code)
self.logger.debug(response.content)
json1_data = json.loads(response.content)
@@ -197,7 +202,7 @@ class Sfc_fun:
"X-Auth-Token": self.token_id}
response = requests.post(url, headers=headers, data=data)
- if (response.status_code == 201):
+ if (response.status_code == CREATED):
self.logger.debug(response.status_code)
self.logger.debug(response.content)
@@ -217,10 +222,10 @@ class Sfc_fun:
headers = {"Accept": "application/json", "Content-Type": "application/\
octet-stream", "X-Auth-Token": self.token_id}
response = requests.get(url, headers=headers)
- if (response.status_code == 200):
+ if (response.status_code == OK):
self.logger.debug(response.status_code)
self.logger.debug(response.content)
- self.logger.info("\tFireWall Image is available")
+ self.logger.info("FireWall Image is available")
json1_data = json.loads(response.content)
self.logger.debug(json1_data)
self.image_id = json1_data['images'][0]['id']
@@ -233,10 +238,10 @@ class Sfc_fun:
"application/json", "X-Auth-Token": self.token_id}
response = requests.get(url, headers=headers)
- if (response.status_code == 200):
+ if (response.status_code == OK):
self.logger.debug(response.status_code)
self.logger.debug(response.content)
- self.logger.info("\tFlavor is available")
+ self.logger.info("Flavor is available")
json1_data = json.loads(response.content)
self.logger.debug(json1_data)
self.flavorRef = json1_data['flavors'][0]['id']
@@ -267,10 +272,11 @@ class Sfc_fun:
headers = {"Accept": "application/json", "Content-Type":
"application/json", "X-Auth-Token": self.token_id}
response = requests.post(url, headers=headers, data=data)
- if (response.status_code == 202):
+ if (response.status_code == ACCEPTED):
self.logger.debug(response.status_code)
self.logger.debug(response.content)
- self.logger.info("\tCreation of VM is successfull")
+ info = "Creation of VM" + str(y) + " is successfull"
+ self.logger.debug(info)
json1_data = json.loads(response.content)
self.logger.debug(json1_data)
@@ -291,18 +297,19 @@ class Sfc_fun:
headers = {"Accept": "application/json", "X-Auth-Token":
self.token_id}
response = requests.get(url, headers=headers)
- if (response.status_code == 200):
+ if (response.status_code == OK):
self.logger.debug(response.status_code)
self.logger.debug(response.content)
json1_data = json.loads(response.content)
self.logger.debug(json1_data)
self.vm_active = json1_data['servers'][0]['status']
if (self.vm_active == "ACTIVE"):
- print ("\t\t\t\t\t\tVM" + str(y) + " is Active : " +
- self.vm_active)
+ info = "VM" + str(y) + \
+ " is Active : " + self.vm_active
else:
- print ("\t\t\t\t\t\tVM" + str(y) + " is NOT Active : " +
- self.vm_active)
+ info = "VM" + str(y) + " is NOT Active : " + \
+ self.vm_active
+ self.logger.debug(info)
else:
return(response.status_code)
return(response.status_code)
@@ -328,9 +335,10 @@ class Sfc_fun:
headers = {"Accept": "application/json", "X-Auth-Token":
self.token_id}
response = requests.post(url, headers=headers, data=data)
- if (response.status_code == 201):
- print ("\t\t\t\tCreation of Port Pair PP" + str(p) +
- " is successful")
+ if (response.status_code == CREATED):
+ info = "Creation of Port Pair PP" + str(p) + \
+ " is successful"
+ self.logger.debug(info)
else:
return(response.status_code)
@@ -345,7 +353,7 @@ class Sfc_fun:
self.token_id}
response = requests.get(url, headers=headers)
- if (response.status_code == 200):
+ if (response.status_code == OK):
self.logger.debug(response.status_code)
self.logger.debug(response.content)
json1_data = json.loads(response.content)
@@ -373,9 +381,10 @@ class Sfc_fun:
headers = {"Accept": "application/json", "X-Auth-Token":
self.token_id}
response = requests.post(url, headers=headers, data=data)
- if (response.status_code == 201):
- print ("\t\t\t\tCreation of Port Group PG" + str(p) +
- "is successful")
+ if (response.status_code == CREATED):
+ info = "Creation of Port Group PG" + str(p) + \
+ "is successful"
+ self.logger.debug(info)
else:
return(response.status_code)
@@ -390,7 +399,7 @@ class Sfc_fun:
self.token_id}
response = requests.get(url, headers=headers)
- if (response.status_code == 200):
+ if (response.status_code == OK):
self.logger.debug(response.status_code)
self.logger.debug(response.content)
json1_data = json.loads(response.content)
@@ -421,10 +430,10 @@ class Sfc_fun:
headers = {"Accept": "application/json",
"X-Auth-Token": self.token_id}
response = requests.post(url, headers=headers, data=data)
- if (response.status_code == 201):
+ if (response.status_code == CREATED):
json1_data = json.loads(response.content)
self.flow_class_if = json1_data['flow_classifier']['id']
- self.logger.info("\tCreation of Flow Classifier is successful")
+ self.logger.debug("Creation of Flow Classifier is successful")
return(response.status_code)
else:
return(response.status_code)
@@ -452,8 +461,8 @@ class Sfc_fun:
"Content-Type": "application/json",
"X-Auth-Token": self.token_id}
response = requests.post(url, headers=headers, data=data)
- if (response.status_code == 201):
- self.logger.info("\tCreation of PORT CHAIN is successful")
+ if (response.status_code == CREATED):
+ self.logger.debug("Creation of PORT CHAIN is successful")
json1_data = json.loads(response.content)
self.PC_id = json1_data['port_chain']['id']
return(response.status_code)
@@ -466,13 +475,13 @@ class Sfc_fun:
response = requests.get('http://' + self.onos_hostname +
':8181/onos/v1/flows',
auth=("karaf", "karaf"))
- if (response.status_code == 200):
- self.logger.info("\tFlow is successfully Queries")
+ if (response.status_code == OK):
+ self.logger.debug("Flow is successfully Queries")
json1_data = json.loads(response.content)
self.flowadd = json1_data['flows'][0]['state']
if (self.flowadd == "ADDED"):
- self.logger.info("\tFlow is successfully added to OVS")
+ self.logger.info("Flow is successfully added to OVS")
return(response.status_code)
else:
return(404)
@@ -495,10 +504,10 @@ class Sfc_fun:
headers = {"Accept": "application/json",
"X-Auth-Token": self.token_id}
response = requests.post(url, headers=headers, data=data)
- if (response.status_code == 201):
+ if (response.status_code == CREATED):
self.logger.debug(response.status_code)
self.logger.debug(response.content)
- self.logger.info("\tCreation of Router is successfull")
+ self.logger.debug("Creation of Router is successfull")
json1_data = json.loads(response.content)
self.logger.debug(json1_data)
self.router_id = json1_data['router']['id']
@@ -513,7 +522,7 @@ class Sfc_fun:
headers = {"Accept": "application/json",
"X-Auth-Token": self.token_id}
response = requests.get(url, headers=headers)
- if (response.status_code == 200):
+ if (response.status_code == OK):
self.logger.debug(response.status_code)
self.logger.debug(response.content)
json1_data = json.loads(response.content)
@@ -525,7 +534,7 @@ class Sfc_fun:
return(response.status_code)
############################################################
- self.logger.info("\tAttachment of Instance interface to Router")
+ self.logger.info("Attachment of Instance interface to Router")
Dicdata = {}
if self.subnetId != '':
Dicdata['subnet_id'] = self.subnetId
@@ -536,14 +545,14 @@ class Sfc_fun:
headers = {"Accept": "application/json",
"X-Auth-Token": self.token_id}
response = requests.put(url, headers=headers, data=data)
- if (response.status_code == 200):
+ if (response.status_code == OK):
self.logger.debug(response.status_code)
self.logger.debug(response.content)
- self.logger.info("\tInterface attached successfull")
+ self.logger.info("Interface attached successfull")
else:
return(response.status_code)
############################################################
- self.logger.info("\tAttachment of Gateway to Router")
+ self.logger.info("Attachment of Gateway to Router")
Dicdata1 = {}
if self.pub_net_id != 0:
@@ -557,10 +566,10 @@ class Sfc_fun:
headers = {"Accept": "application/json",
"X-Auth-Token": self.token_id}
response = requests.put(url, headers=headers, data=data)
- if (response.status_code == 200):
+ if (response.status_code == OK):
self.logger.debug(response.status_code)
self.logger.debug(response.content)
- self.logger.info("\tGateway Interface attached successfull")
+ self.logger.info("Gateway Interface attached successfull")
return(response.status_code)
else:
return(response.status_code)
@@ -576,16 +585,16 @@ class Sfc_fun:
headers = {"Accept": "application/json",
"X-Auth-Token": self.token_id}
response = requests.post(url, headers=headers, data=data)
- if (response.status_code == 200):
+ if (response.status_code == OK):
self.logger.debug(response.status_code)
self.logger.debug(response.content)
- self.logger.info("\tFloating ip created successfully")
+ self.logger.info("Floating ip created successfully")
json1_data = json.loads(response.content)
self.logger.debug(json1_data)
self.vm_public_ip.append(json1_data['floating_ip']['ip'])
self.vm_public_id.append(json1_data['floating_ip']['id'])
else:
- self.logger.error("\tFloating ip NOT created successfully")
+ self.logger.error("Floating ip NOT created successfully")
Dicdata1 = {}
if self.address != '':
@@ -598,10 +607,10 @@ class Sfc_fun:
headers = {"Accept": "application/json",
"X-Auth-Token": self.token_id}
response = requests.post(url, headers=headers, data=data)
- if(response.status_code == 202):
+ if(response.status_code == ACCEPTED):
self.logger.debug(response.status_code)
self.logger.debug(response.content)
- self.logger.info("\tPublic Ip successfully added to VM")
+ self.logger.info("Public Ip successfully added to VM")
else:
return(response.status_code)
return(response.status_code)
@@ -623,9 +632,9 @@ class Sfc_fun:
ping_re = re.search("transmitted.*received", s.before).group()
x = re.split('\s+', ping_re)
if (x[1] >= "1"):
- self.logger.info("\tPing is Successfull")
+ self.logger.info("Ping is Successfull")
else:
- self.logger.info("\tPing is NOT Successfull")
+ self.logger.info("Ping is NOT Successfull")
def vm1(queue1):
s = pxssh.pxssh()
@@ -638,10 +647,10 @@ class Sfc_fun:
output_pack = s.before
if(output_pack.find("nshc") != -1):
- self.logger.info("\tThe packet has reached VM2 Instance")
+ self.logger.info("The packet has reached VM2 Instance")
queue1.put("1")
else:
- self.logger.info("\tPacket not received in Instance")
+ self.logger.info("Packet not received in Instance")
queue1.put("0")
def ping(ip, timeout=300):
@@ -670,7 +679,7 @@ class Sfc_fun:
p1.join(10)
return (queue1.get())
else:
- print("Thread didnt run")
+ self.logger.error("Thread didnt run")
"""##################################################################"""
""" ######################## Stats Functions ################# #####"""
@@ -680,8 +689,8 @@ class Sfc_fun:
response = requests.get('http://' + self.onos_hostname +
':8181/onos/vtn/portChainDeviceMap/' +
self.PC_id, auth=("karaf", "karaf"))
- if (response.status_code == 200):
- self.logger.info("\tPortChainDeviceMap is successfully Queries")
+ if (response.status_code == OK):
+ self.logger.info("PortChainDeviceMap is successfully Queries")
return(response.status_code)
else:
return(response.status_code)
@@ -691,8 +700,8 @@ class Sfc_fun:
response = requests.get('http://' + self.onos_hostname +
':8181/onos/vtn/portChainSfMap/' +
self.PC_id, auth=("karaf", "karaf"))
- if (response.status_code == 200):
- self.logger.info("\tportChainSfMap is successfully Queries")
+ if (response.status_code == OK):
+ self.logger.info("portChainSfMap is successfully Queries")
return(response.status_code)
else:
return(response.status_code)
@@ -706,7 +715,7 @@ class Sfc_fun:
headers = {"Accept": "application/json", "Content-Type":
"application/json", "X-Auth-Token": self.token_id}
response = requests.delete(url, headers=headers)
- if (response.status_code == 200):
+ if (response.status_code == OK):
self.logger.debug(response.status_code)
self.logger.debug(response.content)
return(response.status_code)
@@ -720,7 +729,7 @@ class Sfc_fun:
headers = {"Accept": "application/json",
"X-Auth-Token": self.token_id}
response = requests.delete(url, headers=headers)
- if (response.status_code == 200):
+ if (response.status_code == OK):
self.logger.debug(response.status_code)
self.logger.debug(response.content)
return(response.status_code)
@@ -735,10 +744,9 @@ class Sfc_fun:
headers = {"Accept": "application/json", "X-Auth-Token":
self.token_id}
response = requests.delete(url, headers=headers)
- if (response.status_code == 204):
+ if (response.status_code == NO_CONTENT):
self.logger.debug(response.status_code)
self.logger.debug(response.content)
- print ("\n\t\tPort " + self.port_grp_id[p] + "Deleted")
else:
return(response.status_code)
return(response.status_code)
@@ -751,7 +759,7 @@ class Sfc_fun:
headers = {"Accept": "application/json",
"X-Auth-Token": self.token_id}
response = requests.delete(url, headers=headers)
- if (response.status_code == 204):
+ if (response.status_code == NO_CONTENT):
self.logger.debug(response.status_code)
self.logger.debug(response.content)
else:
@@ -760,21 +768,21 @@ class Sfc_fun:
def cleanup(self):
"""Cleanup."""
- print ("\n\t\tDeleting the VMs")
+ self.logger.info("Deleting VMs")
for y in range(0, 3):
url = 'http://' + self.nova_hostname + \
':8774/v2.1/servers/' + self.vm[y]
headers = {"Accept": "application/json",
"X-Auth-Token": self.token_id}
response = requests.delete(url, headers=headers)
- if (response.status_code == 204):
+ if (response.status_code == NO_CONTENT):
self.logger.debug(response.status_code)
self.logger.debug(response.content)
- print ("\n\t\tVM" + str(y) + " is Deleted : ")
+ self.logger.debug("VM" + str(y) + " is Deleted : ")
time.sleep(10)
else:
return(response.status_code)
- print ("\n\t\tDeletion of Ports")
+ self.logger.info("Deleting Ports")
for x in range(self.i, self.numTerms):
url = 'http://' + self.neutron_hostname + ':9696/' + self.osver + \
'/ports/' + self.port_num[x]
@@ -782,13 +790,13 @@ class Sfc_fun:
self.token_id}
response = requests.delete(url, headers=headers)
- if (response.status_code == 204):
+ if (response.status_code == NO_CONTENT):
self.logger.debug(response.status_code)
self.logger.debug(response.content)
- print ("\n\t\tPort" + str(x) + " Deleted")
+ self.logger.debug("Port" + str(x) + " Deleted")
else:
return(response.status_code)
- print ("\n\t\tDeleting Router")
+ self.logger.info("Deleting Router")
Dicdata = {}
Dicdata['external_gateway_info'] = {}
@@ -799,7 +807,7 @@ class Sfc_fun:
headers = {"Accept": "application/json",
"X-Auth-Token": self.token_id}
response = requests.put(url, headers=headers, data=data)
- if (response.status_code == 200):
+ if (response.status_code == OK):
self.logger.debug(response.status_code)
self.logger.debug(response.content)
Dicdata1 = {}
@@ -812,16 +820,15 @@ class Sfc_fun:
headers = {"Accept": "application/json",
"X-Auth-Token": self.token_id}
response = requests.put(url, headers=headers, data=data)
- if (response.status_code == 200):
+ if (response.status_code == OK):
url = ('http://' + self.neutron_hostname + ':9696/' +
self.osver + '/routers/' + self.router_id)
headers = {"Accept": "application/json", "X-Auth-Token":
self.token_id}
response = requests.delete(url, headers=headers)
- if (response.status_code == 204):
+ if (response.status_code == NO_CONTENT):
self.logger.debug(response.status_code)
self.logger.debug(response.content)
- print ("\n\t\tDeletion of Router is successfull")
else:
return(response.status_code)
else:
@@ -829,27 +836,26 @@ class Sfc_fun:
else:
return(response.status_code)
- print ("\n\t\tDeletion of Network")
+ self.logger.info("Deleting Network")
url = 'http://' + self.neutron_hostname + ':9696/' + self.osver + \
'/networks/' + self.net_id
headers = {"Accept": "application/json",
"X-Auth-Token": self.token_id}
response = requests.delete(url, headers=headers)
- if (response.status_code == 204):
+ if (response.status_code == NO_CONTENT):
self.logger.debug(response.status_code)
self.logger.debug(response.content)
- print ("\n\t\tNetwork deleted Successfully")
else:
return(response.status_code)
- print ("\n\t\tDeletion of Floating ip")
+ self.logger.info("Deleting Floating ip")
for ip_num in range(0, 2):
url = 'http://' + self.neutron_hostname + ':9696/' + self.osver + \
'/floatingips/' + self.vm_public_id[ip_num]
headers = {"Accept": "application/json", "X-Auth-Token":
self.token_id}
response = requests.delete(url, headers=headers)
- if (response.status_code == 204):
+ if (response.status_code == NO_CONTENT):
self.logger.debug(response.status_code)
self.logger.debug(response.content)
else:
diff --git a/testcases/Controllers/ONOS/Teston/adapters/client.py b/testcases/Controllers/ONOS/Teston/adapters/client.py
index 77de092e4..6b3285e5e 100644
--- a/testcases/Controllers/ONOS/Teston/adapters/client.py
+++ b/testcases/Controllers/ONOS/Teston/adapters/client.py
@@ -10,15 +10,19 @@ Description:
# http://www.apache.org/licenses/LICENSE-2.0
#
"""
-from environment import environment
-import time
+import json
import pexpect
import requests
-import json
+import time
+
+from environment import environment
+import functest.utils.functest_logger as ft_logger
class client(environment):
+ logger = ft_logger.Logger("client").getLogger()
+
def __init__(self):
environment.__init__(self)
self.loginfo = environment()
@@ -50,7 +54,7 @@ class client(environment):
[len(lastshowscreeninfo)::])
lastshowscreeninfo = curshowscreeninfo
if Result == 0:
- print "Done!"
+ self.logger.info("Done!")
return
time.sleep(1)
circletime += 1
@@ -61,7 +65,7 @@ class client(environment):
def onosstart(self):
# This is the compass run machine user&pass,you need to modify
- print "Test Begin....."
+ self.logger.info("Test Begin.....")
self.OnosConnectionSet()
masterhandle = self.SSHlogin(self.localhost, self.masterusername,
self.masterpassword)
diff --git a/testcases/Controllers/ONOS/Teston/adapters/connection.py b/testcases/Controllers/ONOS/Teston/adapters/connection.py
index 16f2ef32c..b2a2e3d88 100644
--- a/testcases/Controllers/ONOS/Teston/adapters/connection.py
+++ b/testcases/Controllers/ONOS/Teston/adapters/connection.py
@@ -16,11 +16,15 @@ Description:
import os
import pexpect
import re
+
from foundation import foundation
+import functest.utils.functest_logger as ft_logger
class connection(foundation):
+ logger = ft_logger.Logger("connection").getLogger()
+
def __init__(self):
foundation.__init__(self)
self.loginfo = foundation()
@@ -33,7 +37,7 @@ class connection(foundation):
username: login user name
password: login password
"""
- print("Now Adding an user to known hosts " + ipaddr)
+ self.logger.info("Now Adding an user to known hosts " + ipaddr)
login = handle
login.sendline("ssh -l %s -p 8101 %s" % (username, ipaddr))
index = 0
@@ -78,7 +82,7 @@ class connection(foundation):
"""
Generate ssh keys, used for some server have no sshkey.
"""
- print "Now Generating SSH keys..."
+ self.logger.info("Now Generating SSH keys...")
# Here file name may be id_rsa or id_ecdsa or others
# So here will have a judgement
keysub = handle
@@ -112,7 +116,7 @@ class connection(foundation):
parameters:
password: root login password
"""
- print("Now changing to user root")
+ self.logger.info("Now changing to user root")
login = pexpect.spawn("su - root")
index = 0
while index != 2:
@@ -129,7 +133,7 @@ class connection(foundation):
"""
Exit root user.
"""
- print("Now Release user root")
+ self.logger.info("Now Release user root")
login = pexpect.spawn("exit")
index = login.expect(['logout', pexpect.EOF, pexpect.TIMEOUT])
if index == 0:
@@ -145,7 +149,7 @@ class connection(foundation):
parameters:
envalue: environment value to add
"""
- print "Now Adding bash environment"
+ self.logger.info("Now Adding bash environment")
fileopen = open("/etc/profile", 'r')
findContext = 1
while findContext:
@@ -165,7 +169,7 @@ class connection(foundation):
Change ONOS root path in file:bash_profile
onospath: path of onos root
"""
- print "Now Changing ONOS Root Path"
+ self.logger.info("Now Changing ONOS Root Path")
filepath = onospath + 'onos/tools/dev/bash_profile'
line = open(filepath, 'r').readlines()
lenall = len(line) - 1
@@ -175,7 +179,7 @@ class connection(foundation):
NewFile = open(filepath, 'w')
NewFile.writelines(line)
NewFile.close
- print "Done!"
+ self.logger.info("Done!")
def OnosConnectionSet(self):
"""
diff --git a/testcases/Controllers/ONOS/Teston/adapters/environment.py b/testcases/Controllers/ONOS/Teston/adapters/environment.py
index 231677333..f2755b669 100644
--- a/testcases/Controllers/ONOS/Teston/adapters/environment.py
+++ b/testcases/Controllers/ONOS/Teston/adapters/environment.py
@@ -15,17 +15,21 @@ Description:
#
"""
-import os
-import time
import pexpect
+import pxssh
import re
+import os
import sys
-import pxssh
+import time
+
from connection import connection
+import functest.utils.functest_logger as ft_logger
class environment(connection):
+ logger = ft_logger.Logger("environment").getLogger()
+
def __init__(self):
connection.__init__(self)
self.loginfo = connection()
@@ -39,9 +43,9 @@ class environment(connection):
handle: current working handle
codeurl: clone code url
"""
- print "Now loading test codes! Please wait in patient..."
+ self.logger.info("Now loading test codes! Please wait in patient...")
originalfolder = sys.path[0]
- print originalfolder
+ self.logger.info(originalfolder)
gitclone = handle
gitclone.sendline("git clone " + codeurl)
index = 0
@@ -82,7 +86,7 @@ class environment(connection):
parameters:
handle(input): current working handle
"""
- print "Now Cleaning test environment"
+ self.logger.info("Now Cleaning test environment")
handle.sendline("sudo apt-get install -y mininet")
handle.prompt()
handle.sendline("sudo pip install configobj")
@@ -102,7 +106,7 @@ class environment(connection):
cmd(input): onos-push-keys xxx(xxx is device)
password(input): login in password
"""
- print "Now Pushing Onos Keys:" + cmd
+ self.logger.info("Now Pushing Onos Keys:" + cmd)
Pushkeys = handle
Pushkeys.sendline(cmd)
Result = 0
@@ -121,7 +125,7 @@ class environment(connection):
break
time.sleep(2)
Pushkeys.prompt()
- print "Done!"
+ self.logger.info("Done!")
def SetOnosEnvVar(self, handle, masterpass, agentpass):
"""
@@ -131,13 +135,14 @@ class environment(connection):
masterpass: scripts running server's password
agentpass: onos cluster&compute node password
"""
- print "Now Setting test environment"
+ self.logger.info("Now Setting test environment")
for host in self.hosts:
- print "try to connect " + str(host)
+ self.logger.info("try to connect " + str(host))
result = self.CheckSshNoPasswd(host)
if not result:
- print ("ssh login failed,try to copy master publickey" +
- "to agent " + str(host))
+ self.logger.info(
+ "ssh login failed,try to copy master publickey" +
+ "to agent " + str(host))
self.CopyPublicKey(host)
self.OnosPushKeys(handle, "onos-push-keys " + self.OCT, masterpass)
self.OnosPushKeys(handle, "onos-push-keys " + self.OC1, agentpass)
@@ -173,7 +178,7 @@ class environment(connection):
user: onos&compute node user
password: onos&compute node password
"""
- print "Now Changing ONOS name&password"
+ self.logger.info("Now Changing ONOS name&password")
filepath = self.home + '/onos/tools/build/envDefaults'
line = open(filepath, 'r').readlines()
lenall = len(line) - 1
@@ -187,7 +192,7 @@ class environment(connection):
NewFile = open(filepath, 'w')
NewFile.writelines(line)
NewFile.close
- print "Done!"
+ self.logger.info("Done!")
def ChangeTestCasePara(self, testcase, user, password):
"""
@@ -196,7 +201,7 @@ class environment(connection):
user: onos&compute node user
password: onos&compute node password
"""
- print "Now Changing " + testcase + " name&password"
+ self.logger.info("Now Changing " + testcase + " name&password")
if self.masterusername == 'root':
filepath = '/root/'
else:
@@ -232,7 +237,7 @@ class environment(connection):
login.sendline('ls -l')
# match prompt
login.prompt()
- print("SSH login " + ipaddr + " success!")
+ self.logger.info("SSH login " + ipaddr + " success!")
return login
def SSHRelease(self, handle):
@@ -256,7 +261,7 @@ class environment(connection):
str(publickey) + ">>/root/.ssh/authorized_keys\'")
tmphandle.prompt()
self.SSHRelease(tmphandle)
- print "Add OCT PublicKey to " + host + " success"
+ self.logger.info("Add OCT PublicKey to " + host + " success")
def OnosEnvSetup(self, handle):
"""
diff --git a/testcases/Controllers/ONOS/Teston/adapters/foundation.py b/testcases/Controllers/ONOS/Teston/adapters/foundation.py
index 70c84ac02..5c42c35e8 100644
--- a/testcases/Controllers/ONOS/Teston/adapters/foundation.py
+++ b/testcases/Controllers/ONOS/Teston/adapters/foundation.py
@@ -17,8 +17,7 @@ import os
import re
import time
-import yaml
-from functest.utils.functest_utils import FUNCTEST_REPO as FUNCTEST_REPO
+import functest.utils.functest_utils as ft_utils
class foundation:
@@ -26,7 +25,7 @@ class foundation:
def __init__(self):
# currentpath = os.getcwd()
- REPO_PATH = FUNCTEST_REPO + '/'
+ REPO_PATH = ft_utils.FUNCTEST_REPO + '/'
currentpath = REPO_PATH + 'testcases/Controllers/ONOS/Teston/CI'
self.cipath = currentpath
self.logdir = os.path.join(currentpath, 'log')
@@ -49,42 +48,36 @@ class foundation:
filemode='w')
filelog = logging.FileHandler(self.logfilepath)
logging.getLogger('Functest').addHandler(filelog)
- print loginfo
logging.info(loginfo)
def getdefaultpara(self):
"""
Get Default Parameters value
"""
- with open(os.environ["CONFIG_FUNCTEST_YAML"]) as f:
- functest_yaml = yaml.safe_load(f)
-
- self.Result_DB = str(functest_yaml.get("results").get("test_db_url"))
- self.masterusername = str(functest_yaml.get("ONOS").get("general").
- get('onosbench_username'))
- self.masterpassword = str(functest_yaml.get("ONOS").get("general").
- get("onosbench_password"))
- self.agentusername = str(functest_yaml.get("ONOS").get("general").
- get("onoscli_username"))
- self.agentpassword = str(functest_yaml.get("ONOS").get("general").
- get("onoscli_password"))
- self.runtimeout = functest_yaml.get("ONOS").get("general").get(
- "runtimeout")
- self.OCT = str(functest_yaml.get("ONOS").get("environment").get("OCT"))
- self.OC1 = str(functest_yaml.get("ONOS").get("environment").get("OC1"))
- self.OC2 = str(functest_yaml.get("ONOS").get("environment").get("OC2"))
- self.OC3 = str(functest_yaml.get("ONOS").get("environment").get("OC3"))
- self.OCN = str(functest_yaml.get("ONOS").get("environment").get("OCN"))
- self.OCN2 = str(functest_yaml.get("ONOS").
- get("environment").get("OCN2"))
- self.installer_master = str(functest_yaml.get("ONOS").
- get("environment").get("installer_master"))
- self.installer_master_username = str(functest_yaml.get("ONOS").
- get("environment").
- get("installer_master_username"))
- self.installer_master_password = str(functest_yaml.get("ONOS").
- get("environment").
- get("installer_master_password"))
+ self.Result_DB = str(
+ ft_utils.get_functest_config('results.test_db_url'))
+ self.masterusername = str(
+ ft_utils.get_functest_config('ONOS.general.onosbench_username'))
+ self.masterpassword = str(
+ ft_utils.get_functest_config('ONOS.general.onosbench_password'))
+ self.agentusername = str(
+ ft_utils.get_functest_config('ONOS.general.onoscli_username'))
+ self.agentpassword = str(
+ ft_utils.get_functest_config('ONOS.general.onoscli_password'))
+ self.runtimeout = \
+ ft_utils.get_functest_config('ONOS.general.runtimeout')
+ self.OCT = str(ft_utils.get_functest_config('ONOS.environment.OCT'))
+ self.OC1 = str(ft_utils.get_functest_config('ONOS.environment.OC1'))
+ self.OC2 = str(ft_utils.get_functest_config('ONOS.environment.OC2'))
+ self.OC3 = str(ft_utils.get_functest_config('ONOS.environment.OC3'))
+ self.OCN = str(ft_utils.get_functest_config('ONOS.environment.OCN'))
+ self.OCN2 = str(ft_utils.get_functest_config('ONOS.environment.OCN2'))
+ self.installer_master = str(
+ ft_utils.get_functest_config('ONOS.environment.installer_master'))
+ self.installer_master_username = str(ft_utils.get_functest_config(
+ 'ONOS.environment.installer_master_username'))
+ self.installer_master_password = str(ft_utils.get_functest_config(
+ 'ONOS.environment.installer_master_password'))
self.hosts = [self.OC1, self.OCN, self.OCN2]
self.localhost = self.OCT
diff --git a/testcases/Controllers/ONOS/Teston/onosfunctest.py b/testcases/Controllers/ONOS/Teston/onosfunctest.py
index 01537b990..c8045fd12 100755
--- a/testcases/Controllers/ONOS/Teston/onosfunctest.py
+++ b/testcases/Controllers/ONOS/Teston/onosfunctest.py
@@ -20,11 +20,11 @@ import re
import time
import argparse
+from neutronclient.v2_0 import client as neutronclient
+
import functest.utils.functest_logger as ft_logger
-import functest.utils.functest_utils as functest_utils
+import functest.utils.functest_utils as ft_utils
import functest.utils.openstack_utils as openstack_utils
-from functest.utils.functest_utils import FUNCTEST_REPO as REPO_PATH
-from neutronclient.v2_0 import client as neutronclient
parser = argparse.ArgumentParser()
parser.add_argument("-t", "--testcase", help="Testcase name")
@@ -35,12 +35,11 @@ args = parser.parse_args()
logger = ft_logger.Logger("onos").getLogger()
# onos parameters
-TEST_DB = functest_utils.get_parameter_from_yaml(
- "results.test_db_url")
-ONOS_REPO_PATH = functest_utils.get_parameter_from_yaml(
- "general.directories.dir_repos")
-ONOS_CONF_DIR = functest_utils.get_parameter_from_yaml(
- "general.directories.dir_functest_conf")
+TEST_DB = ft_utils.get_functest_config("results.test_db_url")
+ONOS_REPO_PATH = \
+ ft_utils.get_functest_config("general.directories.dir_repos")
+ONOS_CONF_DIR = \
+ ft_utils.get_functest_config("general.directories.dir_functest_conf")
ONOSCI_PATH = ONOS_REPO_PATH + "/"
starttime = datetime.datetime.now()
@@ -49,14 +48,14 @@ HOME = os.environ['HOME'] + "/"
INSTALLER_TYPE = os.environ['INSTALLER_TYPE']
DEPLOY_SCENARIO = os.environ['DEPLOY_SCENARIO']
ONOSCI_PATH = ONOS_REPO_PATH + "/"
-GLANCE_IMAGE_NAME = functest_utils.get_parameter_from_yaml(
- "onos_sfc.image_name")
-GLANCE_IMAGE_FILENAME = functest_utils.get_parameter_from_yaml(
- "onos_sfc.image_file_name")
-GLANCE_IMAGE_PATH = functest_utils.get_parameter_from_yaml(
- "general.directories.dir_functest_data") + "/" + GLANCE_IMAGE_FILENAME
-SFC_PATH = REPO_PATH + "/" + functest_utils.get_parameter_from_yaml(
- "general.directories.dir_onos_sfc")
+GLANCE_IMAGE_NAME = ft_utils.get_functest_config("onos_sfc.image_name")
+GLANCE_IMAGE_FILENAME = \
+ ft_utils.get_functest_config("onos_sfc.image_file_name")
+GLANCE_IMAGE_PATH = \
+ ft_utils.get_functest_config("general.directories.dir_functest_data") + \
+ "/" + GLANCE_IMAGE_FILENAME
+SFC_PATH = ft_utils.FUNCTEST_REPO + "/" + \
+ ft_utils.get_functest_config("general.directories.dir_onos_sfc")
def RunScript(testname):
@@ -243,12 +242,12 @@ def OnosTest():
except:
logger.error("Unable to set ONOS criteria")
- functest_utils.push_results_to_db("functest",
- "onos",
- start_time,
- stop_time,
- status,
- result)
+ ft_utils.push_results_to_db("functest",
+ "onos",
+ start_time,
+ stop_time,
+ status,
+ result)
except:
logger.error("Error pushing results into Database")
diff --git a/testcases/OpenStack/examples/create_instance_and_ip.py b/testcases/OpenStack/examples/create_instance_and_ip.py
index 3d41e5dde..50cdf8a57 100755
--- a/testcases/OpenStack/examples/create_instance_and_ip.py
+++ b/testcases/OpenStack/examples/create_instance_and_ip.py
@@ -32,33 +32,30 @@ HOME = os.environ['HOME'] + "/"
VM_BOOT_TIMEOUT = 180
-INSTANCE_NAME = ft_utils.get_parameter_from_yaml("example.example_vm_name")
-FLAVOR = ft_utils.get_parameter_from_yaml("example.example_flavor")
-IMAGE_NAME = ft_utils.get_parameter_from_yaml("example.example_image_name")
-IMAGE_FILENAME = ft_utils.get_parameter_from_yaml(
- "general.openstack.image_file_name")
-IMAGE_FORMAT = ft_utils.get_parameter_from_yaml(
- "general.openstack.image_disk_format")
-IMAGE_PATH = ft_utils.get_parameter_from_yaml(
- "general.directories.dir_functest_data") + "/" + IMAGE_FILENAME
+INSTANCE_NAME = ft_utils.get_functest_config("example.example_vm_name")
+FLAVOR = ft_utils.get_functest_config("example.example_flavor")
+IMAGE_NAME = ft_utils.get_functest_config("example.example_image_name")
+IMAGE_FILENAME = \
+ ft_utils.get_functest_config("general.openstack.image_file_name")
+IMAGE_FORMAT = \
+ ft_utils.get_functest_config("general.openstack.image_disk_format")
+IMAGE_PATH = \
+ ft_utils.get_functest_config("general.directories.dir_functest_data") + \
+ "/" + IMAGE_FILENAME
# NEUTRON Private Network parameters
-NET_NAME = ft_utils.get_parameter_from_yaml(
- "example.example_private_net_name")
-SUBNET_NAME = ft_utils.get_parameter_from_yaml(
- "example.example_private_subnet_name")
-SUBNET_CIDR = ft_utils.get_parameter_from_yaml(
- "example.example_private_subnet_cidr")
-ROUTER_NAME = ft_utils.get_parameter_from_yaml(
- "example.example_router_name")
-
-SECGROUP_NAME = ft_utils.get_parameter_from_yaml(
- "example.example_sg_name")
-SECGROUP_DESCR = ft_utils.get_parameter_from_yaml(
- "example.example_sg_descr")
-
-TEST_DB = ft_utils.get_parameter_from_yaml("results.test_db_url")
+NET_NAME = ft_utils.get_functest_config("example.example_private_net_name")
+SUBNET_NAME = \
+ ft_utils.get_functest_config("example.example_private_subnet_name")
+SUBNET_CIDR = \
+ ft_utils.get_functest_config("example.example_private_subnet_cidr")
+ROUTER_NAME = ft_utils.get_functest_config("example.example_router_name")
+
+SECGROUP_NAME = ft_utils.get_functest_config("example.example_sg_name")
+SECGROUP_DESCR = ft_utils.get_functest_config("example.example_sg_descr")
+
+TEST_DB = ft_utils.get_functest_config("results.test_db_url")
def main():
diff --git a/testcases/OpenStack/rally/blacklist.txt b/testcases/OpenStack/rally/blacklist.txt
new file mode 100644
index 000000000..02d85f4d8
--- /dev/null
+++ b/testcases/OpenStack/rally/blacklist.txt
@@ -0,0 +1,8 @@
+-
+ scenarios:
+ - os-nosdn-lxd-ha
+ - os-nosdn-lxd-noha
+ installers:
+ - joid
+ tests:
+ - NovaServers.boot_server_from_volume_and_delete
diff --git a/testcases/OpenStack/rally/run_rally-cert.py b/testcases/OpenStack/rally/run_rally-cert.py
index 85d21d9bd..29fd0a334 100755
--- a/testcases/OpenStack/rally/run_rally-cert.py
+++ b/testcases/OpenStack/rally/run_rally-cert.py
@@ -22,11 +22,12 @@ import subprocess
import time
import argparse
+import iniparse
+import yaml
+
import functest.utils.functest_logger as ft_logger
-import functest.utils.functest_utils as functest_utils
+import functest.utils.functest_utils as ft_utils
import functest.utils.openstack_utils as os_utils
-import iniparse
-from functest.utils.functest_utils import FUNCTEST_REPO as REPO_PATH
tests = ['authenticate', 'glance', 'cinder', 'heat', 'keystone',
'neutron', 'nova', 'quotas', 'requests', 'vm', 'all']
@@ -71,13 +72,13 @@ else:
logger = ft_logger.Logger("run_rally").getLogger()
-functest_yaml = functest_utils.get_functest_yaml()
-
HOME = os.environ['HOME'] + "/"
-RALLY_DIR = REPO_PATH + '/' + functest_yaml.get("general").get(
- "directories").get("dir_rally")
+RALLY_DIR = ft_utils.FUNCTEST_REPO + '/' + \
+ ft_utils.get_functest_config('general.directories.dir_rally')
TEMPLATE_DIR = RALLY_DIR + "scenario/templates"
SUPPORT_DIR = RALLY_DIR + "scenario/support"
+TEMP_DIR = RALLY_DIR + "var"
+BLACKLIST_FILE = RALLY_DIR + "blacklist.txt"
FLAVOR_NAME = "m1.tiny"
USERS_AMOUNT = 2
@@ -85,25 +86,27 @@ TENANTS_AMOUNT = 3
ITERATIONS_AMOUNT = 10
CONCURRENCY = 4
-RESULTS_DIR = functest_yaml.get("general").get("directories").get(
- "dir_rally_res")
-TEMPEST_CONF_FILE = functest_yaml.get("general").get("directories").get(
- "dir_results") + '/tempest/tempest.conf'
-TEST_DB = functest_yaml.get("results").get("test_db_url")
-
-PRIVATE_NET_NAME = functest_yaml.get("rally").get("network_name")
-PRIVATE_SUBNET_NAME = functest_yaml.get("rally").get("subnet_name")
-PRIVATE_SUBNET_CIDR = functest_yaml.get("rally").get("subnet_cidr")
-ROUTER_NAME = functest_yaml.get("rally").get("router_name")
-
-GLANCE_IMAGE_NAME = functest_yaml.get("general").get("openstack").get(
- "image_name")
-GLANCE_IMAGE_FILENAME = functest_yaml.get("general").get("openstack").get(
- "image_file_name")
-GLANCE_IMAGE_FORMAT = functest_yaml.get("general").get("openstack").get(
- "image_disk_format")
-GLANCE_IMAGE_PATH = functest_yaml.get("general").get("directories").get(
- "dir_functest_data") + "/" + GLANCE_IMAGE_FILENAME
+RESULTS_DIR = \
+ ft_utils.get_functest_config('general.directories.dir_rally_res')
+TEMPEST_CONF_FILE = \
+ ft_utils.get_functest_config('general.directories.dir_results') + \
+ '/tempest/tempest.conf'
+TEST_DB = ft_utils.get_functest_config('results.test_db_url')
+
+PRIVATE_NET_NAME = ft_utils.get_functest_config('rally.network_name')
+PRIVATE_SUBNET_NAME = ft_utils.get_functest_config('rally.subnet_name')
+PRIVATE_SUBNET_CIDR = ft_utils.get_functest_config('rally.subnet_cidr')
+ROUTER_NAME = ft_utils.get_functest_config('rally.router_name')
+
+GLANCE_IMAGE_NAME = \
+ ft_utils.get_functest_config('general.openstack.image_name')
+GLANCE_IMAGE_FILENAME = \
+ ft_utils.get_functest_config('general.openstack.image_file_name')
+GLANCE_IMAGE_FORMAT = \
+ ft_utils.get_functest_config('general.openstack.image_disk_format')
+GLANCE_IMAGE_PATH = \
+ ft_utils.get_functest_config('general.directories.dir_functest_data') + \
+ "/" + GLANCE_IMAGE_FILENAME
CINDER_VOLUME_TYPE_NAME = "volume_test"
@@ -160,6 +163,7 @@ def build_task_args(test_file_name):
task_args['image_name'] = GLANCE_IMAGE_NAME
task_args['flavor_name'] = FLAVOR_NAME
task_args['glance_image_location'] = GLANCE_IMAGE_PATH
+ task_args['glance_image_format'] = GLANCE_IMAGE_FORMAT
task_args['tmpl_dir'] = TEMPLATE_DIR
task_args['sup_dir'] = SUPPORT_DIR
task_args['users_amount'] = USERS_AMOUNT
@@ -269,6 +273,64 @@ def get_cmd_output(proc):
return result
+def apply_blacklist(case_file_name, result_file_name):
+ logger.debug("Applying blacklist...")
+ cases_file = open(case_file_name, 'r')
+ result_file = open(result_file_name, 'w')
+ black_tests = []
+
+ try:
+ installer_type = os.getenv('INSTALLER_TYPE')
+ deploy_scenario = os.getenv('DEPLOY_SCENARIO')
+ if (bool(installer_type) * bool(deploy_scenario)):
+ # if INSTALLER_TYPE and DEPLOY_SCENARIO are set we read the file
+ with open(BLACKLIST_FILE, 'r') as black_list_file:
+ black_list_yaml = yaml.safe_load(black_list_file)
+
+ for item in black_list_yaml:
+ scenarios = item['scenarios']
+ installers = item['installers']
+ if (deploy_scenario in scenarios and
+ installer_type in installers):
+ tests = item['tests']
+ black_tests.extend(tests)
+ except:
+ black_tests = []
+ logger.debug("Blacklisting not applied.")
+
+ include = True
+ for cases_line in cases_file:
+ if include:
+ for black_tests_line in black_tests:
+ if black_tests_line == cases_line.strip().rstrip(':'):
+ include = False
+ break
+ else:
+ result_file.write(str(cases_line))
+ else:
+ if cases_line.isspace():
+ include = True
+
+ cases_file.close()
+ result_file.close()
+
+
+def prepare_test_list(test_name):
+ scenario_file_name = '{}opnfv-{}.yaml'.format(RALLY_DIR + "scenario/",
+ test_name)
+ if not os.path.exists(scenario_file_name):
+ logger.info("The scenario '%s' does not exist." % scenario_file_name)
+ exit(-1)
+
+ logger.debug('Scenario fetched from : {}'.format(scenario_file_name))
+ test_file_name = '{}opnfv-{}.yaml'.format(TEMP_DIR + "/", test_name)
+
+ if not os.path.exists(TEMP_DIR):
+ os.makedirs(TEMP_DIR)
+
+ apply_blacklist(scenario_file_name, test_file_name)
+
+
def run_task(test_name):
#
# the "main" function of the script who launch rally for a task
@@ -284,13 +346,7 @@ def run_task(test_name):
logger.error("Task file '%s' does not exist." % task_file)
exit(-1)
- test_file_name = '{}opnfv-{}.yaml'.format(RALLY_DIR + "scenario/",
- test_name)
- if not os.path.exists(test_file_name):
- logger.error("The scenario '%s' does not exist." % test_file_name)
- exit(-1)
-
- logger.debug('Scenario fetched from : {}'.format(test_file_name))
+ prepare_test_list(test_name)
cmd_line = ("rally task start --abort-on-sla-failure " +
"--task {} ".format(task_file) +
@@ -353,12 +409,12 @@ def run_task(test_name):
if args.report:
stop_time = time.time()
logger.debug("Push Rally detailed results into DB")
- functest_utils.push_results_to_db("functest",
- "Rally_details",
- start_time,
- stop_time,
- status,
- json_data)
+ ft_utils.push_results_to_db("functest",
+ "Rally_details",
+ start_time,
+ stop_time,
+ status,
+ json_data)
def main():
@@ -477,7 +533,7 @@ def main():
case_name = "rally_full"
# Evaluation of the success criteria
- status = functest_utils.check_success_rate(case_name, success_rate)
+ status = ft_utils.check_success_rate(case_name, success_rate)
exit_code = -1
if status == "PASS":
@@ -485,12 +541,12 @@ def main():
if args.report:
logger.debug("Pushing Rally summary into DB...")
- functest_utils.push_results_to_db("functest",
- case_name,
- start_time,
- stop_time,
- status,
- payload)
+ ft_utils.push_results_to_db("functest",
+ case_name,
+ start_time,
+ stop_time,
+ status,
+ payload)
if args.noclean:
exit(exit_code)
diff --git a/testcases/OpenStack/rally/scenario/opnfv-glance.yaml b/testcases/OpenStack/rally/scenario/opnfv-glance.yaml
index adbf8b79a..3a67e7457 100644
--- a/testcases/OpenStack/rally/scenario/opnfv-glance.yaml
+++ b/testcases/OpenStack/rally/scenario/opnfv-glance.yaml
@@ -1,7 +1,7 @@
GlanceImages.create_and_delete_image:
-
args:
- {{ glance_args(location=glance_image_location) }}
+ {{ glance_args(location=glance_image_location, type=glance_image_format) }}
context:
{{ user_context(tenants_amount, users_amount, use_existing_users) }}
runner:
@@ -12,7 +12,7 @@
GlanceImages.create_and_list_image:
-
args:
- {{ glance_args(location=glance_image_location) }}
+ {{ glance_args(location=glance_image_location, type=glance_image_format) }}
context:
{{ user_context(tenants_amount, users_amount, use_existing_users) }}
runner:
@@ -32,7 +32,7 @@
GlanceImages.create_image_and_boot_instances:
-
args:
- {{ glance_args(location=glance_image_location) }}
+ {{ glance_args(location=glance_image_location, type=glance_image_format) }}
flavor:
name: {{ flavor_name }}
number_instances: 2
diff --git a/testcases/OpenStack/rally/task.yaml b/testcases/OpenStack/rally/task.yaml
index 3dded7db0..c482f120d 100644
--- a/testcases/OpenStack/rally/task.yaml
+++ b/testcases/OpenStack/rally/task.yaml
@@ -8,41 +8,41 @@
---
{% if "authenticate" in service_list %}
-{%- include "scenario/opnfv-authenticate.yaml"-%}
+{%- include "var/opnfv-authenticate.yaml"-%}
{% endif %}
{% if "cinder" in service_list %}
-{%- include "scenario/opnfv-cinder.yaml"-%}
+{%- include "var/opnfv-cinder.yaml"-%}
{% endif %}
{% if "keystone" in service_list %}
-{%- include "scenario/opnfv-keystone.yaml"-%}
+{%- include "var/opnfv-keystone.yaml"-%}
{% endif %}
{% if "nova" in service_list %}
-{%- include "scenario/opnfv-nova.yaml"-%}
+{%- include "var/opnfv-nova.yaml"-%}
{% endif %}
{% if "glance" in service_list %}
-{%- include "scenario/opnfv-glance.yaml"-%}
+{%- include "var/opnfv-glance.yaml"-%}
{% endif %}
{% if "neutron" in service_list %}
-{%- include "scenario/opnfv-neutron.yaml"-%}
+{%- include "var/opnfv-neutron.yaml"-%}
{% endif %}
{% if "quotas" in service_list %}
-{%- include "scenario/opnfv-quotas.yaml"-%}
+{%- include "var/opnfv-quotas.yaml"-%}
{% endif %}
{% if "requests" in service_list %}
-{%- include "scenario/opnfv-requests.yaml"-%}
+{%- include "var/opnfv-requests.yaml"-%}
{% endif %}
{% if "heat" in service_list %}
-{%- include "scenario/opnfv-heat.yaml"-%}
+{%- include "var/opnfv-heat.yaml"-%}
{% endif %}
{% if "vm" in service_list %}
-{%- include "scenario/opnfv-vm.yaml"-%}
+{%- include "var/opnfv-vm.yaml"-%}
{% endif %}
diff --git a/testcases/OpenStack/tempest/custom_tests/blacklist.txt b/testcases/OpenStack/tempest/custom_tests/blacklist.txt
index a2427e282..5c8581f66 100644
--- a/testcases/OpenStack/tempest/custom_tests/blacklist.txt
+++ b/testcases/OpenStack/tempest/custom_tests/blacklist.txt
@@ -79,31 +79,18 @@
# https://bugs.launchpad.net/tempest/+bug/1586931
scenarios:
- os-odl_l2-nofeature-ha
+ - os-odl_l2-nofeature-noha
- os-odl_l2-sfc-ha
+ - os-odl_l2-sfc-noha
- os-odl_l3-nofeature-ha
+ - os-odl_l3-nofeature-noha
- os-nosdn-kvm-ha
+ - os-nosdn-kvm-noha
- os-nosdn-nofeature-ha
+ - os-nosdn-nofeature-noha
- os-nosdn-ovs-ha
+ - os-nosdn-ovs-noha
installers:
- fuel
tests:
- tempest.scenario.test_server_basic_ops.TestServerBasicOps.test_server_basic_ops
-
--
- # https://bugs.opendaylight.org/show_bug.cgi?id=5586
- # https://jira.opnfv.org/browse/APEX-112
- # https://jira.opnfv.org/browse/FUNCTEST-445
- scenarios:
- - os-odl_l3-nofeature-ha
- - os-odl_l3-nofeature-noha
- installers:
- - fuel
- - apex
- - compass
- - joid
- tests:
- - tempest.api.compute.servers.test_server_actions.ServerActionsTestJSON.test_reboot_server_hard
- - tempest.scenario.test_network_basic_ops.TestNetworkBasicOps.test_network_basic_ops
- - tempest.scenario.test_server_basic_ops.TestServerBasicOps.test_server_basic_ops
- - tempest.scenario.test_volume_boot_pattern.TestVolumeBootPattern.test_volume_boot_pattern
- - tempest.scenario.test_volume_boot_pattern.TestVolumeBootPatternV2.test_volume_boot_pattern
diff --git a/testcases/OpenStack/tempest/gen_tempest_conf.py b/testcases/OpenStack/tempest/gen_tempest_conf.py
index 688a92402..ca671d00d 100755
--- a/testcases/OpenStack/tempest/gen_tempest_conf.py
+++ b/testcases/OpenStack/tempest/gen_tempest_conf.py
@@ -55,10 +55,10 @@ def configure_tempest_multisite(deployment_dir):
kingbird_conf_path = "/etc/kingbird/kingbird.conf"
installer_type = os.getenv('INSTALLER_TYPE', 'Unknown')
installer_ip = os.getenv('INSTALLER_IP', 'Unknown')
- installer_username = ft_utils.get_parameter_from_yaml(
+ installer_username = ft_utils.get_functest_config(
"multisite." + installer_type +
"_environment.installer_username")
- installer_password = ft_utils.get_parameter_from_yaml(
+ installer_password = ft_utils.get_functest_config(
"multisite." + installer_type +
"_environment.installer_password")
diff --git a/testcases/OpenStack/tempest/run_tempest.py b/testcases/OpenStack/tempest/run_tempest.py
index e93972182..2f24e96de 100755
--- a/testcases/OpenStack/tempest/run_tempest.py
+++ b/testcases/OpenStack/tempest/run_tempest.py
@@ -22,11 +22,11 @@ import sys
import time
import argparse
+import yaml
+
import functest.utils.functest_logger as ft_logger
import functest.utils.functest_utils as ft_utils
import functest.utils.openstack_utils as os_utils
-import yaml
-from functest.utils.functest_utils import FUNCTEST_REPO as FUNCTEST_REPO
modes = ['full', 'smoke', 'baremetal', 'compute', 'data_processing',
'identity', 'image', 'network', 'object_storage', 'orchestration',
@@ -58,39 +58,49 @@ args = parser.parse_args()
""" logging configuration """
logger = ft_logger.Logger("run_tempest").getLogger()
-functest_yaml = ft_utils.get_functest_yaml()
-TEST_DB = functest_yaml.get("results").get("test_db_url")
+TEST_DB = ft_utils.get_functest_config('results.test_db_url')
MODE = "smoke"
-GLANCE_IMAGE_NAME = functest_yaml.get("general").get(
- "openstack").get("image_name")
-GLANCE_IMAGE_FILENAME = functest_yaml.get("general").get(
- "openstack").get("image_file_name")
-GLANCE_IMAGE_FORMAT = functest_yaml.get("general").get(
- "openstack").get("image_disk_format")
-GLANCE_IMAGE_PATH = functest_yaml.get("general").get("directories").get(
- "dir_functest_data") + "/" + GLANCE_IMAGE_FILENAME
-PRIVATE_NET_NAME = functest_yaml.get("tempest").get("private_net_name")
-PRIVATE_SUBNET_NAME = functest_yaml.get("tempest").get("private_subnet_name")
-PRIVATE_SUBNET_CIDR = functest_yaml.get("tempest").get("private_subnet_cidr")
-ROUTER_NAME = functest_yaml.get("tempest").get("router_name")
-TENANT_NAME = functest_yaml.get("tempest").get("identity").get("tenant_name")
-TENANT_DESCRIPTION = functest_yaml.get("tempest").get("identity").get(
- "tenant_description")
-USER_NAME = functest_yaml.get("tempest").get("identity").get("user_name")
-USER_PASSWORD = functest_yaml.get("tempest").get("identity").get(
- "user_password")
-SSH_TIMEOUT = functest_yaml.get("tempest").get("validation").get(
- "ssh_timeout")
-DEPLOYMENT_MAME = functest_yaml.get("rally").get("deployment_name")
-RALLY_INSTALLATION_DIR = functest_yaml.get("general").get("directories").get(
- "dir_rally_inst")
-RESULTS_DIR = functest_yaml.get("general").get("directories").get(
- "dir_results")
+GLANCE_IMAGE_NAME = \
+ ft_utils.get_functest_config('general.openstack.image_name')
+GLANCE_IMAGE_FILENAME = \
+ ft_utils.get_functest_config('general.openstack.image_file_name')
+GLANCE_IMAGE_FORMAT = \
+ ft_utils.get_functest_config('general.openstack.image_disk_format')
+GLANCE_IMAGE_PATH = \
+ ft_utils.get_functest_config('general.directories.dir_functest_data') + \
+ "/" + GLANCE_IMAGE_FILENAME
+
+PRIVATE_NET_NAME = \
+ ft_utils.get_functest_config('tempest.private_net_name')
+PRIVATE_SUBNET_NAME = \
+ ft_utils.get_functest_config('tempest.private_subnet_name')
+PRIVATE_SUBNET_CIDR = \
+ ft_utils.get_functest_config('tempest.private_subnet_cidr')
+ROUTER_NAME = \
+ ft_utils.get_functest_config('tempest.router_name')
+TENANT_NAME = \
+ ft_utils.get_functest_config('tempest.identity.tenant_name')
+TENANT_DESCRIPTION = \
+ ft_utils.get_functest_config('tempest.identity.tenant_description')
+USER_NAME = \
+ ft_utils.get_functest_config('tempest.identity.user_name')
+USER_PASSWORD = \
+ ft_utils.get_functest_config('tempest.identity.user_password')
+SSH_TIMEOUT = \
+ ft_utils.get_functest_config('tempest.validation.ssh_timeout')
+DEPLOYMENT_MAME = \
+ ft_utils.get_functest_config('rally.deployment_name')
+RALLY_INSTALLATION_DIR = \
+ ft_utils.get_functest_config('general.directories.dir_rally_inst')
+
+RESULTS_DIR = \
+ ft_utils.get_functest_config('general.directories.dir_results')
TEMPEST_RESULTS_DIR = RESULTS_DIR + '/tempest'
-TEST_LIST_DIR = functest_yaml.get("general").get("directories").get(
- "dir_tempest_cases")
-REPO_PATH = FUNCTEST_REPO + '/'
+
+REPO_PATH = ft_utils.FUNCTEST_REPO + '/'
+TEST_LIST_DIR = \
+ ft_utils.get_functest_config('general.directories.dir_tempest_cases')
TEMPEST_CUSTOM = REPO_PATH + TEST_LIST_DIR + 'test_list.txt'
TEMPEST_BLACKLIST = REPO_PATH + TEST_LIST_DIR + 'blacklist.txt'
TEMPEST_DEFCORE = REPO_PATH + TEST_LIST_DIR + 'defcore_req.txt'
diff --git a/testcases/OpenStack/vPing/vping_util.py b/testcases/OpenStack/vPing/vping_util.py
index 7e7173aee..cf5a28dbd 100644
--- a/testcases/OpenStack/vPing/vping_util.py
+++ b/testcases/OpenStack/vPing/vping_util.py
@@ -4,43 +4,43 @@ import re
import sys
import time
-import functest.utils.functest_utils as ft_utils
-import functest.utils.openstack_utils as os_utils
import paramiko
-from functest.utils.functest_utils import FUNCTEST_REPO as REPO_PATH
from scp import SCPClient
-functest_yaml = ft_utils.get_functest_yaml()
+import functest.utils.functest_utils as ft_utils
+import functest.utils.openstack_utils as os_utils
+FUNCTEST_REPO = ft_utils.FUNCTEST_REPO
-NAME_VM_1 = functest_yaml.get("vping").get("vm_name_1")
-NAME_VM_2 = functest_yaml.get("vping").get("vm_name_2")
+NAME_VM_1 = ft_utils.get_functest_config('vping.vm_name_1')
+NAME_VM_2 = ft_utils.get_functest_config('vping.vm_name_2')
VM_BOOT_TIMEOUT = 180
VM_DELETE_TIMEOUT = 100
-PING_TIMEOUT = functest_yaml.get("vping").get("ping_timeout")
+PING_TIMEOUT = ft_utils.get_functest_config('vping.ping_timeout')
+
+GLANCE_IMAGE_NAME = ft_utils.get_functest_config('vping.image_name')
+GLANCE_IMAGE_FILENAME = \
+ ft_utils.get_functest_config('general.openstack.image_file_name')
+GLANCE_IMAGE_FORMAT = \
+ ft_utils.get_functest_config('general.openstack.image_disk_format')
+GLANCE_IMAGE_PATH = \
+ ft_utils.get_functest_config('general.directories.dir_functest_data') + \
+ "/" + GLANCE_IMAGE_FILENAME
-GLANCE_IMAGE_NAME = functest_yaml.get("vping").get("image_name")
-GLANCE_IMAGE_FILENAME = functest_yaml.get("general").get(
- "openstack").get("image_file_name")
-GLANCE_IMAGE_FORMAT = functest_yaml.get("general").get(
- "openstack").get("image_disk_format")
-GLANCE_IMAGE_PATH = functest_yaml.get("general").get("directories").get(
- "dir_functest_data") + "/" + GLANCE_IMAGE_FILENAME
-FLAVOR = functest_yaml.get("vping").get("vm_flavor")
+FLAVOR = ft_utils.get_functest_config('vping.vm_flavor')
# NEUTRON Private Network parameters
-PRIVATE_NET_NAME = functest_yaml.get("vping").get(
- "vping_private_net_name")
-PRIVATE_SUBNET_NAME = functest_yaml.get("vping").get(
- "vping_private_subnet_name")
-PRIVATE_SUBNET_CIDR = functest_yaml.get("vping").get(
- "vping_private_subnet_cidr")
-ROUTER_NAME = functest_yaml.get("vping").get(
- "vping_router_name")
+PRIVATE_NET_NAME = \
+ ft_utils.get_functest_config('vping.vping_private_net_name')
+PRIVATE_SUBNET_NAME = \
+ ft_utils.get_functest_config('vping.vping_private_subnet_name')
+PRIVATE_SUBNET_CIDR = \
+ ft_utils.get_functest_config('vping.vping_private_subnet_cidr')
+ROUTER_NAME = ft_utils.get_functest_config('vping.vping_router_name')
-SECGROUP_NAME = functest_yaml.get("vping").get("vping_sg_name")
-SECGROUP_DESCR = functest_yaml.get("vping").get("vping_sg_descr")
+SECGROUP_NAME = ft_utils.get_functest_config('vping.vping_sg_name')
+SECGROUP_DESCR = ft_utils.get_functest_config('vping.vping_sg_descr')
neutron_client = None
@@ -57,8 +57,8 @@ def pMsg(value):
def check_repo_exist():
- if not os.path.exists(REPO_PATH):
- logger.error("Functest repository not found '%s'" % REPO_PATH)
+ if not os.path.exists(FUNCTEST_REPO):
+ logger.error("Functest repository not found '%s'" % FUNCTEST_REPO)
exit(-1)
@@ -339,7 +339,7 @@ def transfer_ping_script(ssh, floatip):
logger.info("Trying to transfer ping.sh to %s..." % floatip)
scp = SCPClient(ssh.get_transport())
- ping_script = REPO_PATH + '/' + "testcases/OpenStack/vPing/ping.sh"
+ ping_script = FUNCTEST_REPO + "/testcases/OpenStack/vPing/ping.sh"
try:
scp.put(ping_script, "~/")
except:
diff --git a/testcases/features/copper.py b/testcases/features/copper.py
index 50319d965..be6744a95 100755
--- a/testcases/features/copper.py
+++ b/testcases/features/copper.py
@@ -28,10 +28,10 @@ parser.add_argument("-r", "--report",
action="store_true")
args = parser.parse_args()
-COPPER_REPO = functest_utils.get_parameter_from_yaml(
- 'general.directories.dir_repo_copper')
-RESULTS_DIR = functest_utils.get_parameter_from_yaml(
- 'general.directories.dir_results')
+COPPER_REPO = \
+ functest_utils.get_functest_config('general.directories.dir_repo_copper')
+RESULTS_DIR = \
+ functest_utils.get_functest_config('general.directories.dir_results')
logger = ft_logger.Logger("copper").getLogger()
diff --git a/testcases/features/doctor.py b/testcases/features/doctor.py
index 5fc0713f9..6c26875d3 100755
--- a/testcases/features/doctor.py
+++ b/testcases/features/doctor.py
@@ -13,12 +13,14 @@
# 0.2: measure test duration and publish results under json format
#
#
+import argparse
+import os
import time
-import argparse
import functest.utils.functest_logger as ft_logger
import functest.utils.functest_utils as functest_utils
+
parser = argparse.ArgumentParser()
parser.add_argument("-r", "--report",
help="Create json result file",
@@ -27,28 +29,40 @@ args = parser.parse_args()
functest_yaml = functest_utils.get_functest_yaml()
-dirs = functest_yaml.get('general').get('directories')
-DOCTOR_REPO = dirs.get('dir_repo_doctor')
+DOCTOR_REPO = \
+ functest_utils.get_functest_config('general.directories.dir_repo_doctor')
+RESULTS_DIR = \
+ functest_utils.get_functest_config('general.directories.dir_results')
logger = ft_logger.Logger("doctor").getLogger()
def main():
exit_code = -1
+
+ # if the image name is explicitly set for the doctor suite, set it as
+ # enviroment variable
+ if 'doctor' in functest_yaml and 'image_name' in functest_yaml['doctor']:
+ os.environ["IMAGE_NAME"] = functest_yaml['doctor']['image_name']
+
cmd = 'cd %s/tests && ./run.sh' % DOCTOR_REPO
+ log_file = RESULTS_DIR + "/doctor.log"
+
start_time = time.time()
- ret = functest_utils.execute_command(cmd, info=True,
- exit_on_error=False)
+ ret = functest_utils.execute_command(cmd,
+ info=True,
+ exit_on_error=False,
+ output_file=log_file)
stop_time = time.time()
duration = round(stop_time - start_time, 1)
if ret == 0:
- logger.info("doctor OK")
+ logger.info("Doctor test case OK")
test_status = 'OK'
exit_code = 0
else:
- logger.info("doctor FAILED")
+ logger.info("Doctor test case FAILED")
test_status = 'NOK'
details = {
diff --git a/testcases/features/domino.py b/testcases/features/domino.py
index aaf38047b..75351a56e 100755
--- a/testcases/features/domino.py
+++ b/testcases/features/domino.py
@@ -14,11 +14,11 @@
# 0.3: add report flag to push results when needed
#
+import argparse
import time
-import argparse
import functest.utils.functest_logger as ft_logger
-import functest.utils.functest_utils as functest_utils
+import functest.utils.functest_utils as ft_utils
parser = argparse.ArgumentParser()
@@ -27,19 +27,23 @@ parser.add_argument("-r", "--report",
action="store_true")
args = parser.parse_args()
-functest_yaml = functest_utils.get_functest_yaml()
-dirs = functest_yaml.get('general').get('directories')
-DOMINO_REPO = dirs.get('dir_repo_domino')
+DOMINO_REPO = \
+ ft_utils.get_functest_config('general.directories.dir_repo_domino')
+RESULTS_DIR = \
+ ft_utils.get_functest_config('general.directories.dir_results')
logger = ft_logger.Logger("domino").getLogger()
def main():
cmd = 'cd %s && ./tests/run_multinode.sh' % DOMINO_REPO
+ log_file = RESULTS_DIR + "/domino.log"
start_time = time.time()
- ret = functest_utils.execute_command(cmd, exit_on_error=False)
+ ret = ft_utils.execute_command(cmd,
+ exit_on_error=False,
+ output_file=log_file)
stop_time = time.time()
duration = round(stop_time - start_time, 1)
@@ -65,17 +69,18 @@ def main():
elif details['status'] == "SKIPPED":
status = "SKIP"
- functest_utils.logger_test_results("Domino",
- "domino-multinode",
- status, details)
+ ft_utils.logger_test_results("Domino",
+ "domino-multinode",
+ status,
+ details)
if args.report:
if status is not "SKIP":
- functest_utils.push_results_to_db("domino",
- "domino-multinode",
- start_time,
- stop_time,
- status,
- details)
+ ft_utils.push_results_to_db("domino",
+ "domino-multinode",
+ start_time,
+ stop_time,
+ status,
+ details)
logger.info("Domino results pushed to DB")
diff --git a/testcases/features/promise.py b/testcases/features/promise.py
index 47e360ca3..cce0f5dc1 100755
--- a/testcases/features/promise.py
+++ b/testcases/features/promise.py
@@ -9,18 +9,19 @@
#
# Maintainer : jose.lausuch@ericsson.com
#
+import argparse
import json
import os
import subprocess
import time
-import argparse
import functest.utils.functest_logger as ft_logger
-import functest.utils.functest_utils as functest_utils
+import functest.utils.functest_utils as ft_utils
import functest.utils.openstack_utils as openstack_utils
import keystoneclient.v2_0.client as ksclient
-import novaclient.client as nvclient
from neutronclient.v2_0 import client as ntclient
+import novaclient.client as nvclient
+
parser = argparse.ArgumentParser()
@@ -30,35 +31,35 @@ parser.add_argument("-r", "--report",
action="store_true")
args = parser.parse_args()
-functest_yaml = functest_utils.get_functest_yaml()
-dirs = functest_yaml.get('general').get('directories')
+dirs = ft_utils.get_functest_config('general.directories')
PROMISE_REPO = dirs.get('dir_repo_promise')
-TEST_DB = functest_yaml.get('results').get('test_db_url')
-
-TENANT_NAME = functest_yaml.get('promise').get('general').get('tenant_name')
-TENANT_DESCRIPTION = functest_yaml.get('promise').get(
- 'general').get('tenant_description')
-USER_NAME = functest_yaml.get('promise').get('general').get('user_name')
-USER_PWD = functest_yaml.get('promise').get('general').get('user_pwd')
-IMAGE_NAME = functest_yaml.get('promise').get('general').get('image_name')
-FLAVOR_NAME = functest_yaml.get('promise').get('general').get('flavor_name')
-FLAVOR_VCPUS = functest_yaml.get('promise').get('general').get('flavor_vcpus')
-FLAVOR_RAM = functest_yaml.get('promise').get('general').get('flavor_ram')
-FLAVOR_DISK = functest_yaml.get('promise').get('general').get('flavor_disk')
-
-
-GLANCE_IMAGE_FILENAME = functest_yaml.get('general').get('openstack').get(
- 'image_file_name')
-GLANCE_IMAGE_FORMAT = functest_yaml.get('general').get('openstack').get(
- 'image_disk_format')
-GLANCE_IMAGE_PATH = functest_yaml.get('general').get('directories').get(
- 'dir_functest_data') + "/" + GLANCE_IMAGE_FILENAME
-
-NET_NAME = functest_yaml.get('promise').get('general').get('network_name')
-SUBNET_NAME = functest_yaml.get('promise').get('general').get('subnet_name')
-SUBNET_CIDR = functest_yaml.get('promise').get('general').get('subnet_cidr')
-ROUTER_NAME = functest_yaml.get('promise').get('general').get('router_name')
+RESULTS_DIR = ft_utils.get_functest_config('general.directories.dir_results')
+
+TENANT_NAME = ft_utils.get_functest_config('promise.tenant_name')
+TENANT_DESCRIPTION = \
+ ft_utils.get_functest_config('promise.tenant_description')
+USER_NAME = ft_utils.get_functest_config('promise.user_name')
+USER_PWD = ft_utils.get_functest_config('promise.user_pwd')
+IMAGE_NAME = ft_utils.get_functest_config('promise.image_name')
+FLAVOR_NAME = ft_utils.get_functest_config('promise.flavor_name')
+FLAVOR_VCPUS = ft_utils.get_functest_config('promise.flavor_vcpus')
+FLAVOR_RAM = ft_utils.get_functest_config('promise.flavor_ram')
+FLAVOR_DISK = ft_utils.get_functest_config('promise.flavor_disk')
+
+
+GLANCE_IMAGE_FILENAME = \
+ ft_utils.get_functest_config('general.openstack.image_file_name')
+GLANCE_IMAGE_FORMAT = \
+ ft_utils.get_functest_config('general.openstack.image_disk_format')
+GLANCE_IMAGE_PATH = \
+ ft_utils.get_functest_config('general.directories.dir_functest_data') + \
+ "/" + GLANCE_IMAGE_FILENAME
+
+NET_NAME = ft_utils.get_functest_config('promise.network_name')
+SUBNET_NAME = ft_utils.get_functest_config('promise.subnet_name')
+SUBNET_CIDR = ft_utils.get_functest_config('promise.subnet_cidr')
+ROUTER_NAME = ft_utils.get_functest_config('promise.router_name')
""" logging configuration """
@@ -181,7 +182,7 @@ def main():
os.environ["OS_TEST_NETWORK"] = network_dic["net_id"]
os.chdir(PROMISE_REPO)
- results_file_name = 'promise-results.json'
+ results_file_name = RESULTS_DIR + '/' + 'promise-results.json'
results_file = open(results_file_name, 'w+')
cmd = 'npm run -s test -- --reporter json'
@@ -240,12 +241,12 @@ def main():
status = "PASS"
exit_code = 0
- functest_utils.push_results_to_db("promise",
- "promise",
- start_time,
- stop_time,
- status,
- json_results)
+ ft_utils.push_results_to_db("promise",
+ "promise",
+ start_time,
+ stop_time,
+ status,
+ json_results)
exit(exit_code)
diff --git a/testcases/features/sfc/prepare_odl_sfc.bash b/testcases/features/sfc/prepare_odl_sfc.bash
new file mode 100755
index 000000000..80ed9bd92
--- /dev/null
+++ b/testcases/features/sfc/prepare_odl_sfc.bash
@@ -0,0 +1,38 @@
+#!/bin/bash
+
+#
+# Author: George Paraskevopoulos (geopar@intracom-telecom.com)
+# Manuel Buil (manuel.buil@ericsson.com)
+# Prepares the controller and the compute nodes for the odl-sfc testcase
+#
+#
+# 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
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+
+ODL_SFC_LOG=/home/opnfv/functest/results/odl-sfc.log
+ODL_SFC_DIR=${FUNCTEST_REPO_DIR}/testcases/features/sfc
+
+# Split the output to the log file and redirect STDOUT and STDERR to /dev/null
+bash ${ODL_SFC_DIR}/server_presetup_CI.bash |& \
+ tee -a ${ODL_SFC_LOG} 1>/dev/null 2>&1
+
+# Get return value from PIPESTATUS array (bash specific feature)
+ret_val=${PIPESTATUS[0]}
+if [ $ret_val != 0 ]; then
+ echo "The tacker server deployment failed"
+ exit $ret_val
+fi
+echo "The tacker server was deployed successfully"
+
+bash ${ODL_SFC_DIR}/compute_presetup_CI.bash |& \
+ tee -a ${ODL_SFC_LOG} 1>/dev/null 2>&1
+
+ret_val=${PIPESTATUS[0]}
+if [ $ret_val != 0 ]; then
+ exit $ret_val
+fi
+
+exit 0
diff --git a/testcases/features/sfc/sfc.py b/testcases/features/sfc/sfc.py
index a228ed298..8aa7bb9a0 100755
--- a/testcases/features/sfc/sfc.py
+++ b/testcases/features/sfc/sfc.py
@@ -4,11 +4,11 @@ import sys
import time
import argparse
+import paramiko
+
import functest.utils.functest_logger as ft_logger
import functest.utils.functest_utils as ft_utils
import functest.utils.openstack_utils as os_utils
-import paramiko
-from functest.utils.functest_utils import FUNCTEST_REPO as FUNCTEST_REPO
parser = argparse.ArgumentParser()
@@ -21,6 +21,8 @@ args = parser.parse_args()
""" logging configuration """
logger = ft_logger.Logger("ODL_SFC").getLogger()
+FUNCTEST_REPO = ft_utils.FUNCTEST_REPO
+
HOME = os.environ['HOME'] + "/"
VM_BOOT_TIMEOUT = 180
@@ -56,13 +58,19 @@ def main():
# Allow any port so that tacker commands reaches the server.
# This will be deleted when tacker is included in OPNFV installation
+ status = "PASS"
+ failures = 0
+ start_time = time.time()
+ json_results = {}
+
ssh_options = '-o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no'
contr_cmd = ("sshpass -p r00tme ssh " + ssh_options + " root@10.20.0.2"
" 'fuel node'|grep controller|awk '{print $10}'")
logger.info("Executing script to get ip_server: '%s'" % contr_cmd)
process = subprocess.Popen(contr_cmd,
shell=True,
- stdout=subprocess.PIPE)
+ stdout=subprocess.PIPE,
+ stderr=subprocess.PIPE)
ip_server = process.stdout.readline().rstrip()
contr_cmd2 = ("sshpass -p r00tme ssh " + ssh_options + " root@10.20.0.2"
@@ -70,16 +78,27 @@ def main():
logger.info("Executing script to get ip_compute: '%s'" % contr_cmd2)
process = subprocess.Popen(contr_cmd2,
shell=True,
- stdout=subprocess.PIPE)
+ stdout=subprocess.PIPE,
+ stderr=subprocess.PIPE)
ip_compute = process.stdout.readline().rstrip()
iptable_cmd1 = ("sshpass -p r00tme ssh " + ssh_options + " root@10.20.0.2"
" ssh " + ip_server + " iptables -P INPUT ACCEPT ")
iptable_cmd2 = ("sshpass -p r00tme ssh " + ssh_options + " root@10.20.0.2"
" ssh " + ip_server + " iptables -t nat -P INPUT ACCEPT ")
+ iptable_cmd3 = ("sshpass -p r00tme ssh " + ssh_options + " root@10.20.0.2"
+ " ssh " + ssh_options + " " + ip_server +
+ " iptables -A INPUT -m state"
+ " --state NEW,ESTABLISHED,RELATED -j ACCEPT")
+
+ logger.info("Changing firewall policy in controller: '%s'" % iptable_cmd1)
+ subprocess.call(iptable_cmd1, shell=True, stderr=subprocess.PIPE)
- subprocess.call(iptable_cmd1, shell=True)
- subprocess.call(iptable_cmd2, shell=True)
+ logger.info("Changing firewall policy in controller: '%s'" % iptable_cmd2)
+ subprocess.call(iptable_cmd2, shell=True, stderr=subprocess.PIPE)
+
+ logger.info("Changing firewall policy in controller: '%s'" % iptable_cmd3)
+ subprocess.call(iptable_cmd2, shell=True, stderr=subprocess.PIPE)
# Getting the different clients
@@ -308,7 +327,7 @@ def main():
logger.info("Waiting for 60 seconds before TEST")
for j in range(0, 6):
- logger.info("Test starting in {0} seconds".format(str((6 - j)*10)))
+ logger.info("Test starting in {0} seconds".format(str((6 - j) * 10)))
time.sleep(10)
i = 0
@@ -326,10 +345,13 @@ def main():
logger.info('\033[92m' + "TEST 1 [PASSED] "
"==> SSH BLOCKED" + '\033[0m')
i = i + 1
+ json_results.update({"Test 1: SSH Blocked": "Passed"})
else:
logger.error('\033[91m' + "TEST 1 [FAILED] "
"==> SSH NOT BLOCKED" + '\033[0m')
- return
+ status = "FAIL"
+ json_results.update({"Test 1: SSH Blocked": "Failed"})
+ failures += 1
except:
logger.debug("Waiting for %s..." % floatip_client)
time.sleep(6)
@@ -346,10 +368,13 @@ def main():
logger.info('\033[92m' + "TEST 2 [PASSED] "
"==> HTTP WORKS" + '\033[0m')
i = i + 1
+ json_results.update({"Test 2: HTTP works": "Passed"})
else:
logger.error('\033[91m' + "TEST 2 [FAILED] "
"==> HTTP BLOCKED" + '\033[0m')
- return
+ status = "FAIL"
+ json_results.update({"Test 2: HTTP works": "Failed"})
+ failures += 1
except:
logger.debug("Waiting for %s..." % floatip_client)
time.sleep(6)
@@ -382,13 +407,16 @@ def main():
(stdin, stdout, stderr) = ssh.exec_command(command)
if "timed out" in stdout.readlines()[0]:
- logger.info('\033[92m' + "TEST 3 [WORKS] "
+ logger.info('\033[92m' + "TEST 3 [PASSED] "
"==> HTTP BLOCKED" + '\033[0m')
i = i + 1
+ json_results.update({"Test 3: HTTP Blocked": "Passed"})
else:
logger.error('\033[91m' + "TEST 3 [FAILED] "
"==> HTTP NOT BLOCKED" + '\033[0m')
- return
+ status = "FAIL"
+ json_results.update({"Test 3: HTTP Blocked": "Failed"})
+ failures += 1
except:
logger.debug("Waiting for %s..." % floatip_client)
time.sleep(6)
@@ -402,13 +430,16 @@ def main():
(stdin, stdout, stderr) = ssh.exec_command(command)
if "succeeded" in stdout.readlines()[0]:
- logger.info('\033[92m' + "TEST 4 [WORKS] "
+ logger.info('\033[92m' + "TEST 4 [PASSED] "
"==> SSH WORKS" + '\033[0m')
i = i + 1
+ json_results.update({"Test 4: SSH works": "Passed"})
else:
logger.error('\033[91m' + "TEST 4 [FAILED] "
"==> SSH BLOCKED" + '\033[0m')
- return
+ status = "FAIL"
+ json_results.update({"Test 4: SSH works": "Failed"})
+ failures += 1
except:
logger.debug("Waiting for %s..." % floatip_client)
time.sleep(6)
@@ -419,21 +450,20 @@ def main():
logger.info('\033[92m' + "SFC TEST WORKED"
" :) \n" + '\033[0m')
- # TODO report results to DB
- # functest_utils.logger_test_results("SFC",
- # "odl-sfc",
- # status, details)
- # see doctor, promise, domino, ...
- # if args.report:
- # logger.info("Pushing odl-SFC results")
- # functest_utils.push_results_to_db("functest",
- # "odl-sfc",
- # start_time,
- # stop_time,
- # status,
- # details)
-
- sys.exit(0)
+ if args.report:
+ stop_time = time.time()
+ json_results.update({"tests": "4", "failures": int(failures)})
+ logger.debug("Promise Results json: " + str(json_results))
+ ft_utils.push_results_to_db("sfc",
+ "functest-odl-sfc",
+ start_time,
+ stop_time,
+ status,
+ json_results)
+ if status == "PASS":
+ sys.exit(0)
+ else:
+ sys.exit(1)
if __name__ == '__main__':
main()
diff --git a/testcases/security_scan/security_scan.py b/testcases/security_scan/security_scan.py
index ac7b78ed6..98e6b7a8c 100755
--- a/testcases/security_scan/security_scan.py
+++ b/testcases/security_scan/security_scan.py
@@ -13,18 +13,18 @@
# all trace of the scan is removed from the remote system.
-import argparse
-import connect
import datetime
import os
import sys
-
from ConfigParser import SafeConfigParser
-from functest.utils.functest_utils import FUNCTEST_REPO as FUNCTEST_REPO
+
+import argparse
from keystoneclient import session
from keystoneclient.auth.identity import v2
from novaclient import client
+import connect
+import functest.utils.functest_utils as ft_utils
__version__ = 0.1
__author__ = 'Luke Hinds (lhinds@redhat.com)'
@@ -33,7 +33,7 @@ __url__ = 'https://wiki.opnfv.org/display/functest/Functest+Security'
# Global vars
INSTALLER_IP = os.getenv('INSTALLER_IP')
oscapbin = 'sudo /bin/oscap'
-functest_dir = '%s/testcases/security_scan/' % FUNCTEST_REPO
+functest_dir = '%s/testcases/security_scan/' % ft_utils.FUNCTEST_REPO
# Apex Spefic var needed to query Undercloud
if os.getenv('OS_AUTH_URL') is None:
diff --git a/testcases/vnf/vIMS/vIMS.py b/testcases/vnf/vIMS/vIMS.py
index b72e4cd81..50aa715f4 100755
--- a/testcases/vnf/vIMS/vIMS.py
+++ b/testcases/vnf/vIMS/vIMS.py
@@ -19,15 +19,14 @@ import subprocess
import time
import argparse
-import functest.utils.functest_logger as ft_logger
-import functest.utils.functest_utils as functest_utils
-import functest.utils.openstack_utils as os_utils
import keystoneclient.v2_0.client as ksclient
import novaclient.client as nvclient
import requests
-from functest.utils.functest_utils import FUNCTEST_REPO as REPO_PATH
from neutronclient.v2_0 import client as ntclient
+import functest.utils.functest_logger as ft_logger
+import functest.utils.functest_utils as ft_utils
+import functest.utils.openstack_utils as os_utils
from clearwater import clearwater
from orchestrator import orchestrator
@@ -48,34 +47,40 @@ args = parser.parse_args()
logger = ft_logger.Logger("vIMS").getLogger()
-functest_yaml = functest_utils.get_functest_yaml()
-
# Cloudify parameters
-VIMS_DIR = (REPO_PATH + '/' +
- functest_yaml.get("general").get("directories").get("dir_vIMS"))
-VIMS_DATA_DIR = functest_yaml.get("general").get(
- "directories").get("dir_vIMS_data") + "/"
-VIMS_TEST_DIR = functest_yaml.get("general").get(
- "directories").get("dir_repo_vims_test") + "/"
-DB_URL = functest_yaml.get("results").get("test_db_url")
-
-TENANT_NAME = functest_yaml.get("vIMS").get("general").get("tenant_name")
-TENANT_DESCRIPTION = functest_yaml.get("vIMS").get(
- "general").get("tenant_description")
-IMAGES = functest_yaml.get("vIMS").get("general").get("images")
-
-CFY_MANAGER_BLUEPRINT = functest_yaml.get(
- "vIMS").get("cloudify").get("blueprint")
-CFY_MANAGER_REQUIERMENTS = functest_yaml.get(
- "vIMS").get("cloudify").get("requierments")
-CFY_INPUTS = functest_yaml.get("vIMS").get("cloudify").get("inputs")
-
-CW_BLUEPRINT = functest_yaml.get("vIMS").get("clearwater").get("blueprint")
-CW_DEPLOYMENT_NAME = functest_yaml.get("vIMS").get(
- "clearwater").get("deployment-name")
-CW_INPUTS = functest_yaml.get("vIMS").get("clearwater").get("inputs")
-CW_REQUIERMENTS = functest_yaml.get("vIMS").get(
- "clearwater").get("requierments")
+VIMS_DIR = ft_utils.FUNCTEST_REPO + '/' + \
+ ft_utils.get_functest_config('general.directories.dir_vIMS')
+
+VIMS_DATA_DIR = \
+ ft_utils.get_functest_config('general.directories.dir_vIMS_data') + \
+ '/'
+VIMS_TEST_DIR = \
+ ft_utils.get_functest_config('general.directories.dir_repo_vims_test') + \
+ '/'
+DB_URL = \
+ ft_utils.get_functest_config('results.test_db_url')
+
+TENANT_NAME = \
+ ft_utils.get_functest_config('vIMS.general.tenant_name')
+TENANT_DESCRIPTION = \
+ ft_utils.get_functest_config('vIMS.general.tenant_description')
+IMAGES = \
+ ft_utils.get_functest_config('vIMS.general.images')
+
+CFY_MANAGER_BLUEPRINT = \
+ ft_utils.get_functest_config('vIMS.cloudify.blueprint')
+CFY_MANAGER_REQUIERMENTS = \
+ ft_utils.get_functest_config('vIMS.cloudify.requierments')
+CFY_INPUTS = ft_utils.get_functest_config('vIMS.cloudify.inputs')
+
+CW_BLUEPRINT = \
+ ft_utils.get_functest_config('vIMS.clearwater.blueprint')
+CW_DEPLOYMENT_NAME = \
+ ft_utils.get_functest_config('vIMS.clearwater.deployment-name')
+CW_INPUTS = \
+ ft_utils.get_functest_config('vIMS.clearwater.inputs')
+CW_REQUIERMENTS = \
+ ft_utils.get_functest_config('vIMS.clearwater.requierments')
CFY_DEPLOYMENT_DURATION = 0
CW_DEPLOYMENT_DURATION = 0
@@ -91,7 +96,7 @@ def download_and_add_image_on_glance(glance, image_name, image_url):
if not os.path.exists(dest_path):
os.makedirs(dest_path)
file_name = image_url.rsplit('/')[-1]
- if not functest_utils.download_url(image_url, dest_path):
+ if not ft_utils.download_url(image_url, dest_path):
logger.error("Failed to download image %s" % file_name)
return False
@@ -112,12 +117,12 @@ def step_failure(step_name, error_msg):
stop_time = time.time()
if step_name == "sig_test":
status = "PASS"
- functest_utils.push_results_to_db("functest",
- "vims",
- TESTCASE_START_TIME,
- stop_time,
- status,
- RESULTS)
+ ft_utils.push_results_to_db("functest",
+ "vims",
+ TESTCASE_START_TIME,
+ stop_time,
+ status,
+ RESULTS)
exit(-1)
@@ -183,7 +188,7 @@ def test_clearwater():
logger.info("vIMS functional test Start Time:'%s'" % (
datetime.datetime.fromtimestamp(start_time_ts).strftime(
'%Y-%m-%d %H:%M:%S')))
- nameservers = functest_utils.get_resolvconf_ns()
+ nameservers = ft_utils.get_resolvconf_ns()
resolvconf = ""
for ns in nameservers:
resolvconf += "\nnameserver " + ns
@@ -233,12 +238,12 @@ def test_clearwater():
except:
logger.error("Unable to set test status")
- functest_utils.push_results_to_db("functest",
- "vims",
- TESTCASE_START_TIME,
- end_time_ts,
- status,
- RESULTS)
+ ft_utils.push_results_to_db("functest",
+ "vims",
+ TESTCASE_START_TIME,
+ end_time_ts,
+ status,
+ RESULTS)
try:
os.remove(VIMS_TEST_DIR + "temp.json")
@@ -386,7 +391,7 @@ def main():
cfy.set_external_network_name(ext_net)
- ns = functest_utils.get_resolvconf_ns()
+ ns = ft_utils.get_resolvconf_ns()
if ns:
cfy.set_nameservers(ns)
@@ -397,10 +402,10 @@ def main():
logger.info("Prepare virtualenv for cloudify-cli")
cmd = "chmod +x " + VIMS_DIR + "create_venv.sh"
- functest_utils.execute_command(cmd)
+ ft_utils.execute_command(cmd)
time.sleep(3)
cmd = VIMS_DIR + "create_venv.sh " + VIMS_DATA_DIR
- functest_utils.execute_command(cmd)
+ ft_utils.execute_command(cmd)
cfy.download_manager_blueprint(
CFY_MANAGER_BLUEPRINT['url'], CFY_MANAGER_BLUEPRINT['branch'])
diff --git a/testcases/vnf/vRNC/parser.py b/testcases/vnf/vRNC/parser.py
index 5ff207c14..0320b104d 100755
--- a/testcases/vnf/vRNC/parser.py
+++ b/testcases/vnf/vRNC/parser.py
@@ -27,10 +27,10 @@ parser.add_argument("-r", "--report",
action="store_true")
args = parser.parse_args()
-PARSER_REPO = functest_utils.get_parameter_from_yaml(
- 'general.directories.dir_repo_parser')
-RESULTS_DIR = functest_utils.get_parameter_from_yaml(
- 'general.directories.dir_results')
+PARSER_REPO = \
+ functest_utils.get_functest_config('general.directories.dir_repo_parser')
+RESULTS_DIR = \
+ functest_utils.get_functest_config('general.directories.dir_results')
logger = ft_logger.Logger("parser").getLogger()