2 Documentation Test suite for SFC Service Functions, Operates functions from Restconf APIs.
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 Variables ../../../variables/sfc/Modules.py
20 ${CREATE_RSP1_INPUT} {"input":{"parent-service-function-path":"SFP1","name":"RSP1"}}
21 ${CREATE_RSP_FAILURE_INPUT} {"input":{"parent-service-function-path":"SFC1-empty","name":"RSP1-empty-Path-1"}}
22 @{SF_NAMES} "name":"firewall-1" "name":"dpi-1"
23 @{INTERFACE_NAMES} v-ovsnsn6g1 v-ovsnsn1g1
26 Basic Environment Setup Tests
27 [Documentation] Prepare Basic Test Environment
28 Add Elements To URI From File ${SERVICE_FORWARDERS_URI} ${SERVICE_FORWARDERS_FILE}
29 Add Elements To URI From File ${SERVICE_NODES_URI} ${SERVICE_NODES_FILE}
30 Add Elements To URI From File ${SERVICE_FUNCTIONS_URI} ${SERVICE_FUNCTIONS_FILE}
31 Wait Until Keyword Succeeds 60s 2s Check Service Function Types Added ${SF_NAMES}
32 Add Elements To URI From File ${SERVICE_CHAINS_URI} ${SERVICE_CHAINS_FILE}
33 Add Elements To URI From File ${SERVICE_METADATA_URI} ${SERVICE_METADATA_FILE}
34 Add Elements To URI From File ${SERVICE_FUNCTION_PATHS_URI} ${SERVICE_FUNCTION_PATHS_FILE}
35 Add Elements To URI From File ${SERVICE_FUNCTION_ACLS_URI} ${SERVICE_FUNCTION_ACLS_FILE}
37 Create and Get Rendered Service Path
38 [Documentation] Create and Get Rendered Service Path Through RESTConf APIs
39 Post Elements To URI As JSON ${OPERATIONS_CREATE_RSP_URI} ${CREATE_RSP1_INPUT}
40 ${resp} RequestsLibrary.Get Request session ${OPERATIONAL_RSPS_URI}
41 Should Contain ${ALLOWED_STATUS_CODES} ${resp.status_code}
42 ${elements}= Create List RSP1 "parent-service-function-path":"SFP1" "hop-number":0 "service-index":255 "hop-number":1
43 ... "service-index":254
44 Check For Elements At URI ${OPERATIONAL_RSPS_URI} ${elements}
46 Create and Get Classifiers
47 [Documentation] Apply json file descriptions of ACLs and Classifiers
48 Add Elements To URI From File ${SERVICE_CLASSIFIERS_URI} ${SERVICE_CLASSIFIERS_FILE}
49 ${classifiers}= Create List "service-function-classifiers" "service-function-classifier" "type":"ietf-access-control-list:ipv4-acl" "scl-service-function-forwarder"
50 Append To List ${classifiers} "name":"Classifier2" "name":"ACL2"
51 Append To List ${classifiers} "name":"Classifier1" "name":"ACL1"
52 Check For Elements At URI ${SERVICE_CLASSIFIERS_URI} ${classifiers}
53 Wait Until Keyword Succeeds 60s 2s Check Classifier Flows
57 [Documentation] Connect Create session and initialize ODL version specific variables
58 Create Session session http://${ODL_SYSTEM_IP}:${RESTCONFPORT} auth=${AUTH} headers=${HEADERS}
59 SSHLibrary.Open Connection ${TOOLS_SYSTEM_IP} timeout=3s
60 SSHKeywords.Flexible Mininet Login
61 ${docker_cidr}= DockerSfc.Get Docker Bridge Subnet
62 ${docker_nw}= SfcUtils.Get Network From Cidr ${docker_cidr}
63 ${docker_mask}= SfcUtils.Get Mask From Cidr ${docker_cidr}
64 ${route_to_docker_net}= Set Variable sudo route add -net ${docker_nw} netmask ${docker_mask} gw ${TOOLS_SYSTEM_IP}
65 Run Command On Remote System ${ODL_SYSTEM_IP} ${route_to_docker_net} ${ODL_SYSTEM_USER} prompt=${ODL_SYSTEM_PROMPT}
66 SSHLibrary.Put File ${CURDIR}/docker-ovs.sh . mode=0755
67 SSHLibrary.Put File ${CURDIR}/Dockerfile . mode=0755
68 SSHLibrary.Put File ${CURDIR}/setup-docker-image.sh . mode=0755
69 ${result} SSHLibrary.Execute Command ./setup-docker-image.sh > >(tee myFile.log) 2> >(tee myFile.log) return_stderr=True return_stdout=True return_rc=True
71 Should be equal as integers ${result[2]} 0
72 DockerSfc.Docker Ovs Start nodes=6 guests=1 tunnel=vxlan-gpe odl_ip=${ODL_SYSTEM_IP}
73 Wait Until Keyword Succeeds 60s 2s Check For Elements At URI ${OVSDB_TOPOLOGY_URI} ${INTERFACE_NAMES}
74 ${docker_name_list}= DockerSfc.Get Docker Names As List
75 Set Suite Variable ${DOCKER_NAMES_LIST} ${docker_name_list}
77 Set Suite Variable ${CONFIG_DIR} ${CURDIR}/../../../variables/sfc/master/full-deploy
78 Set Suite Variable ${SERVICE_FUNCTIONS_FILE} ${CONFIG_DIR}/service-functions.json
79 Set Suite Variable ${SERVICE_FORWARDERS_FILE} ${CONFIG_DIR}/service-function-forwarders.json
80 Set Suite Variable ${SERVICE_NODES_FILE} ${CONFIG_DIR}/service-nodes.json
81 Set Suite Variable ${SERVICE_CHAINS_FILE} ${CONFIG_DIR}/service-function-chains.json
82 Set Suite Variable ${SERVICE_FUNCTION_PATHS_FILE} ${CONFIG_DIR}/service-function-paths.json
83 Set Suite Variable ${SERVICE_METADATA_FILE} ${CONFIG_DIR}/service-function-metadata.json
84 Set Suite Variable ${SERVICE_FUNCTION_ACLS_FILE} ${CONFIG_DIR}/service-function-acls.json
85 Set Suite Variable ${SERVICE_CLASSIFIERS_FILE} ${CONFIG_DIR}/service-function-classifiers.json
86 Switch Ips In Json Files ${CONFIG_DIR} ${DOCKER_NAMES_LIST}
89 [Documentation] Clean up all docker containers created and delete sessions
90 Get Model Dump ${ODL_SYSTEM_IP} ${sfc_data_models}
91 Remove All Elements At URI ${SERVICE_CLASSIFIERS_URI}
92 Remove All Elements At URI ${SERVICE_FUNCTION_ACLS_URI}
93 Remove All Elements At URI ${SERVICE_FUNCTIONS_URI}
94 Wait Until Keyword Succeeds 60s 2s Check Service Function Types Removed ${SF_NAMES}
95 Remove All Elements At URI ${SERVICE_FORWARDERS_URI}
96 Remove All Elements At URI ${SERVICE_NODES_URI}
97 Remove All Elements At URI ${SERVICE_CHAINS_URI}
98 Remove All Elements At URI ${SERVICE_FUNCTION_PATHS_URI}
99 Remove All Elements At URI ${SERVICE_METADATA_URI}
100 DockerSfc.Docker Ovs Clean log_file=myFile4.log
102 SSHLibrary.Close Connection