2 Documentation Test suite for SFC Rendered Service Paths and Classifiers.
4 Suite Teardown Cleanup Suite
7 Library OperatingSystem
8 Library RequestsLibrary
9 Library ../../../libraries/SFC/SfcUtils.py
10 Resource ../../../libraries/SFC/SfcKeywords.robot
11 Resource ../../../variables/sfc/Variables.robot
12 Resource ../../../libraries/SSHKeywords.robot
13 Resource ../../../libraries/TemplatedRequests.robot
14 Resource ../../../libraries/KarafKeywords.robot
15 Resource ../../../libraries/DataModels.robot
16 Resource ../../../libraries/SFC/DockerSfc.robot
17 Resource ../../../libraries/Utils.robot
18 Variables ../../../variables/sfc/Modules.py
21 Basic Environment Setup Tests
22 [Documentation] Prepare Basic Test Environment. Full Deploy
23 Utils.Add Elements To URI From File ${SERVICE_FORWARDERS_URI} ${SERVICE_FORWARDERS_FILE}
24 Utils.Add Elements To URI From File ${SERVICE_NODES_URI} ${SERVICE_NODES_FILE}
25 Utils.Add Elements To URI From File ${SERVICE_FUNCTIONS_URI} ${SERVICE_FUNCTIONS_FILE}
26 BuiltIn.Wait Until Keyword Succeeds 60s 2s SfcKeywords.Check Service Function Types Added ${SF_NAMES}
27 Utils.Add Elements To URI From File ${SERVICE_CHAINS_URI} ${SERVICE_CHAINS_FILE}
28 Utils.Add Elements To URI From File ${SERVICE_METADATA_URI} ${SERVICE_METADATA_FILE}
29 SfcKeywords.Create Sfp And Wait For Rsp Creation ${SERVICE_FUNCTION_PATHS_FILE}
30 ${rsp_name} = SfcKeywords.Get Rendered Service Path Name ${SFP_NAME}
31 ${rsp_rev_name} = SfcKeywords.Get Rendered Service Path Name ${SFP_NAME} True
32 ${mapping} = BuiltIn.Create Dictionary RSP1=${rsp_name} RSP1_Reverse=${rsp_rev_name}
33 ${sf_acl_text} = TemplatedRequests.Resolve_Text_From_Template_File folder=${CONFIG_DIR} file_name=${SERVICE_FUNCTION_ACLS_FILE} mapping=${mapping}
34 Utils.Add Elements To URI And Verify ${SERVICE_FUNCTION_ACLS_URI} ${sf_acl_text}
36 Get Rendered Service Path By Name
37 [Documentation] Get Rendered Service Path By Name Through RESTConf APIs. Full Deploy
38 # The RSP should be symetric, so 2 should be created for the SFP
39 ${rsp_name} = SfcKeywords.Get Rendered Service Path Name ${SFP_NAME}
40 Utils.Get URI And Verify ${OPERATIONAL_RSP_URI}${rsp_name}
41 ${rsp_rev_name} = SfcKeywords.Get Rendered Service Path Name ${SFP_NAME} True
42 Utils.Get URI And Verify ${OPERATIONAL_RSP_URI}${rsp_rev_name}
43 ${elements} = BuiltIn.Create List ${rsp_name} "parent-service-function-path":"${SFP_NAME}" "hop-number":0 "service-index":255 "hop-number":1
44 ... "service-index":254
45 Utils.Check For Elements At URI ${OPERATIONAL_RSPS_URI} ${elements}
47 Create and Get Classifiers
48 [Documentation] Apply json file descriptions of ACLs and Classifiers. Full Deploy
49 Utils.Add Elements To URI From File ${SERVICE_CLASSIFIERS_URI} ${SERVICE_CLASSIFIERS_FILE}
50 ${classifiers}= BuiltIn.Create List "service-function-classifiers" "service-function-classifier" "type":"ietf-access-control-list:ipv4-acl" "scl-service-function-forwarder"
51 Append To List ${classifiers} "name":"Classifier2" "name":"ACL2"
52 Append To List ${classifiers} "name":"Classifier1" "name":"ACL1"
53 Utils.Check For Elements At URI ${SERVICE_CLASSIFIERS_URI} ${classifiers}
54 BuiltIn.Wait Until Keyword Succeeds 60s 2s SfcKeywords.Check Classifier Flows
58 [Documentation] Connect Create session and initialize ODL version specific variables
59 RequestsLibrary.Create Session session http://${ODL_SYSTEM_IP}:${RESTCONFPORT} auth=${AUTH} headers=${HEADERS}
60 SSHLibrary.Open Connection ${TOOLS_SYSTEM_IP} timeout=3s
61 SSHKeywords.Flexible Mininet Login
62 ${docker_cidr} = DockerSfc.Get Docker Bridge Subnet
63 ${docker_nw} = SfcUtils.Get Network From Cidr ${docker_cidr}
64 ${docker_mask} = SfcUtils.Get Mask From Cidr ${docker_cidr}
65 ${route_to_docker_net} = BuiltIn.Set Variable sudo route add -net ${docker_nw} netmask ${docker_mask} gw ${TOOLS_SYSTEM_IP}
66 Utils.Run Command On Remote System ${ODL_SYSTEM_IP} ${route_to_docker_net} ${ODL_SYSTEM_USER} prompt=${ODL_SYSTEM_PROMPT}
67 SSHLibrary.Put File ${CURDIR}/docker-ovs.sh . mode=0755
68 SSHLibrary.Put File ${CURDIR}/Dockerfile . mode=0755
69 SSHLibrary.Put File ${CURDIR}/setup-docker-image.sh . mode=0755
70 ${result} = SSHLibrary.Execute Command ./setup-docker-image.sh > >(tee myFile.log) 2> >(tee myFile.log) return_stderr=True return_stdout=True return_rc=True
72 BuiltIn.Should be equal as integers ${result[2]} 0
73 BuiltIn.Set Suite Variable @{INTERFACE_NAMES} v-ovsnsn6g1 v-ovsnsn1g1
74 DockerSfc.Docker Ovs Start nodes=6 guests=1 tunnel=vxlan-gpe odl_ip=${ODL_SYSTEM_IP}
75 BuiltIn.Wait Until Keyword Succeeds 60s 2s Utils.Check For Elements At URI ${OVSDB_TOPOLOGY_URI} ${INTERFACE_NAMES}
76 ${docker_name_list} = DockerSfc.Get Docker Names As List
77 BuiltIn.Set Suite Variable ${DOCKER_NAMES_LIST} ${docker_name_list}
78 BuiltIn.log ${ODL_STREAM}
79 BuiltIn.Set Suite Variable ${SFP_NAME} SFP1
80 BuiltIn.Set Suite Variable ${CONFIG_DIR} ${CURDIR}/../../../variables/sfc/master/full-deploy
81 BuiltIn.Set Suite Variable ${SERVICE_FUNCTIONS_FILE} ${CONFIG_DIR}/service-functions.json
82 BuiltIn.Set Suite Variable ${SERVICE_FORWARDERS_FILE} ${CONFIG_DIR}/service-function-forwarders.json
83 BuiltIn.Set Suite Variable ${SERVICE_NODES_FILE} ${CONFIG_DIR}/service-nodes.json
84 BuiltIn.Set Suite Variable ${SERVICE_CHAINS_FILE} ${CONFIG_DIR}/service-function-chains.json
85 BuiltIn.Set Suite Variable ${SERVICE_FUNCTION_PATHS_FILE} ${CONFIG_DIR}/service-function-paths.json
86 BuiltIn.Set Suite Variable ${SERVICE_METADATA_FILE} ${CONFIG_DIR}/service-function-metadata.json
87 BuiltIn.Set Suite Variable ${SERVICE_FUNCTION_ACLS_FILE} service-function-acls.json
88 BuiltIn.Set Suite Variable ${SERVICE_CLASSIFIERS_FILE} ${CONFIG_DIR}/service-function-classifiers.json
89 BuiltIn.Set Suite Variable @{SF_NAMES} "firewall-1" "dpi-1"
90 SfcKeywords.Switch Ips In Json Files ${CONFIG_DIR} ${DOCKER_NAMES_LIST}
93 [Documentation] Clean up all docker containers created and delete sessions
94 DataModels.Get Model Dump ${ODL_SYSTEM_IP} ${sfc_data_models}
95 Utils.Remove All Elements At URI ${SERVICE_CLASSIFIERS_URI}
96 Utils.Remove All Elements At URI ${SERVICE_FUNCTION_ACLS_URI}
97 SfcKeywords.Delete Sfp And Wait For Rsps Deletion ${SFP_NAME}
98 Utils.Remove All Elements At URI ${SERVICE_FUNCTIONS_URI}
99 BuiltIn.Wait Until Keyword Succeeds 60s 2s SfcKeywords.Check Service Function Types Removed ${SF_NAMES}
100 Utils.Remove All Elements At URI ${SERVICE_FORWARDERS_URI}
101 Utils.Remove All Elements At URI ${SERVICE_NODES_URI}
102 Utils.Remove All Elements At URI ${SERVICE_CHAINS_URI}
103 Utils.Remove All Elements At URI ${SERVICE_METADATA_URI}
104 DockerSfc.Docker Ovs Clean log_file=myFile4.log
105 RequestsLibrary.Delete All Sessions
106 SSHLibrary.Close Connection