2 Documentation Test suite for SFC Service Functions, Operates functions from Restconf APIs.
4 Suite Teardown Delete All Sessions
7 Library OperatingSystem
8 Library RequestsLibrary
9 Variables ../../../variables/Variables.py
10 Resource ../../../variables/sfc/Variables.robot
11 Resource ../../../libraries/Utils.robot
12 Resource ../../../libraries/TemplatedRequests.robot
14 ${CREATE_RSP1_INPUT} {"input":{"parent-service-function-path":"SFP-1","name":"SFP-1-Path-1"}}
15 ${CREATE_RSP_FAILURE_INPUT} {"input":{"parent-service-function-path":"SFC1-empty","name":"SFC1-empty-Path-1"}}
17 Basic Environment Setup Tests
18 [Documentation] Prepare Basic Test Environment
19 Add Elements To URI From File ${SERVICE_FORWARDERS_URI} ${SERVICE_FORWARDERS_FILE}
20 Add Elements To URI From File ${SERVICE_NODES_URI} ${SERVICE_NODES_FILE}
21 Add Elements To URI From File ${SERVICE_FUNCTIONS_URI} ${SERVICE_FUNCTIONS_FILE}
22 Add Elements To URI From File ${SERVICE_CHAINS_URI} ${SERVICE_CHAINS_FILE}
23 Add Elements To URI From File ${SERVICE_FUNCTION_PATHS_URI} ${SERVICE_FUNCTION_PATHS_FILE}
25 Create and Get Rendered Service Path
26 [Documentation] Create and Get Rendered Service Path Through RESTConf APIs
27 Post Elements To URI As JSON ${OPERATIONS_CREATE_RSP_URI} ${CREATE_RSP1_INPUT}
28 ${resp} RequestsLibrary.Get Request session ${OPERATIONAL_RSPS_URI}
29 Should Contain ${ALLOWED_STATUS_CODES} ${resp.status_code}
30 ${elements}= Create List SFP-1-Path-1 "parent-service-function-path":"SFP-1" "hop-number":0 "service-index":255 "hop-number":1
31 ... "service-index":254
32 Check For Elements At URI ${OPERATIONAL_RSPS_URI} ${elements}
34 Clean Datastore After Tests
35 [Documentation] Clean All Items In Datastore After Tests
37 Remove All Elements At URI ${SERVICE_FUNCTIONS_URI}
38 Remove All Elements At URI ${SERVICE_FORWARDERS_URI}
39 Remove All Elements At URI ${SERVICE_NODES_URI}
40 Remove All Elements At URI ${SERVICE_CHAINS_URI}
41 Remove All Elements At URI ${SERVICE_FUNCTION_PATHS_URI}
44 Post Elements To URI As JSON
45 [Arguments] ${uri} ${data}
46 ${resp} RequestsLibrary.Post Request session ${uri} data=${data} headers=${headers}
47 Should Contain ${ALLOWED_STATUS_CODES} ${resp.status_code}
49 Get JSON Elements From URI
51 ${resp} RequestsLibrary.Get Request session ${uri}
52 ${value} To Json ${resp.content}
56 [Documentation] Connect Create session and initialize ODL version specific variables
57 SSHLibrary.Open Connection ${TOOLS_SYSTEM_IP} timeout=3s
58 Utils.Flexible Mininet Login
59 SSHLibrary.Put File ${CURDIR}/docker-ovs.sh . mode=0755
60 SSHLibrary.Put File ${CURDIR}/Dockerfile . mode=0755
61 SSHLibrary.Put File ${CURDIR}/setup-docker-image.sh . mode=0755
62 ${result} SSHLibrary.Execute Command ./setup-docker-image.sh > >(tee myFile.log) 2> >(tee myFile.log) return_stderr=True return_stdout=True return_rc=True
64 Should be equal as integers ${result[2]} 0
65 ${result} SSHLibrary.Execute Command ./docker-ovs.sh spawn --nodes=6 --guests=1 --tun=vxlan-gpe --odl=${ODL_SYSTEM_IP} > >(tee myFile2.log) 2> >(tee myFile2.log) return_stderr=True return_stdout=True return_rc=True
67 Should be equal as integers ${result[2]} 0
68 SSHLibrary.Close Connection
69 Create Session session http://${ODL_SYSTEM_IP}:${RESTCONFPORT} auth=${AUTH} headers=${HEADERS}
71 Run Keyword If '${ODL_STREAM}' == 'stable-lithium' Set Suite Variable ${VERSION_DIR} lithium
72 ... ELSE Set Suite Variable ${VERSION_DIR} master
73 Set Suite Variable ${SERVICE_FUNCTIONS_FILE} ${CURDIR}/../../../variables/sfc/${VERSION_DIR}/full-deploy/service-functions.json
74 Set Suite Variable ${SERVICE_FORWARDERS_FILE} ${CURDIR}/../../../variables/sfc/${VERSION_DIR}/full-deploy/service-function-forwarders.json
75 Set Suite Variable ${SERVICE_NODES_FILE} ${CURDIR}/../../../variables/sfc/${VERSION_DIR}/full-deploy/service-nodes.json
76 Set Suite Variable ${SERVICE_CHAINS_FILE} ${CURDIR}/../../../variables/sfc/${VERSION_DIR}/full-deploy/service-function-chains.json
77 Set Suite Variable ${SERVICE_FUNCTION_PATHS_FILE} ${CURDIR}/../../../variables/sfc/${VERSION_DIR}/full-deploy/service-function-paths.json
78 Set Suite Variable ${SERVICE_RANDOM_SCHED_TYPE_FILE} ${CURDIR}/../../../variables/sfc/${VERSION_DIR}/full-deploy/service-random-schedule-type.json
79 Set Suite Variable ${SERVICE_ROUNDROBIN_SCHED_TYPE_FILE} ${CURDIR}/../../../variables/sfc/${VERSION_DIR}/full-deploy/service-roundrobin-schedule-type.json