2 Documentation Test suite for SFC Service Function Chains, Operates Chains from Restconf APIs.
4 Suite Teardown Delete All Sessions
7 Library OperatingSystem
8 Library RequestsLibrary
9 Variables ../../../variables/Variables.py
10 Resource ../../../libraries/Utils.robot
13 Put Service Function Chains
14 [Documentation] Add Service Function Chains from JSON file
15 Add Elements To URI From File ${SERVICE_CHAINS_URI} ${SERVICE_CHAINS_FILE}
16 ${body} OperatingSystem.Get File ${SERVICE_CHAINS_FILE}
17 ${jsonbody} To Json ${body}
18 ${chains} Get From Dictionary ${jsonbody} service-function-chains
19 ${resp} RequestsLibrary.Get Request session ${SERVICE_CHAINS_URI}
20 Should Be Equal As Strings ${resp.status_code} 200
21 ${result} To JSON ${resp.content}
22 ${chain} Get From Dictionary ${result} service-function-chains
23 Lists Should be Equal ${chain} ${chains}
25 Delete All Service Function Chains
26 [Documentation] Delete all Service Function Chains
27 ${resp} RequestsLibrary.Get Request session ${SERVICE_CHAINS_URI}
28 Should Be Equal As Strings ${resp.status_code} 200
29 Remove All Elements At URI ${SERVICE_CHAINS_URI}
30 ${resp} RequestsLibrary.Get Request session ${SERVICE_CHAINS_URI}
31 Should Be Equal As Strings ${resp.status_code} 404
33 Get one Service Function Chain
34 [Documentation] Get one Service Function Chain
35 Remove All Elements At URI ${SERVICE_CHAINS_URI}
36 Add Elements To URI From File ${SERVICE_CHAINS_URI} ${SERVICE_CHAINS_FILE}
37 ${elements}= Create List SFC1 dpi-abstract1 napt44-abstract1 firewall-abstract1
38 Check For Elements At URI ${SERVICE_CHAINS_URI}service-function-chain/SFC1 ${elements}
40 Get A Non-existing Service Function Chain
41 [Documentation] Get A Non-existing Service Function Chain
42 Remove All Elements At URI ${SERVICE_CHAINS_URI}
43 Add Elements To URI From File ${SERVICE_CHAINS_URI} ${SERVICE_CHAINS_FILE}
44 ${resp} RequestsLibrary.Get Request session ${SERVICE_CHAINS_URI}service-function-chain/non-existing-sfc
45 Should Be Equal As Strings ${resp.status_code} 404
47 Delete A Service Function Chain
48 [Documentation] Delete A Service Function Chain
49 Remove All Elements At URI ${SERVICE_CHAINS_URI}
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 Be Equal As Strings ${resp.status_code} 200
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 Remove All Elements At URI ${SERVICE_CHAINS_URI}
60 Add Elements To URI From File ${SERVICE_CHAINS_URI} ${SERVICE_CHAINS_FILE}
61 ${body} OperatingSystem.Get File ${SERVICE_CHAINS_FILE}
62 ${jsonbody} To Json ${body}
63 ${chains} Get From Dictionary ${jsonbody} service-function-chains
64 Remove All Elements At URI ${SERVICE_CHAINS_URI}service-function-chain/non-existing-sfc
65 ${resp} RequestsLibrary.Get Request session ${SERVICE_CHAINS_URI}
66 Should Be Equal As Strings ${resp.status_code} 200
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 Remove All Elements At URI ${SERVICE_CHAINS_URI}
74 Add Elements To URI From File ${SERVICE_CHAIN100_URI} ${SERVICE_CHAIN100_FILE}
75 ${elements}= Create List SFC100 dpi-abstract100 napt44-abstract100 firewall-abstract100
76 Check For Elements At URI ${SERVICE_CHAIN100_URI} ${elements}
77 Check For Elements At URI ${SERVICE_CHAINS_URI} ${elements}
79 Get one Service Function From Chain
80 [Documentation] Get one Service Function From Chain
81 Remove All Elements At URI ${SERVICE_CHAINS_URI}
82 Add Elements To URI From File ${SERVICE_CHAINS_URI} ${SERVICE_CHAINS_FILE}
83 ${elements}= Create List dpi-abstract1 "order":0 "type":"dpi"
84 Check For Elements At URI ${SERVICE_CHAINS_URI}service-function-chain/SFC1/sfc-service-function/dpi-abstract1 ${elements}
86 Get A Non-existing Service Function From Chain
87 [Documentation] Get A Non-existing Service Function From Chain
88 Remove All Elements At URI ${SERVICE_CHAINS_URI}
89 Add Elements To URI From File ${SERVICE_CHAINS_URI} ${SERVICE_CHAINS_FILE}
90 ${resp} RequestsLibrary.Get Request session ${SERVICE_CHAINS_URI}service-function-chain/SFC1/sfc-service-function/non-existing-sft
91 Should Be Equal As Strings ${resp.status_code} 404
93 Delete A Service Function From Chain
94 [Documentation] Delete A Service Function From Chain
95 Remove All Elements At URI ${SERVICE_CHAINS_URI}
96 Add Elements To URI From File ${SERVICE_CHAINS_URI} ${SERVICE_CHAINS_FILE}
97 Remove All Elements At URI ${SERVICE_CHAINS_URI}service-function-chain/SFC1/sfc-service-function/dpi-abstract1
98 ${resp} RequestsLibrary.Get Request session ${SERVICE_CHAINS_URI}
99 Should Be Equal As Strings ${resp.status_code} 200
100 Should Contain ${resp.content} SFC1
101 ${elements}= Create List dpi-abstract1 service-function-type:dpi
102 Check For Elements Not At URI ${SERVICE_CHAINS_URI}service-function-chain/SFC1/ ${elements}
104 Delete A Non-existing Service Function From Chain
105 [Documentation] Delete A Non existing Service Function From Chain
106 Remove All Elements At URI ${SERVICE_CHAINS_URI}
107 Add Elements To URI From File ${SERVICE_CHAINS_URI} ${SERVICE_CHAINS_FILE}
108 Remove All Elements At URI ${SERVICE_CHAINS_URI}service-function-chain/SFC1/sfc-service-function/non-existing-sft
109 ${elements}= Create List dpi-abstract1 napt44-abstract1 firewall-abstract1
110 Check For Elements At URI ${SERVICE_CHAINS_URI}service-function-chain/SFC1 ${elements}
111 Check For Elements At URI ${SERVICE_CHAINS_URI} ${elements}
113 Put one Service Function into Chain
114 [Documentation] Put one Service Function Chain
115 Remove All Elements At URI ${SERVICE_CHAINS_URI}
116 Add Elements To URI From File ${SERVICE_CHAINS_URI} ${SERVICE_CHAINS_FILE}
117 Add Elements To URI From File ${SERVICE_CHAIN100_SFIDS_URI} ${SERVICE_CHAIN100_SFIDS_FILE}
118 ${elements}= Create List ids-abstract100 "order":3 "type":"ids"
119 Check For Elements At URI ${SERVICE_CHAIN100_SFIDS_URI} ${elements}
120 Check For Elements At URI ${SERVICE_CHAIN100_URI} ${elements}
121 Check For Elements At URI ${SERVICE_CHAINS_URI} ${elements}
123 Clean All Service Function Chains After Tests
124 [Documentation] Delete all Service Function Chains From Datastore After Tests
125 Remove All Elements At URI ${SERVICE_CHAINS_URI}
129 [Documentation] Initialize session and ODL version specific variables
130 Create Session session http://${ODL_SYSTEM_IP}:${RESTCONFPORT} auth=${AUTH} headers=${HEADERS}
132 Run Keyword If '${ODL_STREAM}' == 'stable-lithium' Set Suite Variable ${VERSION_DIR} lithium
133 ... ELSE Set Suite Variable ${VERSION_DIR} master
134 Set Suite Variable ${SERVICE_CHAINS_URI} /restconf/config/service-function-chain:service-function-chains/
135 Set Suite Variable ${SERVICE_CHAINS_FILE} ${CURDIR}/../../../variables/sfc/${VERSION_DIR}/service-function-chains.json
136 Set Suite Variable ${SERVICE_CHAIN100_URI} /restconf/config/service-function-chain:service-function-chains/service-function-chain/SFC100
137 Set Suite Variable ${SERVICE_CHAIN100_FILE} ${CURDIR}/../../../variables/sfc/${VERSION_DIR}/sfc_chain_100.json
138 Set Suite Variable ${SERVICE_CHAIN100_SFIDS_URI} /restconf/config/service-function-chain:service-function-chains/service-function-chain/SFC100/sfc-service-function/ids-abstract100
139 Set Suite Variable ${SERVICE_CHAIN100_SFIDS_FILE} ${CURDIR}/../../../variables/sfc/${VERSION_DIR}/sfc_chain_100_sfids.json