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