2 Documentation Test suite for SFC Service Function Chains, Operates Chains from Restconf APIs.
4 Suite Teardown Delete All Sessions
5 Test Setup Remove All Elements If Exist ${SERVICE_CHAINS_URI}
8 Library OperatingSystem
9 Library RequestsLibrary
10 Variables ../../../variables/Variables.py
11 Resource ../../../libraries/Utils.robot
12 Resource ../../../libraries/TemplatedRequests.robot
15 Put Service Function Chains
16 [Documentation] Add Service Function Chains from JSON file
17 Add Elements To URI From File ${SERVICE_CHAINS_URI} ${SERVICE_CHAINS_FILE}
18 ${body} OperatingSystem.Get File ${SERVICE_CHAINS_FILE}
19 ${jsonbody} To Json ${body}
20 ${chains} Get From Dictionary ${jsonbody} service-function-chains
21 ${resp} RequestsLibrary.Get Request session ${SERVICE_CHAINS_URI}
22 Should Contain ${ALLOWED_STATUS_CODES} ${resp.status_code}
23 ${result} To JSON ${resp.content}
24 ${chain} Get From Dictionary ${result} service-function-chains
25 Lists Should be Equal ${chain} ${chains}
27 Delete All Service Function Chains
28 [Documentation] Delete all Service Function Chains
29 Add Elements To URI From File ${SERVICE_CHAINS_URI} ${SERVICE_CHAINS_FILE}
30 ${resp} RequestsLibrary.Get Request session ${SERVICE_CHAINS_URI}
31 Should Contain ${ALLOWED_STATUS_CODES} ${resp.status_code}
32 Remove All Elements At URI ${SERVICE_CHAINS_URI}
33 ${resp} RequestsLibrary.Get Request session ${SERVICE_CHAINS_URI}
34 Should Be Equal As Strings ${resp.status_code} 404
36 Get one Service Function Chain
37 [Documentation] Get one Service Function Chain
38 Add Elements To URI From File ${SERVICE_CHAINS_URI} ${SERVICE_CHAINS_FILE}
39 ${elements}= Create List SFC1 dpi-abstract1 napt44-abstract1 firewall-abstract1
40 Check For Elements At URI ${SERVICE_CHAINS_URI}service-function-chain/SFC1 ${elements}
42 Get A Non-existing Service Function Chain
43 [Documentation] Get A Non-existing Service Function Chain
44 Add Elements To URI From File ${SERVICE_CHAINS_URI} ${SERVICE_CHAINS_FILE}
45 ${resp} RequestsLibrary.Get Request session ${SERVICE_CHAINS_URI}service-function-chain/non-existing-sfc
46 Should Be Equal As Strings ${resp.status_code} 404
48 Delete A Service Function Chain
49 [Documentation] Delete A Service Function Chain
50 Add Elements To URI From File ${SERVICE_CHAINS_URI} ${SERVICE_CHAINS_FILE}
51 ${resp} RequestsLibrary.Get Request session ${SERVICE_CHAINS_URI}service-function-chain/SFC1
52 Should Contain ${ALLOWED_STATUS_CODES} ${resp.status_code}
53 Remove All Elements At URI ${SERVICE_CHAINS_URI}service-function-chain/SFC1
54 ${elements}= Create List SFC1 dpi-abstract1 napt44-abstract1 firewall-abstract1
55 Check For Elements Not At URI ${SERVICE_CHAINS_URI} ${elements}
57 Delete A Non-existing Service Function Chain
58 [Documentation] Delete A Non existing Service Function Chain
59 Add Elements To URI From File ${SERVICE_CHAINS_URI} ${SERVICE_CHAINS_FILE}
60 ${body} OperatingSystem.Get File ${SERVICE_CHAINS_FILE}
61 ${jsonbody} To Json ${body}
62 ${chains} Get From Dictionary ${jsonbody} service-function-chains
63 ${resp} RequestsLibrary.Delete Request session ${SERVICE_CHAINS_URI}service-function-chain/non-existing-sfc
64 Should Be Equal As Strings ${resp.status_code} 404
65 ${resp} RequestsLibrary.Get Request session ${SERVICE_CHAINS_URI}
66 Should Contain ${ALLOWED_STATUS_CODES} ${resp.status_code}
67 ${result} To JSON ${resp.content}
68 ${chain} Get From Dictionary ${result} service-function-chains
69 Lists Should be Equal ${chain} ${chains}
71 Put one Service Function Chain
72 [Documentation] Put one Service Function Chain
73 Add Elements To URI From File ${SERVICE_CHAIN100_URI} ${SERVICE_CHAIN100_FILE}
74 ${elements}= Create List SFC100 dpi-abstract100 napt44-abstract100 firewall-abstract100
75 Check For Elements At URI ${SERVICE_CHAIN100_URI} ${elements}
76 Check For Elements At URI ${SERVICE_CHAINS_URI} ${elements}
78 Get one Service Function From Chain
79 [Documentation] Get one Service Function From Chain
80 Add Elements To URI From File ${SERVICE_CHAINS_URI} ${SERVICE_CHAINS_FILE}
81 ${elements}= Create List dpi-abstract1 "order":0 "type":"dpi"
82 Check For Elements At URI ${SERVICE_CHAINS_URI}service-function-chain/SFC1/sfc-service-function/dpi-abstract1 ${elements}
84 Get A Non-existing Service Function From Chain
85 [Documentation] Get A Non-existing Service Function From Chain
86 Add Elements To URI From File ${SERVICE_CHAINS_URI} ${SERVICE_CHAINS_FILE}
87 ${resp} RequestsLibrary.Get Request session ${SERVICE_CHAINS_URI}service-function-chain/SFC1/sfc-service-function/non-existing-sft
88 Should Be Equal As Strings ${resp.status_code} 404
90 Delete A Service Function From Chain
91 [Documentation] Delete A Service Function From Chain
92 Add Elements To URI From File ${SERVICE_CHAINS_URI} ${SERVICE_CHAINS_FILE}
93 Remove All Elements At URI ${SERVICE_CHAINS_URI}service-function-chain/SFC1/sfc-service-function/dpi-abstract1
94 ${resp} RequestsLibrary.Get Request session ${SERVICE_CHAINS_URI}
95 Should Contain ${ALLOWED_STATUS_CODES} ${resp.status_code}
96 Should Contain ${resp.content} SFC1
97 ${elements}= Create List dpi-abstract1 service-function-type:dpi
98 Check For Elements Not At URI ${SERVICE_CHAINS_URI}service-function-chain/SFC1/ ${elements}
100 Delete A Non-existing Service Function From Chain
101 [Documentation] Delete A Non existing Service Function From Chain
102 Add Elements To URI From File ${SERVICE_CHAINS_URI} ${SERVICE_CHAINS_FILE}
103 ${resp} RequestsLibrary.Delete Request session ${SERVICE_CHAINS_URI}service-function-chain/SFC1/sfc-service-function/non-existing-sft
104 Should Be Equal As Strings ${resp.status_code} 404
105 ${elements}= Create List dpi-abstract1 napt44-abstract1 firewall-abstract1
106 Check For Elements At URI ${SERVICE_CHAINS_URI}service-function-chain/SFC1 ${elements}
107 Check For Elements At URI ${SERVICE_CHAINS_URI} ${elements}
109 Put one Service Function into Chain
110 [Documentation] Put one Service Function Chain
111 Add Elements To URI From File ${SERVICE_CHAINS_URI} ${SERVICE_CHAINS_FILE}
112 Add Elements To URI From File ${SERVICE_CHAIN100_SFIDS_URI} ${SERVICE_CHAIN100_SFIDS_FILE}
113 ${elements}= Create List ids-abstract100 "order":3 "type":"ids"
114 Check For Elements At URI ${SERVICE_CHAIN100_SFIDS_URI} ${elements}
115 Check For Elements At URI ${SERVICE_CHAIN100_URI} ${elements}
116 Check For Elements At URI ${SERVICE_CHAINS_URI} ${elements}
120 [Documentation] Initialize session and ODL version specific variables
121 Create Session session http://${ODL_SYSTEM_IP}:${RESTCONFPORT} auth=${AUTH} headers=${HEADERS}
123 Run Keyword If '${ODL_STREAM}' == 'stable-lithium' Set Suite Variable ${VERSION_DIR} lithium
124 ... ELSE Set Suite Variable ${VERSION_DIR} master
125 Set Suite Variable ${SERVICE_CHAINS_URI} /restconf/config/service-function-chain:service-function-chains/
126 Set Suite Variable ${SERVICE_CHAINS_FILE} ${CURDIR}/../../../variables/sfc/${VERSION_DIR}/service-function-chains.json
127 Set Suite Variable ${SERVICE_CHAIN100_URI} /restconf/config/service-function-chain:service-function-chains/service-function-chain/SFC100
128 Set Suite Variable ${SERVICE_CHAIN100_FILE} ${CURDIR}/../../../variables/sfc/${VERSION_DIR}/sfc_chain_100.json
129 Set Suite Variable ${SERVICE_CHAIN100_SFIDS_URI} /restconf/config/service-function-chain:service-function-chains/service-function-chain/SFC100/sfc-service-function/ids-abstract100
130 Set Suite Variable ${SERVICE_CHAIN100_SFIDS_FILE} ${CURDIR}/../../../variables/sfc/${VERSION_DIR}/sfc_chain_100_sfids.json