2 Documentation Test suite for SFC Service Function Chains, Operates Chains from Restconf APIs.
6 Library OperatingSystem
7 Library RequestsLibrary
8 Resource ../../../variables/sfc/Variables.robot
9 Resource ../../../libraries/Utils.robot
10 Resource ../../../libraries/TemplatedRequests.robot
12 Suite Setup Init Suite
13 Suite Teardown Delete All Sessions
14 Test Setup Remove All Elements If Exist ${SERVICE_CHAINS_URI}
18 Put Service Function Chains
19 [Documentation] Add Service Function Chains from JSON file
20 Add Elements To URI From File ${SERVICE_CHAINS_URI} ${SERVICE_CHAINS_FILE}
21 ${body} OperatingSystem.Get File ${SERVICE_CHAINS_FILE}
22 ${jsonbody} To Json ${body}
23 ${chains} Get From Dictionary ${jsonbody} service-function-chains
24 ${resp} RequestsLibrary.Get Request session ${SERVICE_CHAINS_URI}
25 Should Contain ${ALLOWED_STATUS_CODES} ${resp.status_code}
26 ${result} To JSON ${resp.content}
27 ${chain} Get From Dictionary ${result} service-function-chains
28 Lists Should be Equal ${chain} ${chains}
30 Delete All Service Function Chains
31 [Documentation] Delete all Service Function Chains
32 Add Elements To URI From File ${SERVICE_CHAINS_URI} ${SERVICE_CHAINS_FILE}
33 ${resp} RequestsLibrary.Get Request session ${SERVICE_CHAINS_URI}
34 Should Contain ${ALLOWED_STATUS_CODES} ${resp.status_code}
35 Remove All Elements At URI ${SERVICE_CHAINS_URI}
36 ${resp} RequestsLibrary.Get Request session ${SERVICE_CHAINS_URI}
37 Should Be Equal As Strings ${resp.status_code} 404
39 Get one Service Function Chain
40 [Documentation] Get one Service Function Chain
41 Add Elements To URI From File ${SERVICE_CHAINS_URI} ${SERVICE_CHAINS_FILE}
42 ${elements} Create List SFC1 dpi-abstract1 napt44-abstract1 firewall-abstract1
43 Check For Elements At URI ${SERVICE_CHAIN_URI}/SFC1 ${elements}
45 Get A Non-existing Service Function Chain
46 [Documentation] Get A Non-existing Service Function Chain
47 Add Elements To URI From File ${SERVICE_CHAINS_URI} ${SERVICE_CHAINS_FILE}
48 ${resp} RequestsLibrary.Get Request session ${SERVICE_CHAIN_URI}/non-existing-sfc
49 Should Be Equal As Strings ${resp.status_code} 404
51 Delete A Service Function Chain
52 [Documentation] Delete A Service Function Chain
53 Add Elements To URI From File ${SERVICE_CHAINS_URI} ${SERVICE_CHAINS_FILE}
54 ${resp} RequestsLibrary.Get Request session ${SERVICE_CHAIN_URI}/SFC1
55 Should Contain ${ALLOWED_STATUS_CODES} ${resp.status_code}
56 Remove All Elements At URI ${SERVICE_CHAIN_URI}/SFC1
57 ${elements} Create List SFC1 dpi-abstract1 napt44-abstract1 firewall-abstract1
58 Check For Elements Not At URI ${SERVICE_CHAINS_URI} ${elements}
60 Delete A Non-existing Service Function Chain
61 [Documentation] Delete A Non existing Service Function Chain
62 Add Elements To URI From File ${SERVICE_CHAINS_URI} ${SERVICE_CHAINS_FILE}
63 ${body} OperatingSystem.Get File ${SERVICE_CHAINS_FILE}
64 ${jsonbody} To Json ${body}
65 ${chains} Get From Dictionary ${jsonbody} service-function-chains
66 ${resp} RequestsLibrary.Delete Request session ${SERVICE_CHAIN_URI}/non-existing-sfc
67 Should Be Equal As Strings ${resp.status_code} 404
68 ${resp} RequestsLibrary.Get Request session ${SERVICE_CHAINS_URI}
69 Should Contain ${ALLOWED_STATUS_CODES} ${resp.status_code}
70 ${result} To JSON ${resp.content}
71 ${chain} Get From Dictionary ${result} service-function-chains
72 Lists Should be Equal ${chain} ${chains}
74 Put one Service Function Chain
75 [Documentation] Put one Service Function Chain
76 Add Elements To URI From File ${SERVICE_CHAIN100_URI} ${SERVICE_CHAIN100_FILE}
77 ${elements} Create List SFC100 dpi-abstract100 napt44-abstract100 firewall-abstract100
78 Check For Elements At URI ${SERVICE_CHAIN100_URI} ${elements}
79 Check For Elements At URI ${SERVICE_CHAINS_URI} ${elements}
81 Get one Service Function From Chain
82 [Documentation] Get one Service Function From Chain
83 Add Elements To URI From File ${SERVICE_CHAINS_URI} ${SERVICE_CHAINS_FILE}
84 ${elements} Create List dpi-abstract1 "order":0 "type":"dpi"
85 Check For Elements At URI ${SERVICE_CHAIN_URI}/SFC1/sfc-service-function/dpi-abstract1 ${elements}
87 Get A Non-existing Service Function From Chain
88 [Documentation] Get A Non-existing Service Function From Chain
89 Add Elements To URI From File ${SERVICE_CHAINS_URI} ${SERVICE_CHAINS_FILE}
90 ${resp} RequestsLibrary.Get Request
92 ... ${SERVICE_CHAIN_URI}/SFC1/sfc-service-function/non-existing-sft
93 Should Be Equal As Strings ${resp.status_code} 404
95 Delete A Service Function From Chain
96 [Documentation] Delete A Service Function From Chain
97 Add Elements To URI From File ${SERVICE_CHAINS_URI} ${SERVICE_CHAINS_FILE}
98 Remove All Elements At URI ${SERVICE_CHAIN_URI}/SFC1/sfc-service-function/dpi-abstract1
99 ${resp} RequestsLibrary.Get Request session ${SERVICE_CHAINS_URI}
100 Should Contain ${ALLOWED_STATUS_CODES} ${resp.status_code}
101 Should Contain ${resp.text} SFC1
102 ${elements} Create List dpi-abstract1 service-function-type:dpi
103 Check For Elements Not At URI ${SERVICE_CHAIN_URI}/SFC1 ${elements}
105 Delete A Non-existing Service Function From Chain
106 [Documentation] Delete A Non existing Service Function From Chain
107 Add Elements To URI From File ${SERVICE_CHAINS_URI} ${SERVICE_CHAINS_FILE}
108 ${resp} RequestsLibrary.Delete Request
110 ... ${SERVICE_CHAIN_URI}/SFC1/sfc-service-function/non-existing-sft
111 Should Be Equal As Strings ${resp.status_code} 404
112 ${elements} Create List dpi-abstract1 napt44-abstract1 firewall-abstract1
113 Check For Elements At URI ${SERVICE_CHAIN_URI}/SFC1 ${elements}
114 Check For Elements At URI ${SERVICE_CHAINS_URI} ${elements}
116 Put one Service Function into Chain
117 [Documentation] Put one Service Function Chain
118 Add Elements To URI From File ${SERVICE_CHAINS_URI} ${SERVICE_CHAINS_FILE}
119 Add Elements To URI From File ${SERVICE_CHAIN100_SFIDS_URI} ${SERVICE_CHAIN100_SFIDS_FILE}
120 ${elements} Create List ids-abstract100 "order":3 "type":"ids"
121 Check For Elements At URI ${SERVICE_CHAIN100_SFIDS_URI} ${elements}
122 Check For Elements At URI ${SERVICE_CHAIN100_URI} ${elements}
123 Check For Elements At URI ${SERVICE_CHAINS_URI} ${elements}
128 [Documentation] Initialize session and ODL version specific variables
129 Create Session session http://${ODL_SYSTEM_IP}:${RESTCONFPORT} auth=${AUTH} headers=${HEADERS}
131 Set Suite Variable ${VERSION_DIR} master
132 Set Suite Variable ${TEST_DIR} ${CURDIR}/../../../variables/sfc/${VERSION_DIR}
133 Set Suite Variable ${SERVICE_CHAINS_FILE} ${TEST_DIR}/service-function-chains.json
134 Set Suite Variable ${SERVICE_CHAIN100_URI} ${SERVICE_CHAIN_URI}/SFC100
135 Set Suite Variable ${SERVICE_CHAIN100_FILE} ${TEST_DIR}/sfc_chain_100.json
136 Set Suite Variable ${SERVICE_CHAIN100_SFIDS_URI} ${SERVICE_CHAIN100_URI}/sfc-service-function/ids-abstract100
137 Set Suite Variable ${SERVICE_CHAIN100_SFIDS_FILE} ${TEST_DIR}/sfc_chain_100_sfids.json