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