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