X-Git-Url: https://git.opendaylight.org/gerrit/gitweb?a=blobdiff_plain;f=csit%2Fsuites%2Fsfc%2FFull_Deploy%2F010__sfc_full_deploy.robot;h=02aa571b6b370435310766ef7672c06f73cbe185;hb=b40b7d2d6461200ad56c531e4962e2088cf50c9d;hp=89ca14d07cc8cd42ea92aae2493397ab926a36de;hpb=62faf2d7b02df086d613f4fb94b6506ea6882213;p=integration%2Ftest.git diff --git a/csit/suites/sfc/Full_Deploy/010__sfc_full_deploy.robot b/csit/suites/sfc/Full_Deploy/010__sfc_full_deploy.robot index 89ca14d07c..02aa571b6b 100644 --- a/csit/suites/sfc/Full_Deploy/010__sfc_full_deploy.robot +++ b/csit/suites/sfc/Full_Deploy/010__sfc_full_deploy.robot @@ -1,99 +1,140 @@ *** Settings *** -Documentation Test suite for SFC Service Functions, Operates functions from Restconf APIs. -Suite Setup Init Suite -Suite Teardown Cleanup Suite -Library SSHLibrary -Library Collections -Library OperatingSystem -Library RequestsLibrary -Library ../../../libraries/SFC/SfcUtils.py -Resource ../../../libraries/SFC/SfcKeywords.robot -Resource ../../../variables/sfc/Variables.robot -Resource ../../../libraries/SSHKeywords.robot -Resource ../../../libraries/TemplatedRequests.robot -Resource ../../../libraries/KarafKeywords.robot -Resource ../../../libraries/SFC/DockerSfc.robot +Documentation Test suite for SFC Rendered Service Paths and Classifiers. + +Library SSHLibrary +Library Collections +Library OperatingSystem +Library RequestsLibrary +Library ../../../libraries/SFC/SfcUtils.py +Resource ../../../libraries/SFC/SfcKeywords.robot +Resource ../../../variables/sfc/Variables.robot +Resource ../../../libraries/SSHKeywords.robot +Resource ../../../libraries/TemplatedRequests.robot +Resource ../../../libraries/KarafKeywords.robot +Resource ../../../libraries/DataModels.robot +Resource ../../../libraries/SFC/DockerSfc.robot +Resource ../../../libraries/Utils.robot +Variables ../../../variables/sfc/Modules.py + +Suite Setup Init Suite +Suite Teardown Cleanup Suite -*** Variables *** -${CREATE_RSP1_INPUT} {"input":{"parent-service-function-path":"SFP1","name":"RSP1"}} -${CREATE_RSP_FAILURE_INPUT} {"input":{"parent-service-function-path":"SFC1-empty","name":"RSP1-empty-Path-1"}} -@{SF_NAMES} "name":"firewall-1" "name":"dpi-1" -@{INTERFACE_NAMES} v-ovsnsn6g1 v-ovsnsn1g1 *** Test Cases *** Basic Environment Setup Tests - [Documentation] Prepare Basic Test Environment - Add Elements To URI From File ${SERVICE_FORWARDERS_URI} ${SERVICE_FORWARDERS_FILE} - Add Elements To URI From File ${SERVICE_NODES_URI} ${SERVICE_NODES_FILE} - Add Elements To URI From File ${SERVICE_FUNCTIONS_URI} ${SERVICE_FUNCTIONS_FILE} - Wait Until Keyword Succeeds 60s 2s Check Service Function Types Added ${SF_NAMES} - Add Elements To URI From File ${SERVICE_CHAINS_URI} ${SERVICE_CHAINS_FILE} - Add Elements To URI From File ${SERVICE_METADATA_URI} ${SERVICE_METADATA_FILE} - Add Elements To URI From File ${SERVICE_FUNCTION_PATHS_URI} ${SERVICE_FUNCTION_PATHS_FILE} - Add Elements To URI From File ${SERVICE_FUNCTION_ACLS_URI} ${SERVICE_FUNCTION_ACLS_FILE} + [Documentation] Prepare Basic Test Environment. Full Deploy + Utils.Add Elements To URI From File ${SERVICE_FORWARDERS_URI} ${SERVICE_FORWARDERS_FILE} + Utils.Add Elements To URI From File ${SERVICE_NODES_URI} ${SERVICE_NODES_FILE} + Utils.Add Elements To URI From File ${SERVICE_FUNCTIONS_URI} ${SERVICE_FUNCTIONS_FILE} + BuiltIn.Wait Until Keyword Succeeds 60s 2s SfcKeywords.Check Service Function Types Added ${SF_NAMES} + Utils.Add Elements To URI From File ${SERVICE_CHAINS_URI} ${SERVICE_CHAINS_FILE} + Utils.Add Elements To URI From File ${SERVICE_METADATA_URI} ${SERVICE_METADATA_FILE} + SfcKeywords.Create Sfp And Wait For Rsp Creation ${SERVICE_FUNCTION_PATHS_FILE} + ${rsp_name} = SfcKeywords.Get Rendered Service Path Name ${SFP_NAME} + ${rsp_rev_name} = SfcKeywords.Get Rendered Service Path Name ${SFP_NAME} True + ${mapping} = BuiltIn.Create Dictionary RSP1=${rsp_name} RSP1_Reverse=${rsp_rev_name} + ${sf_acl_text} = TemplatedRequests.Resolve_Text_From_Template_File + ... folder=${CONFIG_DIR} + ... file_name=${SERVICE_FUNCTION_ACLS_FILE} + ... mapping=${mapping} + Utils.Add Elements To URI And Verify ${SERVICE_FUNCTION_ACLS_URI} ${sf_acl_text} -Create and Get Rendered Service Path - [Documentation] Create and Get Rendered Service Path Through RESTConf APIs - Post Elements To URI As JSON ${OPERATIONS_CREATE_RSP_URI} ${CREATE_RSP1_INPUT} - ${resp} RequestsLibrary.Get Request session ${OPERATIONAL_RSPS_URI} - Should Contain ${ALLOWED_STATUS_CODES} ${resp.status_code} - ${elements}= Create List RSP1 "parent-service-function-path":"SFP1" "hop-number":0 "service-index":255 "hop-number":1 +Get Rendered Service Path By Name + [Documentation] Get Rendered Service Path By Name Through RESTConf APIs. Full Deploy + # The RSP should be symetric, so 2 should be created for the SFP + ${rsp_name} = SfcKeywords.Get Rendered Service Path Name ${SFP_NAME} + Utils.Get URI And Verify ${OPERATIONAL_RSP_URI}/${rsp_name} + ${rsp_rev_name} = SfcKeywords.Get Rendered Service Path Name ${SFP_NAME} True + Utils.Get URI And Verify ${OPERATIONAL_RSP_URI}/${rsp_rev_name} + ${elements} = BuiltIn.Create List + ... ${rsp_name} + ... "parent-service-function-path":"${SFP_NAME}" + ... "hop-number":0 + ... "service-index":255 + ... "hop-number":1 ... "service-index":254 - Check For Elements At URI ${OPERATIONAL_RSPS_URI} ${elements} + Utils.Check For Elements At URI ${OPERATIONAL_RSPS_URI} ${elements} Create and Get Classifiers - [Documentation] Apply json file descriptions of ACLs and Classifiers - Add Elements To URI From File ${SERVICE_CLASSIFIERS_URI} ${SERVICE_CLASSIFIERS_FILE} - ${classifiers}= Create List "service-function-classifiers" "service-function-classifier" "type":"ietf-access-control-list:ipv4-acl" "scl-service-function-forwarder" + [Documentation] Apply json file descriptions of ACLs and Classifiers. Full Deploy + Utils.Add Elements To URI From File ${SERVICE_CLASSIFIERS_URI} ${SERVICE_CLASSIFIERS_FILE} + ${classifiers} = BuiltIn.Create List + ... "service-function-classifiers" + ... "service-function-classifier" + ... "type":"ietf-access-control-list:ipv4-acl" + ... "scl-service-function-forwarder" Append To List ${classifiers} "name":"Classifier2" "name":"ACL2" Append To List ${classifiers} "name":"Classifier1" "name":"ACL1" - Check For Elements At URI ${SERVICE_CLASSIFIERS_URI} ${classifiers} - Wait Until Keyword Succeeds 60s 2s Check Classifier Flows + Utils.Check For Elements At URI ${SERVICE_CLASSIFIERS_URI} ${classifiers} + BuiltIn.Wait Until Keyword Succeeds 60s 2s SfcKeywords.Check Classifier Flows + *** Keywords *** Init Suite [Documentation] Connect Create session and initialize ODL version specific variables - Create Session session http://${ODL_SYSTEM_IP}:${RESTCONFPORT} auth=${AUTH} headers=${HEADERS} + RequestsLibrary.Create Session + ... session + ... http://${ODL_SYSTEM_IP}:${RESTCONFPORT} + ... auth=${AUTH} + ... headers=${HEADERS} SSHLibrary.Open Connection ${TOOLS_SYSTEM_IP} timeout=3s SSHKeywords.Flexible Mininet Login - ${docker_cidr}= DockerSfc.Get Docker Bridge Subnet - ${docker_nw}= SfcUtils.Get Network From Cidr ${docker_cidr} - ${docker_mask}= SfcUtils.Get Mask From Cidr ${docker_cidr} - ${route_to_docker_net}= Set Variable sudo route add -net ${docker_nw} netmask ${docker_mask} gw ${TOOLS_SYSTEM_IP} - Run Command On Remote System ${ODL_SYSTEM_IP} ${route_to_docker_net} ${ODL_SYSTEM_USER} prompt=${ODL_SYSTEM_PROMPT} + ${docker_cidr} = DockerSfc.Get Docker Bridge Subnet + ${docker_nw} = SfcUtils.Get Network From Cidr ${docker_cidr} + ${docker_mask} = SfcUtils.Get Mask From Cidr ${docker_cidr} + ${route_to_docker_net} = BuiltIn.Set Variable + ... sudo route add -net ${docker_nw} netmask ${docker_mask} gw ${TOOLS_SYSTEM_IP} + Utils.Run Command On Remote System + ... ${ODL_SYSTEM_IP} + ... ${route_to_docker_net} + ... ${ODL_SYSTEM_USER} + ... prompt=${ODL_SYSTEM_PROMPT} SSHLibrary.Put File ${CURDIR}/docker-ovs.sh . mode=0755 SSHLibrary.Put File ${CURDIR}/Dockerfile . mode=0755 SSHLibrary.Put File ${CURDIR}/setup-docker-image.sh . mode=0755 - ${result} SSHLibrary.Execute Command ./setup-docker-image.sh > >(tee myFile.log) 2> >(tee myFile.log) return_stderr=True return_stdout=True return_rc=True - log ${result} - Should be equal as integers ${result[2]} 0 + ${result} = SSHLibrary.Execute Command + ... ./setup-docker-image.sh ${ODL_STREAM} > >(tee myFile.log) 2> >(tee myFile.log) + ... return_stderr=True + ... return_stdout=True + ... return_rc=True + BuiltIn.log ${result} + BuiltIn.Should be equal as integers ${result[2]} 0 + BuiltIn.Set Suite Variable @{INTERFACE_NAMES} v-ovsnsn6g1 v-ovsnsn1g1 DockerSfc.Docker Ovs Start nodes=6 guests=1 tunnel=vxlan-gpe odl_ip=${ODL_SYSTEM_IP} - Wait Until Keyword Succeeds 60s 2s Check For Elements At URI ${OVSDB_TOPOLOGY_URI} ${INTERFACE_NAMES} - ${docker_name_list}= DockerSfc.Get Docker Names As List - Set Suite Variable ${DOCKER_NAMES_LIST} ${docker_name_list} - log ${ODL_STREAM} - Set Suite Variable ${CONFIG_DIR} ${CURDIR}/../../../variables/sfc/master/full-deploy - Set Suite Variable ${SERVICE_FUNCTIONS_FILE} ${CONFIG_DIR}/service-functions.json - Set Suite Variable ${SERVICE_FORWARDERS_FILE} ${CONFIG_DIR}/service-function-forwarders.json - Set Suite Variable ${SERVICE_NODES_FILE} ${CONFIG_DIR}/service-nodes.json - Set Suite Variable ${SERVICE_CHAINS_FILE} ${CONFIG_DIR}/service-function-chains.json - Set Suite Variable ${SERVICE_FUNCTION_PATHS_FILE} ${CONFIG_DIR}/service-function-paths.json - Set Suite Variable ${SERVICE_METADATA_FILE} ${CONFIG_DIR}/service-function-metadata.json - Set Suite Variable ${SERVICE_FUNCTION_ACLS_FILE} ${CONFIG_DIR}/service-function-acls.json - Set Suite Variable ${SERVICE_CLASSIFIERS_FILE} ${CONFIG_DIR}/service-function-classifiers.json - Switch Ips In Json Files ${CONFIG_DIR} ${DOCKER_NAMES_LIST} + BuiltIn.Wait Until Keyword Succeeds + ... 60s + ... 2s + ... Utils.Check For Elements At URI + ... ${OVSDB_TOPOLOGY_URI} + ... ${INTERFACE_NAMES} + ${docker_name_list} = DockerSfc.Get Docker Names As List + BuiltIn.Set Suite Variable ${DOCKER_NAMES_LIST} ${docker_name_list} + BuiltIn.log ${ODL_STREAM} + BuiltIn.Set Suite Variable ${SFP_NAME} SFP1 + BuiltIn.Set Suite Variable ${CONFIG_DIR} ${CURDIR}/../../../variables/sfc/master/full-deploy + BuiltIn.Set Suite Variable ${SERVICE_FUNCTIONS_FILE} ${CONFIG_DIR}/service-functions.json + BuiltIn.Set Suite Variable ${SERVICE_FORWARDERS_FILE} ${CONFIG_DIR}/service-function-forwarders.json + BuiltIn.Set Suite Variable ${SERVICE_NODES_FILE} ${CONFIG_DIR}/service-nodes.json + BuiltIn.Set Suite Variable ${SERVICE_CHAINS_FILE} ${CONFIG_DIR}/service-function-chains.json + BuiltIn.Set Suite Variable ${SERVICE_FUNCTION_PATHS_FILE} ${CONFIG_DIR}/service-function-paths.json + BuiltIn.Set Suite Variable ${SERVICE_METADATA_FILE} ${CONFIG_DIR}/service-function-metadata.json + BuiltIn.Set Suite Variable ${SERVICE_FUNCTION_ACLS_FILE} service-function-acls.json + BuiltIn.Set Suite Variable ${SERVICE_CLASSIFIERS_FILE} ${CONFIG_DIR}/service-function-classifiers.json + BuiltIn.Set Suite Variable @{SF_NAMES} "firewall-1" "dpi-1" + SfcKeywords.Switch Ips In Json Files ${CONFIG_DIR} ${DOCKER_NAMES_LIST} Cleanup Suite [Documentation] Clean up all docker containers created and delete sessions - Remove All Elements At URI ${SERVICE_CLASSIFIERS_URI} - Remove All Elements At URI ${SERVICE_FUNCTION_ACLS_URI} - Remove All Elements At URI ${SERVICE_FUNCTIONS_URI} - Wait Until Keyword Succeeds 60s 2s Check Service Function Types Removed ${SF_NAMES} - Remove All Elements At URI ${SERVICE_FORWARDERS_URI} - Remove All Elements At URI ${SERVICE_NODES_URI} - Remove All Elements At URI ${SERVICE_CHAINS_URI} - Remove All Elements At URI ${SERVICE_FUNCTION_PATHS_URI} - Remove All Elements At URI ${SERVICE_METADATA_URI} + DataModels.Get Model Dump ${ODL_SYSTEM_IP} ${sfc_data_models} + Utils.Remove All Elements At URI ${SERVICE_CLASSIFIERS_URI} + Utils.Remove All Elements At URI ${SERVICE_FUNCTION_ACLS_URI} + SfcKeywords.Delete Sfp And Wait For Rsps Deletion ${SFP_NAME} + Utils.Remove All Elements At URI ${SERVICE_FUNCTIONS_URI} + BuiltIn.Wait Until Keyword Succeeds 60s 2s SfcKeywords.Check Service Function Types Removed ${SF_NAMES} + Utils.Remove All Elements At URI ${SERVICE_FORWARDERS_URI} + Utils.Remove All Elements At URI ${SERVICE_NODES_URI} + Utils.Remove All Elements At URI ${SERVICE_CHAINS_URI} + Utils.Remove All Elements At URI ${SERVICE_METADATA_URI} DockerSfc.Docker Ovs Clean log_file=myFile4.log - Delete All Sessions + RequestsLibrary.Delete All Sessions SSHLibrary.Close Connection