Step 1: Move vm scripts to the right place
[integration/test.git] / csit / suites / sfc / SFC_Basic / 020__sfc_service_forwarders.robot
1 *** Settings ***
2 Documentation     Test suite for SFC Service Function Forwarders, Operates SFFs from Restconf APIs.
3 Suite Setup       Create Session    session    http://${CONTROLLER}:${RESTCONFPORT}    auth=${AUTH}    headers=${HEADERS}
4 Suite Teardown    Delete All Sessions
5 Library           SSHLibrary
6 Library           Collections
7 Library           OperatingSystem
8 Library           RequestsLibrary
9 Variables         ../../../variables/Variables.py
10 Resource          ../../../libraries/Utils.robot
11
12 *** Variables ***
13 ${SERVICE_FORWARDERS_URI}    /restconf/config/service-function-forwarder:service-function-forwarders/
14 ${SERVICE_FORWARDERS_FILE}    ../../../variables/sfc/service-function-forwarders.json
15 ${SFF_OVS100_URI}    /restconf/config/service-function-forwarder:service-function-forwarders/service-function-forwarder/ovs-100/
16 ${SFF_OVS100_FILE}    ../../../variables/sfc/sff_ovs_100.json
17 ${SFF_DPL101_FILE}    ../../../variables/sfc/sff_dpl_101.json
18 ${SFF_DPL_LOCATOR_FILE}    ../../../variables/sfc/sff_dpl_locator.json
19 ${SFF_SFD_SF100_FILE}    ../../../variables/sfc/sff_sfd_sf100.json
20 ${SFF_SFD_LOCATOR_FILE}    ../../../variables/sfc/sff_sfd_locator.json
21 ${SFF_CSD_SFF100_FILE}    ../../../variables/sfc/sff_csd_sff100.json
22 ${SFF_CSD_LOCATOR_FILE}    ../../../variables/sfc/sff_csd_locator.json
23
24 *** Test Cases ***
25 Put Service Function Forwarders
26     [Documentation]    Add Service Function Forwarders from JSON file
27     Add Elements To URI From File    ${SERVICE_FORWARDERS_URI}    ${SERVICE_FORWARDERS_FILE}
28     ${body}    OperatingSystem.Get File    ${SERVICE_FORWARDERS_FILE}
29     ${jsonbody}    To Json    ${body}
30     ${forwarders}    Get From Dictionary    ${jsonbody}    service-function-forwarders
31     ${resp}    RequestsLibrary.Get    session    ${SERVICE_FORWARDERS_URI}
32     Should Be Equal As Strings    ${resp.status_code}    200
33     ${result}    To JSON    ${resp.content}
34     ${forwarder}    Get From Dictionary    ${result}    service-function-forwarders
35     Lists Should be Equal    ${forwarder}    ${forwarders}
36
37 Delete All Service Function Forwarders
38     [Documentation]    Delete all Service Function Forwarders
39     ${resp}    RequestsLibrary.Get    session    ${SERVICE_FORWARDERS_URI}
40     Should Be Equal As Strings    ${resp.status_code}    200
41     Remove All Elements At URI    ${SERVICE_FORWARDERS_URI}
42     ${resp}    RequestsLibrary.Get    session    ${SERVICE_FORWARDERS_URI}
43     Should Be Equal As Strings    ${resp.status_code}    404
44
45 Get one Service Function Forwarder
46     [Documentation]    Get one Service Function Forwarder
47     Remove All Elements At URI    ${SERVICE_FORWARDERS_URI}
48     Add Elements To URI From File    ${SERVICE_FORWARDERS_URI}    ${SERVICE_FORWARDERS_FILE}
49     ${elements}=    Create List    SFF-bootstrap    service-locator:vxlan-gpe    SF1
50     Check For Elements At URI    ${SERVICE_FORWARDERS_URI}service-function-forwarder/SFF-bootstrap    ${elements}
51
52 Get A Non-existing Service Function Forwarder
53     [Documentation]    Get A Non-existing Service Function Forwarder
54     Remove All Elements At URI    ${SERVICE_FORWARDERS_URI}
55     Add Elements To URI From File    ${SERVICE_FORWARDERS_URI}    ${SERVICE_FORWARDERS_FILE}
56     ${resp}    RequestsLibrary.Get    session    ${SERVICE_FORWARDERS_URI}service-function-forwarder/non-existing-sff
57     Should Be Equal As Strings    ${resp.status_code}    404
58
59 Delete A Service Function Forwarder
60     [Documentation]    Delete A Service Function Forwarder
61     Remove All Elements At URI    ${SERVICE_FORWARDERS_URI}
62     Add Elements To URI From File    ${SERVICE_FORWARDERS_URI}    ${SERVICE_FORWARDERS_FILE}
63     ${resp}    RequestsLibrary.Get    session    ${SERVICE_FORWARDERS_URI}service-function-forwarder/SFF-bootstrap
64     Should Be Equal As Strings    ${resp.status_code}    200
65     Remove All Elements At URI    ${SERVICE_FORWARDERS_URI}service-function-forwarder/SFF-bootstrap
66     ${resp}    RequestsLibrary.Get    session    ${SERVICE_FORWARDERS_URI}service-function-forwarder/SFF-bootstrap
67     Should Be Equal As Strings    ${resp.status_code}    404
68     ${resp}    RequestsLibrary.Get    session    ${SERVICE_FORWARDERS_URI}
69     Should Be Equal As Strings    ${resp.status_code}    200
70     Should Not Contain    ${resp.content}    SF1
71
72 Delete A Non-existing Service Function Forwarder
73     [Documentation]    Delete A Non existing Service Function
74     Remove All Elements At URI    ${SERVICE_FORWARDERS_URI}
75     Add Elements To URI From File    ${SERVICE_FORWARDERS_URI}    ${SERVICE_FORWARDERS_FILE}
76     ${body}    OperatingSystem.Get File    ${SERVICE_FORWARDERS_FILE}
77     ${jsonbody}    To Json    ${body}
78     ${forwarders}    Get From Dictionary    ${jsonbody}    service-function-forwarders
79     Remove All Elements At URI    ${SERVICE_FORWARDERS_URI}service-function-forwarder/non-existing-sff
80     ${resp}    RequestsLibrary.Get    session    ${SERVICE_FORWARDERS_URI}
81     Should Be Equal As Strings    ${resp.status_code}    200
82     ${result}    To JSON    ${resp.content}
83     ${forwarder}    Get From Dictionary    ${result}    service-function-forwarders
84     Lists Should be Equal    ${forwarder}    ${forwarders}
85
86 Put one Service Function Forwarder
87     [Documentation]    Put one Service Function Forwarder
88     Remove All Elements At URI    ${SERVICE_FORWARDERS_URI}
89     Add Elements To URI From File    ${SFF_OVS100_URI}    ${SFF_OVS100_FILE}
90     ${resp}    RequestsLibrary.Get    session    ${SFF_OVS100_URI}
91     Should Be Equal As Strings    ${resp.status_code}    200
92     ${elements}=    Create List    ovs-100    SF7
93     Check For Elements At URI    ${SFF_OVS100_URI}    ${elements}
94     Check For Elements At URI    ${SERVICE_FORWARDERS_URI}    ${elements}
95
96 Get Service Function Forwarder DPL
97     [Documentation]    Get Service Function Data Plane Locator
98     Remove All Elements At URI    ${SERVICE_FORWARDERS_URI}
99     Add Elements To URI From File    ${SFF_OVS100_URI}    ${SFF_OVS100_FILE}
100     ${elements}=    Create List    eth0    service-locator:vxlan-gpe
101     Check For Elements At URI    ${SFF_OVS100_URI}sff-data-plane-locator/eth0    ${elements}
102
103 Put Service Function Forwarder DPL
104     [Documentation]    Put Service Function Forwarder Data Plane Locator
105     Remove All Elements At URI    ${SERVICE_FORWARDERS_URI}
106     Add Elements To URI From File    ${SFF_OVS100_URI}    ${SFF_OVS100_FILE}
107     Add Elements To URI From File    ${SFF_OVS100_URI}sff-data-plane-locator/dpl-101    ${SFF_DPL101_FILE}
108     ${elements}=    Create List    dpl-101    6101
109     Check For Elements At URI    ${SFF_OVS100_URI}sff-data-plane-locator/dpl-101    ${elements}
110     Check For Elements At URI    ${SFF_OVS100_URI}    ${elements}
111
112 Put DPL to a Non-existing Service Function Forwarder
113     [Documentation]    Put Service Function DPL to a Non-existing Service Function
114     Remove All Elements At URI    ${SERVICE_FORWARDERS_URI}
115     Add Elements To URI From File    ${SFF_OVS100_URI}sff-data-plane-locator/dpl-101    ${SFF_DPL101_FILE}
116     ${resp}    RequestsLibrary.Get    session    ${SERVICE_FORWARDERS_URI}
117     Should Be Equal As Strings    ${resp.status_code}    200
118     Should Contain    ${resp.content}    ovs-100
119     ${elements}=    Create List    dpl-101    6101
120     Check For Elements At URI    ${SFF_OVS100_URI}sff-data-plane-locator/dpl-101    ${elements}
121     Check For Elements At URI    ${SFF_OVS100_URI}    ${elements}
122
123 Delete Service Function Forwarder DPL
124     [Documentation]    Delete Service Function Forwarder Data Plane Locator
125     Remove All Elements At URI    ${SERVICE_FORWARDERS_URI}
126     Add Elements To URI From File    ${SFF_OVS100_URI}    ${SFF_OVS100_FILE}
127     Remove All Elements At URI    ${SFF_OVS100_URI}sff-data-plane-locator/eth0
128     ${resp}    RequestsLibrary.Get    session    ${SFF_OVS100_URI}
129     Should Be Equal As Strings    ${resp.status_code}    200
130     Should Not Contain    ${resp.content}    eth0
131
132 Get Service Function Forwarder DPL's Locator
133     [Documentation]    Get Service Function Data Plane Locator
134     Remove All Elements At URI    ${SERVICE_FORWARDERS_URI}
135     Add Elements To URI From File    ${SFF_OVS100_URI}    ${SFF_OVS100_FILE}
136     ${elements}=    Create List    6000    service-locator:vxlan-gpe
137     Check For Elements At URI    ${SFF_OVS100_URI}sff-data-plane-locator/eth0/data-plane-locator/    ${elements}
138
139 Put Service Function Forwarder DPL's Locator
140     [Documentation]    Put Service Function Forwarder Data Plane Locator
141     Remove All Elements At URI    ${SERVICE_FORWARDERS_URI}
142     Add Elements To URI From File    ${SFF_OVS100_URI}    ${SFF_OVS100_FILE}
143     Add Elements To URI From File    ${SFF_OVS100_URI}sff-data-plane-locator/dpl-101    ${SFF_DPL101_FILE}
144     Add Elements To URI From File    ${SFF_OVS100_URI}sff-data-plane-locator/dpl-101/data-plane-locator/    ${SFF_DPL_LOCATOR_FILE}
145     ${elements}=    Create List    5000    service-locator:vxlan-gpe
146     Check For Elements At URI    ${SFF_OVS100_URI}sff-data-plane-locator/dpl-101/data-plane-locator    ${elements}
147     ${elements}=    Create List    dpl-101    5000    service-locator:vxlan-gpe
148     Check For Elements At URI    ${SFF_OVS100_URI}sff-data-plane-locator/dpl-101    ${elements}
149     Check For Elements At URI    ${SFF_OVS100_URI}    ${elements}
150
151 Delete Service Function Forwarder DPL's Locator
152     [Documentation]    Delete Service Function Forwarder Data Plane Locator
153     Remove All Elements At URI    ${SERVICE_FORWARDERS_URI}
154     Add Elements To URI From File    ${SFF_OVS100_URI}    ${SFF_OVS100_FILE}
155     Add Elements To URI From File    ${SFF_OVS100_URI}sff-data-plane-locator/dpl-101    ${SFF_DPL101_FILE}
156     Add Elements To URI From File    ${SFF_OVS100_URI}sff-data-plane-locator/dpl-101/data-plane-locator/    ${SFF_DPL_LOCATOR_FILE}
157     Remove All Elements At URI    ${SFF_OVS100_URI}sff-data-plane-locator/dpl-101/data-plane-locator
158     ${resp}    RequestsLibrary.Get    session    ${SFF_OVS100_URI}sff-data-plane-locator/dpl-101
159     Should Be Equal As Strings    ${resp.status_code}    200
160     Should Contain    ${resp.content}    dpl-101
161     Should Not Contain    ${resp.content}    6101
162     Should Not Contain    ${resp.content}    service-locator:vxlan-gpe
163     ${resp}    RequestsLibrary.Get    session    ${SFF_OVS100_URI}
164     Should Be Equal As Strings    ${resp.status_code}    200
165     Should Contain    ${resp.content}    dpl-101
166     Should Not Contain    ${resp.content}    6101
167
168 Get Service Function Dictionary From SFF
169     [Documentation]    Get Service Function Dictionary From SFF
170     Remove All Elements At URI    ${SERVICE_FORWARDERS_URI}
171     Add Elements To URI From File    ${SERVICE_FORWARDERS_URI}    ${SERVICE_FORWARDERS_FILE}
172     ${elements}=    Create List    service-function-dictionary    service-function-type:dpi    SF1
173     Check For Elements At URI    ${SERVICE_FORWARDERS_URI}service-function-forwarder/SFF-bootstrap/service-function-dictionary/SF1    ${elements}
174
175 Delete Service Function Dictionary From SFF
176     [Documentation]    Delete Service Function Dictionary From SFF
177     Remove All Elements At URI    ${SERVICE_FORWARDERS_URI}
178     Add Elements To URI From File    ${SERVICE_FORWARDERS_URI}    ${SERVICE_FORWARDERS_FILE}
179     ${resp}    RequestsLibrary.Get    session    ${SERVICE_FORWARDERS_URI}service-function-forwarder/SFF-bootstrap/service-function-dictionary/SF1
180     Should Be Equal As Strings    ${resp.status_code}    200
181     Remove All Elements At URI    ${SERVICE_FORWARDERS_URI}service-function-forwarder/SFF-bootstrap/service-function-dictionary/SF1
182     ${resp}    RequestsLibrary.Get    session    ${SERVICE_FORWARDERS_URI}service-function-forwarder/SFF-bootstrap/service-function-dictionary/SF1
183     Should Be Equal As Strings    ${resp.status_code}    404
184     ${resp}    RequestsLibrary.Get    session    ${SERVICE_FORWARDERS_URI}service-function-forwarder/SFF-bootstrap/
185     Should Be Equal As Strings    ${resp.status_code}    200
186     Should Contain    ${resp.content}    service-function-dictionary
187     Should Not Contain    ${resp.content}    SF1
188
189 Put Service Function Dictionary to SFF
190     [Documentation]    Put Service Function Dictionary to SFF
191     Remove All Elements At URI    ${SERVICE_FORWARDERS_URI}
192     Add Elements To URI From File    ${SERVICE_FORWARDERS_URI}    ${SERVICE_FORWARDERS_FILE}
193     Add Elements To URI From File    ${SERVICE_FORWARDERS_URI}service-function-forwarder/SFF-bootstrap/service-function-dictionary/SF100    ${SFF_SFD_SF100_FILE}
194     ${elements}=    Create List    service-function-type:napt44    SF100
195     Check For Elements At URI    ${SERVICE_FORWARDERS_URI}service-function-forwarder/SFF-bootstrap/service-function-dictionary/SF100    ${elements}
196     ${elements}=    create list    service-function-dictionary    service-function-type:napt44    SF100
197     Check For Elements At URI    ${SERVICE_FORWARDERS_URI}service-function-forwarder/SFF-bootstrap/    ${elements}
198
199 Get Service Function Dictionary's DPL From SFF
200     [Documentation]    Get Service Function Dictionary From SFF
201     Remove All Elements At URI    ${SERVICE_FORWARDERS_URI}
202     Add Elements To URI From File    ${SERVICE_FORWARDERS_URI}    ${SERVICE_FORWARDERS_FILE}
203     ${elements}=    create list    sff-sf-data-plane-locator    5000    10.1.1.1
204     Check For Elements At URI    ${SERVICE_FORWARDERS_URI}service-function-forwarder/SFF-bootstrap/service-function-dictionary/SF1/sff-sf-data-plane-locator/    ${elements}
205
206 Delete Service Function Dictionary's DPL From SFF
207     [Documentation]    Delete Service Function Dictionary From SFF
208     Remove All Elements At URI    ${SERVICE_FORWARDERS_URI}
209     Add Elements To URI From File    ${SERVICE_FORWARDERS_URI}    ${SERVICE_FORWARDERS_FILE}
210     ${resp}    RequestsLibrary.Get    session    ${SERVICE_FORWARDERS_URI}service-function-forwarder/SFF-bootstrap/service-function-dictionary/SF1/sff-sf-data-plane-locator/
211     Should Be Equal As Strings    ${resp.status_code}    200
212     Remove All Elements At URI    ${SERVICE_FORWARDERS_URI}service-function-forwarder/SFF-bootstrap/service-function-dictionary/SF1/sff-sf-data-plane-locator/
213     ${resp}    RequestsLibrary.Get    session    ${SERVICE_FORWARDERS_URI}service-function-forwarder/SFF-bootstrap/service-function-dictionary/SF1/sff-sf-data-plane-locator/
214     Should Be Equal As Strings    ${resp.status_code}    404
215
216 Put DPL of Service Function Dictionary to SFF
217     [Documentation]    Put DPL of Service Function Dictionary to SFF
218     Remove All Elements At URI    ${SERVICE_FORWARDERS_URI}
219     Add Elements To URI From File    ${SERVICE_FORWARDERS_URI}    ${SERVICE_FORWARDERS_FILE}
220     Add Elements To URI From File    ${SERVICE_FORWARDERS_URI}service-function-forwarder/SFF-bootstrap/service-function-dictionary/SF1/sff-sf-data-plane-locator/    ${SFF_SFD_LOCATOR_FILE}
221     ${elements}=    create list    sff-sf-data-plane-locator    6000    10.1.1.1
222     Check For Elements At URI    ${SERVICE_FORWARDERS_URI}service-function-forwarder/SFF-bootstrap/service-function-dictionary/SF1/sff-sf-data-plane-locator/    ${elements}
223     Check For Elements At URI    ${SERVICE_FORWARDERS_URI}service-function-forwarder/SFF-bootstrap/service-function-dictionary/SF1/    ${elements}
224
225 Get Connected SFF Dictionary From SFF
226     [Documentation]    Get Connected SFF Dictionary Dictionary From SFF
227     Remove All Elements At URI    ${SERVICE_FORWARDERS_URI}
228     Add Elements To URI From File    ${SERVICE_FORWARDERS_URI}    ${SERVICE_FORWARDERS_FILE}
229     ${elements}=    create list    connected-sff-dictionary    br-int-ovs-2    sff-sff-data-plane-locator
230     Check For Elements At URI    ${SERVICE_FORWARDERS_URI}service-function-forwarder/SFF-bootstrap/connected-sff-dictionary/br-int-ovs-2    ${elements}
231     ${resp}    RequestsLibrary.Get    session    ${SERVICE_FORWARDERS_URI}service-function-forwarder/br-int-ovs-2/connected-sff-dictionary/SFF-bootstrap
232     Should Be Equal As Strings    ${resp.status_code}    200
233     Should Contain    ${resp.content}    SFF-bootstrap
234
235 Delete Connected SFF Dictionary From SFF
236     [Documentation]    Delete Connected SFF Dictionary From SFF
237     Remove All Elements At URI    ${SERVICE_FORWARDERS_URI}
238     Add Elements To URI From File    ${SERVICE_FORWARDERS_URI}    ${SERVICE_FORWARDERS_FILE}
239     ${resp}    RequestsLibrary.Get    session    ${SERVICE_FORWARDERS_URI}service-function-forwarder/SFF-bootstrap/connected-sff-dictionary/br-int-ovs-2
240     Should Be Equal As Strings    ${resp.status_code}    200
241     Remove All Elements At URI    ${SERVICE_FORWARDERS_URI}service-function-forwarder/SFF-bootstrap/connected-sff-dictionary/br-int-ovs-2
242     ${resp}    RequestsLibrary.Get    session    ${SERVICE_FORWARDERS_URI}service-function-forwarder/SFF-bootstrap/connected-sff-dictionary/br-int-ovs-2
243     Should Be Equal As Strings    ${resp.status_code}    404
244     ${resp}    RequestsLibrary.Get    session    ${SERVICE_FORWARDERS_URI}service-function-forwarder/SFF-bootstrap/
245     Should Be Equal As Strings    ${resp.status_code}    200
246     Should Not Contain    ${resp.content}    br-int-ovs-2
247
248 Put Connected SFF Dictionary to SFF
249     [Documentation]    Put Connected SFF Dictionary to SFF
250     Remove All Elements At URI    ${SERVICE_FORWARDERS_URI}
251     Add Elements To URI From File    ${SERVICE_FORWARDERS_URI}    ${SERVICE_FORWARDERS_FILE}
252     Add Elements To URI From File    ${SERVICE_FORWARDERS_URI}service-function-forwarder/SFF-bootstrap/connected-sff-dictionary/SFF100    ${SFF_CSD_SFF100_FILE}
253     ${elements}=    create list    SFF100    service-function-forwarder:open
254     Check For Elements At URI    ${SERVICE_FORWARDERS_URI}service-function-forwarder/SFF-bootstrap/connected-sff-dictionary/SFF100    ${elements}
255     Check For Elements At URI    ${SERVICE_FORWARDERS_URI}service-function-forwarder/SFF-bootstrap/    ${elements}
256
257 Get Connected SFF Dictionary's DPL From SFF
258     [Documentation]    Get Connected SFF Dictionary's DPL From SFF
259     Remove All Elements At URI    ${SERVICE_FORWARDERS_URI}
260     Add Elements To URI From File    ${SERVICE_FORWARDERS_URI}    ${SERVICE_FORWARDERS_FILE}
261     ${elements}=    create list    sff-sff-data-plane-locator    5000    192.168.1.2
262     Check For Elements At URI    ${SERVICE_FORWARDERS_URI}service-function-forwarder/SFF-bootstrap/connected-sff-dictionary/br-int-ovs-2/sff-sff-data-plane-locator/    ${elements}
263
264 Delete Connected SFF Dictionary's DPL From SFF
265     [Documentation]    Connected SFF Dictionary's DPL From SFF
266     Remove All Elements At URI    ${SERVICE_FORWARDERS_URI}
267     Add Elements To URI From File    ${SERVICE_FORWARDERS_URI}    ${SERVICE_FORWARDERS_FILE}
268     ${resp}    RequestsLibrary.Get    session    ${SERVICE_FORWARDERS_URI}service-function-forwarder/SFF-bootstrap/connected-sff-dictionary/br-int-ovs-2/sff-sff-data-plane-locator/
269     Should Be Equal As Strings    ${resp.status_code}    200
270     Remove All Elements At URI    ${SERVICE_FORWARDERS_URI}service-function-forwarder/SFF-bootstrap/connected-sff-dictionary/br-int-ovs-2/sff-sff-data-plane-locator/
271     ${resp}    RequestsLibrary.Get    session    ${SERVICE_FORWARDERS_URI}service-function-forwarder/SFF-bootstrap/connected-sff-dictionary/br-int-ovs-2/sff-sff-data-plane-locator/
272     Should Be Equal As Strings    ${resp.status_code}    404
273
274 Put DPL of Connected SFF Dictionary to SFF
275     [Documentation]    Put DPL of Connected SFF Dictionary to SFF
276     Remove All Elements At URI    ${SERVICE_FORWARDERS_URI}
277     Add Elements To URI From File    ${SERVICE_FORWARDERS_URI}    ${SERVICE_FORWARDERS_FILE}
278     Add Elements To URI From File    ${SERVICE_FORWARDERS_URI}service-function-forwarder/SFF-bootstrap/connected-sff-dictionary/br-int-ovs-2/sff-sff-data-plane-locator/    ${SFF_CSD_LOCATOR_FILE}
279     ${elements}=    create list    sff-sff-data-plane-locator    6000    10.1.1.1
280     Check For Elements At URI    ${SERVICE_FORWARDERS_URI}service-function-forwarder/SFF-bootstrap/connected-sff-dictionary/br-int-ovs-2/sff-sff-data-plane-locator/    ${elements}
281     Check For Elements At URI    ${SERVICE_FORWARDERS_URI}service-function-forwarder/SFF-bootstrap/connected-sff-dictionary/br-int-ovs-2/    ${elements}
282
283 Clean The Datastore After Tests
284     [Documentation]    Clean All Service Function Forwarders In Datastore After Tests
285     Remove All Elements At URI    ${SERVICE_FORWARDERS_URI}