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
15 ${CREATE_RSP1_INPUT} {"input":{"parent-service-function-path":"SFP-1","name":"SFP-1-Path-1"}}
16 ${CREATE_RSP_FAILURE_INPUT} {"input":{"parent-service-function-path":"SFC1-empty","name":"SFC1-empty-Path-1"}}
19 Basic Environment Setup Tests
20 [Documentation] Prepare Basic Test Environment
21 Add Elements To URI From File ${SERVICE_FORWARDERS_URI} ${SERVICE_FORWARDERS_FILE}
22 Add Elements To URI From File ${SERVICE_NODES_URI} ${SERVICE_NODES_FILE}
23 Add Elements To URI From File ${SERVICE_FUNCTIONS_URI} ${SERVICE_FUNCTIONS_FILE}
24 Add Elements To URI From File ${SERVICE_CHAINS_URI} ${SERVICE_CHAINS_FILE}
25 Add Elements To URI From File ${SERVICE_FUNCTION_PATHS_URI} ${SERVICE_FUNCTION_PATHS_FILE}
27 Create and Get Rendered Service Path
28 [Documentation] Create and Get Rendered Service Path Through RESTConf APIs
29 Post Elements To URI As JSON ${OPERATIONS_CREATE_RSP_URI} ${CREATE_RSP1_INPUT}
30 ${resp} RequestsLibrary.Get Request session ${OPERATIONAL_RSPS_URI}
31 Should Contain ${ALLOWED_STATUS_CODES} ${resp.status_code}
32 ${elements}= Create List SFP-1-Path-1 "parent-service-function-path":"SFP-1" "hop-number":0 "service-index":255 "hop-number":1
33 ... "service-index":254
34 Check For Elements At URI ${OPERATIONAL_RSPS_URI} ${elements}
36 Clean Datastore After Tests
37 [Documentation] Clean All Items In Datastore After Tests
39 Remove All Elements At URI ${SERVICE_FUNCTIONS_URI}
40 Remove All Elements At URI ${SERVICE_FORWARDERS_URI}
41 Remove All Elements At URI ${SERVICE_NODES_URI}
42 Remove All Elements At URI ${SERVICE_CHAINS_URI}
43 Remove All Elements At URI ${SERVICE_FUNCTION_PATHS_URI}
46 Post Elements To URI As JSON
47 [Arguments] ${uri} ${data}
48 ${resp} RequestsLibrary.Post Request session ${uri} data=${data} headers=${headers}
49 Should Contain ${ALLOWED_STATUS_CODES} ${resp.status_code}
51 Get JSON Elements From URI
53 ${resp} RequestsLibrary.Get Request session ${uri}
54 ${value} To Json ${resp.content}
58 [Documentation] Connect Create session and initialize ODL version specific variables
59 SSHLibrary.Open Connection ${TOOLS_SYSTEM_IP} timeout=3s
60 Utils.Flexible Mininet Login
61 SSHLibrary.Put File ${CURDIR}/docker-ovs.sh . mode=0755
62 SSHLibrary.Put File ${CURDIR}/Dockerfile . mode=0755
63 SSHLibrary.Put File ${CURDIR}/setup-docker-image.sh . mode=0755
64 ${result} SSHLibrary.Execute Command ./setup-docker-image.sh > >(tee myFile.log) 2> >(tee myFile.log) return_stderr=True return_stdout=True return_rc=True
66 Should be equal as integers ${result[2]} 0
67 ${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
69 Should be equal as integers ${result[2]} 0
70 SSHLibrary.Close Connection
71 Create Session session http://${ODL_SYSTEM_IP}:${RESTCONFPORT} auth=${AUTH} headers=${HEADERS}
73 Run Keyword If '${ODL_STREAM}' == 'stable-lithium' Set Suite Variable ${VERSION_DIR} lithium
74 ... ELSE Set Suite Variable ${VERSION_DIR} master
75 Set Suite Variable ${SERVICE_FUNCTIONS_FILE} ${CURDIR}/../../../variables/sfc/${VERSION_DIR}/full-deploy/service-functions.json
76 Set Suite Variable ${SERVICE_FORWARDERS_FILE} ${CURDIR}/../../../variables/sfc/${VERSION_DIR}/full-deploy/service-function-forwarders.json
77 Set Suite Variable ${SERVICE_NODES_FILE} ${CURDIR}/../../../variables/sfc/${VERSION_DIR}/full-deploy/service-nodes.json
78 Set Suite Variable ${SERVICE_CHAINS_FILE} ${CURDIR}/../../../variables/sfc/${VERSION_DIR}/full-deploy/service-function-chains.json
79 Set Suite Variable ${SERVICE_FUNCTION_PATHS_FILE} ${CURDIR}/../../../variables/sfc/${VERSION_DIR}/full-deploy/service-function-paths.json
80 Set Suite Variable ${SERVICE_RANDOM_SCHED_TYPE_FILE} ${CURDIR}/../../../variables/sfc/${VERSION_DIR}/full-deploy/service-random-schedule-type.json
81 Set Suite Variable ${SERVICE_ROUNDROBIN_SCHED_TYPE_FILE} ${CURDIR}/../../../variables/sfc/${VERSION_DIR}/full-deploy/service-roundrobin-schedule-type.json