Check service function types are present (II)
[integration/test.git] / csit / suites / sfc / SFC_Basic / 070__sfc_rendered_service_paths.robot
1 *** Settings ***
2 Documentation     Test suite for SFC Service Functions, Operates functions 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 Library           HttpLibrary.HTTP
10 Resource          ../../../variables/sfc/Variables.robot
11 Resource          ../../../libraries/SFC/SfcKeywords.robot
12 Resource          ../../../libraries/Utils.robot
13 Resource          ../../../libraries/TemplatedRequests.robot
14
15 *** Test Cases ***
16 Basic Environment Setup Tests
17     [Documentation]    Prepare Basic Test Environment
18     Add Elements To URI From File    ${SERVICE_FORWARDERS_URI}    ${SERVICE_FORWARDERS_FILE}
19     Add Elements To URI From File    ${SERVICE_NODES_URI}    ${SERVICE_NODES_FILE}
20     Add Elements To URI From File    ${SERVICE_FUNCTIONS_URI}    ${SERVICE_FUNCTIONS_FILE}
21     Wait Until Keyword Succeeds    60s    2s    Check Service Function Types    ${SERVICE_FUNCTION_NAMES}
22     Add Elements To URI From File    ${SERVICE_CHAINS_URI}    ${SERVICE_CHAINS_FILE}
23     Add Elements To URI From File    ${SERVICE_FUNCTION_PATHS_URI}    ${SERVICE_FUNCTION_PATHS_FILE}
24
25 Create and Get Rendered Service Path
26     [Documentation]    Create and Get Rendered Service Path Through RESTConf APIs
27     Post Elements To URI As JSON    ${OPERATIONS_CREATE_RSP_URI}    ${CREATE_RSP1_INPUT}
28     ${resp}    RequestsLibrary.Get Request    session    ${OPERATIONAL_RSPS_URI}
29     Should Contain    ${ALLOWED_STATUS_CODES}    ${resp.status_code}
30     ${elements}=    Create List    SFC1-100-Path-1    "parent-service-function-path":"SFC1-100"    "hop-number":0    "service-index":255    "hop-number":1
31     ...    "service-index":254    "hop-number":2    "service-index":253
32     Check For Elements At URI    ${OPERATIONAL_RSPS_URI}    ${elements}
33
34 Create Get Rendered Service Path Failure
35     [Documentation]    Create Rendered Service Path Failure Cases
36     ${resp}    RequestsLibrary.Post Request    session    ${OPERATIONS_CREATE_RSP_URI}    data=${CREATE_RSP_FAILURE_INPUT}    headers=${headers}
37     Should Be Equal As Strings    ${resp.status_code}    500
38
39 Get Rendered Service Path By Name
40     [Documentation]    Get Rendered Service Path By Name Through RESTConf APIs
41     Post Elements To URI As JSON    ${OPERATIONS_CREATE_RSP_URI}    ${CREATE_RSP1_INPUT}
42     ${resp}    RequestsLibrary.Get Request    session    ${OPERATIONAL_RSPS_URI}rendered-service-path/SFC1-100-Path-1
43     Should Contain    ${ALLOWED_STATUS_CODES}    ${resp.status_code}
44     ${elements}=    Create List    SFC1-100-Path-1    "parent-service-function-path":"SFC1-100"    "hop-number":0    "service-index":255    "hop-number":1
45     ...    "service-index":254    "hop-number":2    "service-index":253
46     Check For Elements At URI    ${OPERATIONAL_RSPS_URI}    ${elements}
47
48 Get Non Existing Rendered Service Path
49     [Documentation]    Get Non Existing Rendered Service Path Through RESTConf APIs
50     Post Elements To URI As JSON    ${OPERATIONS_CREATE_RSP_URI}    ${CREATE_RSP1_INPUT}
51     ${resp}    RequestsLibrary.Get Request    session    ${OPERATIONAL_RSPS_URI}rendered-service-path/non-existing-rsp
52     Should Be Equal As Strings    ${resp.status_code}    404
53     ${resp}    RequestsLibrary.Get Request    session    ${OPERATIONAL_RSPS_URI}
54     Should Contain    ${ALLOWED_STATUS_CODES}    ${resp.status_code}
55     Should Not Contain    ${resp.content}    non-existing-rsp
56
57 Delete one Rendered Service Path By Name
58     [Documentation]    Delete One Rendered Service Path By Name Through RESTConf APIs
59     Post Elements To URI As JSON    ${OPERATIONS_CREATE_RSP_URI}    ${CREATE_RSP1_INPUT}
60     ${resp}    RequestsLibrary.Get Request    session    ${OPERATIONAL_RSPS_URI}rendered-service-path/SFC1-100-Path-1
61     Should Contain    ${ALLOWED_STATUS_CODES}    ${resp.status_code}
62     Should Contain    ${resp.content}    SFC1-100-Path-1
63     Post Elements To URI As JSON    ${OPERATIONS_DELETE_RSP_URI}    ${DELETE_RSP1_INPUT}
64     ${resp}    RequestsLibrary.Get Request    session    ${OPERATIONAL_RSPS_URI}rendered-service-path/SFC1-100-Path-1
65     Should Be Equal As Strings    ${resp.status_code}    404
66     ${resp}    RequestsLibrary.Get Request    session    ${OPERATIONAL_RSPS_URI}
67     Should Contain    ${ALLOWED_STATUS_CODES}    ${resp.status_code}
68     Should Not Contain    ${resp.content}    SFC1-100-Path-1
69
70 Delete Non Existing Rendered Service Path By Name
71     [Documentation]    Delete One Rendered Service Path By Name Through RESTConf APIs
72     Post Elements To URI As JSON    ${OPERATIONS_CREATE_RSP_URI}    ${CREATE_RSP1_INPUT}
73     ${resp}    RequestsLibrary.Get Request    session    ${OPERATIONAL_RSPS_URI}rendered-service-path/SFC1-100-Path-1
74     Should Contain    ${ALLOWED_STATUS_CODES}    ${resp.status_code}
75     Should Contain    ${resp.content}    SFC1-100-Path-1
76     Post Elements To URI As JSON    ${OPERATIONS_DELETE_RSP_URI}    ${DELETE_RSP2_INPUT}
77     ${resp}    RequestsLibrary.Get Request    session    ${OPERATIONAL_RSPS_URI}
78     Should Contain    ${ALLOWED_STATUS_CODES}    ${resp.status_code}
79     Should Not Contain    ${resp.content}    {"rendered-service-paths":{}}
80
81 Get Rendered Service Path Hop
82     [Documentation]    Get Rendered Service Path By Name Through RESTConf APIs
83     Post Elements To URI As JSON    ${OPERATIONS_CREATE_RSP_URI}    ${CREATE_RSP1_INPUT}
84     ${resp}    RequestsLibrary.Get Request    session    ${OPERATIONAL_RSPS_URI}rendered-service-path/SFC1-100-Path-1/rendered-service-path-hop/0/
85     Should Contain    ${ALLOWED_STATUS_CODES}    ${resp.status_code}
86     ${elements}=    Create List    "hop-number":0    "service-index":255    "service-function-name":"dpi
87     Check For Elements At URI    ${OPERATIONAL_RSPS_URI}rendered-service-path/SFC1-100-Path-1/rendered-service-path-hop/0/    ${elements}
88     ${elements}=    Create List    "hop-number":1    "service-index":254    "service-function-name":"napt44
89     Check For Elements At URI    ${OPERATIONAL_RSPS_URI}rendered-service-path/SFC1-100-Path-1/rendered-service-path-hop/1/    ${elements}
90     ${elements}=    Create List    "hop-number":2    "service-index":253    "service-function-name":"firewall
91     Check For Elements At URI    ${OPERATIONAL_RSPS_URI}rendered-service-path/SFC1-100-Path-1/rendered-service-path-hop/2/    ${elements}
92     ${resp}    RequestsLibrary.Get Request    session    ${OPERATIONAL_RSPS_URI}rendered-service-path/SFC1-100-Path-1/rendered-service-path-hop/3/
93     Should Be Equal As Strings    ${resp.status_code}    404
94     Post Elements To URI As JSON    ${OPERATIONS_DELETE_RSP_URI}    ${DELETE_RSP1_INPUT}
95
96 Generate RSPs with Random Schedule Algorithm type
97     [Documentation]    Generate RSPs with Random Schedule Algorithm type Through RESTConf APIs
98     Remove All Elements At URI    ${SERVICE_SCHED_TYPES_URI}
99     Add Elements To URI From File    ${SERVICE_RANDOM_SCHED_TYPE_URI}    ${SERVICE_RANDOM_SCHED_TYPE_FILE}
100     Post Elements To URI As JSON    ${OPERATIONS_CREATE_RSP_URI}    ${CREATE_RSP1_INPUT}
101     ${elements}=    Create List    "hop-number":0    "service-index":255    "service-function-name":"dpi
102     Check For Elements At URI    ${OPERATIONAL_RSPS_URI}rendered-service-path/SFC1-100-Path-1/rendered-service-path-hop/0/    ${elements}
103     ${elements}=    Create List    "hop-number":1    "service-index":254    "service-function-name":"napt44
104     Check For Elements At URI    ${OPERATIONAL_RSPS_URI}rendered-service-path/SFC1-100-Path-1/rendered-service-path-hop/1/    ${elements}
105     ${elements}=    Create List    "hop-number":2    "service-index":253    "service-function-name":"firewall
106     Check For Elements At URI    ${OPERATIONAL_RSPS_URI}rendered-service-path/SFC1-100-Path-1/rendered-service-path-hop/2/    ${elements}
107     Post Elements To URI As JSON    ${OPERATIONS_CREATE_RSP_URI}    ${CREATE_RSP2_INPUT}
108     ${elements}=    Create List    "hop-number":0    "service-index":255    "service-function-name":"dpi
109     Check For Elements At URI    ${OPERATIONAL_RSPS_URI}rendered-service-path/SFC1-100-Path-2/rendered-service-path-hop/0/    ${elements}
110     ${elements}=    Create List    "hop-number":1    "service-index":254    "service-function-name":"napt44
111     Check For Elements At URI    ${OPERATIONAL_RSPS_URI}rendered-service-path/SFC1-100-Path-2/rendered-service-path-hop/1/    ${elements}
112     ${elements}=    Create List    "hop-number":2    "service-index":253    "service-function-name":"firewall
113     Check For Elements At URI    ${OPERATIONAL_RSPS_URI}rendered-service-path/SFC1-100-Path-2/rendered-service-path-hop/2/    ${elements}
114     Post Elements To URI As JSON    ${OPERATIONS_DELETE_RSP_URI}    ${DELETE_RSP1_INPUT}
115     Post Elements To URI As JSON    ${OPERATIONS_DELETE_RSP_URI}    ${DELETE_RSP2_INPUT}
116
117 Generate RSPs with Round Robin Schedule Algorithm type
118     [Documentation]    Generate RSPs with Round Robin Schedule Algorithm type
119     [Tags]    exclude
120     Remove All Elements At URI    ${SERVICE_SCHED_TYPES_URI}
121     Add Elements To URI From File    ${SERVICE_ROUNDROBIN_SCHED_TYPE_URI}    ${SERVICE_ROUNDROBIN_SCHED_TYPE_FILE}
122     Post Elements To URI As JSON    ${OPERATIONS_CREATE_RSP_URI}    ${CREATE_RSP1_INPUT}
123     Post Elements To URI As JSON    ${OPERATIONS_CREATE_RSP_URI}    ${CREATE_RSP2_INPUT}
124     Post Elements To URI As JSON    ${OPERATIONS_CREATE_RSP_URI}    ${CREATE_RSP3_INPUT}
125     Post Elements To URI As JSON    ${OPERATIONS_CREATE_RSP_URI}    ${CREATE_RSP4_INPUT}
126     Post Elements To URI As JSON    ${OPERATIONS_CREATE_RSP_URI}    ${CREATE_RSP5_INPUT}
127     Post Elements To URI As JSON    ${OPERATIONS_CREATE_RSP_URI}    ${CREATE_RSP6_INPUT}
128     ${path1_hop0}    Get JSON Elements From URI    ${OPERATIONAL_RSPS_URI}rendered-service-path/SFC1-100-Path-1/rendered-service-path-hop/0/
129     ${path1_hop1}    Get JSON Elements From URI    ${OPERATIONAL_RSPS_URI}rendered-service-path/SFC1-100-Path-1/rendered-service-path-hop/1/
130     ${path1_hop2}    Get JSON Elements From URI    ${OPERATIONAL_RSPS_URI}rendered-service-path/SFC1-100-Path-1/rendered-service-path-hop/2/
131     ${path2_hop0}    Get JSON Elements From URI    ${OPERATIONAL_RSPS_URI}rendered-service-path/SFC1-100-Path-2/rendered-service-path-hop/0/
132     ${path2_hop1}    Get JSON Elements From URI    ${OPERATIONAL_RSPS_URI}rendered-service-path/SFC1-100-Path-2/rendered-service-path-hop/1/
133     ${path2_hop2}    Get JSON Elements From URI    ${OPERATIONAL_RSPS_URI}rendered-service-path/SFC1-100-Path-2/rendered-service-path-hop/2/
134     ${path3_hop0}    Get JSON Elements From URI    ${OPERATIONAL_RSPS_URI}rendered-service-path/SFC1-100-Path-3/rendered-service-path-hop/0/
135     ${path3_hop1}    Get JSON Elements From URI    ${OPERATIONAL_RSPS_URI}rendered-service-path/SFC1-100-Path-3/rendered-service-path-hop/1/
136     ${path3_hop2}    Get JSON Elements From URI    ${OPERATIONAL_RSPS_URI}rendered-service-path/SFC1-100-Path-3/rendered-service-path-hop/2/
137     ${path4_hop0}    Get JSON Elements From URI    ${OPERATIONAL_RSPS_URI}rendered-service-path/SFC1-100-Path-4/rendered-service-path-hop/0/
138     ${path4_hop1}    Get JSON Elements From URI    ${OPERATIONAL_RSPS_URI}rendered-service-path/SFC1-100-Path-4/rendered-service-path-hop/1/
139     ${path4_hop2}    Get JSON Elements From URI    ${OPERATIONAL_RSPS_URI}rendered-service-path/SFC1-100-Path-4/rendered-service-path-hop/2/
140     ${path5_hop0}    Get JSON Elements From URI    ${OPERATIONAL_RSPS_URI}rendered-service-path/SFC1-100-Path-5/rendered-service-path-hop/0/
141     ${path5_hop1}    Get JSON Elements From URI    ${OPERATIONAL_RSPS_URI}rendered-service-path/SFC1-100-Path-5/rendered-service-path-hop/1/
142     ${path5_hop2}    Get JSON Elements From URI    ${OPERATIONAL_RSPS_URI}rendered-service-path/SFC1-100-Path-5/rendered-service-path-hop/2/
143     ${path6_hop0}    Get JSON Elements From URI    ${OPERATIONAL_RSPS_URI}rendered-service-path/SFC1-100-Path-6/rendered-service-path-hop/0/
144     ${path6_hop1}    Get JSON Elements From URI    ${OPERATIONAL_RSPS_URI}rendered-service-path/SFC1-100-Path-6/rendered-service-path-hop/1/
145     ${path6_hop2}    Get JSON Elements From URI    ${OPERATIONAL_RSPS_URI}rendered-service-path/SFC1-100-Path-6/rendered-service-path-hop/2/
146     Should Be Equal    ${path1_hop0}    ${path4_hop0}
147     Should Not Be Equal    ${path1_hop0}    ${path2_hop0}
148     Should Be Equal    ${path1_hop1}    ${path4_hop1}
149     Should Not Be Equal    ${path1_hop1}    ${path2_hop1}
150     Should Be Equal    ${path1_hop2}    ${path4_hop2}
151     Should Not Be Equal    ${path1_hop2}    ${path2_hop2}
152     Should Be Equal    ${path2_hop0}    ${path5_hop0}
153     Should Not Be Equal    ${path2_hop0}    ${path3_hop0}
154     Should Be Equal    ${path2_hop1}    ${path5_hop1}
155     Should Not Be Equal    ${path2_hop1}    ${path3_hop1}
156     Should Be Equal    ${path2_hop2}    ${path5_hop2}
157     Should Not Be Equal    ${path2_hop2}    ${path3_hop2}
158     Should Be Equal    ${path3_hop0}    ${path6_hop0}
159     Should Not Be Equal    ${path3_hop0}    ${path1_hop0}
160     Should Be Equal    ${path3_hop1}    ${path6_hop1}
161     Should Not Be Equal    ${path3_hop1}    ${path1_hop1}
162     Should Be Equal    ${path3_hop2}    ${path6_hop2}
163     Should Not Be Equal    ${path3_hop2}    ${path1_hop2}
164     Post Elements To URI As JSON    ${OPERATIONS_DELETE_RSP_URI}    ${DELETE_RSP1_INPUT}
165     Post Elements To URI As JSON    ${OPERATIONS_DELETE_RSP_URI}    ${DELETE_RSP2_INPUT}
166     Post Elements To URI As JSON    ${OPERATIONS_DELETE_RSP_URI}    ${DELETE_RSP3_INPUT}
167     Post Elements To URI As JSON    ${OPERATIONS_DELETE_RSP_URI}    ${DELETE_RSP4_INPUT}
168     Post Elements To URI As JSON    ${OPERATIONS_DELETE_RSP_URI}    ${DELETE_RSP5_INPUT}
169     Post Elements To URI As JSON    ${OPERATIONS_DELETE_RSP_URI}    ${DELETE_RSP6_INPUT}
170
171 Generate RSPs with Shortest Path Schedule Algorithm type
172     [Documentation]    Generate RSPs with Shortest Path Schedule Algorithm type Through RESTConf APIs
173     Remove All Elements At URI    ${SERVICE_SCHED_TYPES_URI}
174     Add Elements To URI From File    ${SERVICE_SHORTESTPATH_SCHED_TYPE_URI}    ${SERVICE_SHORTESTPATH_SCHED_TYPE_FILE}
175     Post Elements To URI As JSON    ${OPERATIONS_CREATE_RSP_URI}    ${CREATE_RSP1_INPUT}
176     ${elements}=    Create List    "hop-number":0    "service-index":255    "service-function-name":"dpi-1
177     Check For Elements At URI    ${OPERATIONAL_RSPS_URI}rendered-service-path/SFC1-100-Path-1/rendered-service-path-hop/0/    ${elements}
178     ${elements}=    Create List    "hop-number":1    "service-index":254    "service-function-name":"napt44
179     Check For Elements At URI    ${OPERATIONAL_RSPS_URI}rendered-service-path/SFC1-100-Path-1/rendered-service-path-hop/1/    ${elements}
180     ${elements}=    Create List    "hop-number":2    "service-index":253    "service-function-name":"firewall
181     Check For Elements At URI    ${OPERATIONAL_RSPS_URI}rendered-service-path/SFC1-100-Path-1/rendered-service-path-hop/2/    ${elements}
182     ${resp}    RequestsLibrary.Get Request    session    ${OPERATIONAL_RSPS_URI}rendered-service-path/SFC1-100-Path-1/rendered-service-path-hop/0/
183     Should Contain    ${ALLOWED_STATUS_CODES}    ${resp.status_code}
184     ${fwd_hop1}    Extract Value From Content    ${resp.content}    /rendered-service-path-hop/0/service-function-forwarder
185     ${resp}    RequestsLibrary.Get Request    session    ${OPERATIONAL_RSPS_URI}rendered-service-path/SFC1-100-Path-1/rendered-service-path-hop/1/
186     Should Contain    ${ALLOWED_STATUS_CODES}    ${resp.status_code}
187     ${fwd_hop2}    Extract Value From Content    ${resp.content}    /rendered-service-path-hop/0/service-function-forwarder
188     ${resp}    RequestsLibrary.Get Request    session    ${OPERATIONAL_RSPS_URI}rendered-service-path/SFC1-100-Path-1/rendered-service-path-hop/2/
189     Should Contain    ${ALLOWED_STATUS_CODES}    ${resp.status_code}
190     ${fwd_hop3}    Extract Value From Content    ${resp.content}    /rendered-service-path-hop/0/service-function-forwarder
191     Should Be Equal    ${fwd_hop1}    ${fwd_hop2}
192     Should Be Equal    ${fwd_hop2}    ${fwd_hop3}
193     Post Elements To URI As JSON    ${OPERATIONS_CREATE_RSP_URI}    ${CREATE_RSP2_INPUT}
194     ${resp}    RequestsLibrary.Get Request    session    ${OPERATIONAL_RSPS_URI}rendered-service-path/SFC1-100-Path-2/rendered-service-path-hop/0/
195     Should Contain    ${ALLOWED_STATUS_CODES}    ${resp.status_code}
196     ${fwd_hop1}    Extract Value From Content    ${resp.content}    /rendered-service-path-hop/0/service-function-forwarder
197     ${resp}    RequestsLibrary.Get Request    session    ${OPERATIONAL_RSPS_URI}rendered-service-path/SFC1-100-Path-2/rendered-service-path-hop/1/
198     Should Contain    ${ALLOWED_STATUS_CODES}    ${resp.status_code}
199     ${fwd_hop2}    Extract Value From Content    ${resp.content}    /rendered-service-path-hop/0/service-function-forwarder
200     ${resp}    RequestsLibrary.Get Request    session    ${OPERATIONAL_RSPS_URI}rendered-service-path/SFC1-100-Path-2/rendered-service-path-hop/2/
201     Should Contain    ${ALLOWED_STATUS_CODES}    ${resp.status_code}
202     ${fwd_hop3}    Extract Value From Content    ${resp.content}    /rendered-service-path-hop/0/service-function-forwarder
203     Should Be Equal    ${fwd_hop1}    ${fwd_hop2}
204     Should Be Equal    ${fwd_hop2}    ${fwd_hop3}
205     Post Elements To URI As JSON    ${OPERATIONS_DELETE_RSP_URI}    ${DELETE_RSP1_INPUT}
206     Post Elements To URI As JSON    ${OPERATIONS_DELETE_RSP_URI}    ${DELETE_RSP2_INPUT}
207
208 Clean Datastore After Tests
209     [Documentation]    Clean All Items In Datastore After Tests
210     Remove All Elements At URI    ${SERVICE_FUNCTIONS_URI}
211     Remove All Elements At URI    ${SERVICE_FORWARDERS_URI}
212     Remove All Elements At URI    ${SERVICE_NODES_URI}
213     Remove All Elements At URI    ${SERVICE_CHAINS_URI}
214     Remove All Elements At URI    ${SERVICE_SCHED_TYPES_URI}
215     Remove All Elements At URI    ${SERVICE_FUNCTION_PATHS_URI}
216
217 *** Keywords ***
218 Post Elements To URI As JSON
219     [Arguments]    ${uri}    ${data}
220     ${resp}    RequestsLibrary.Post Request    session    ${uri}    data=${data}    headers=${headers}
221     Should Contain    ${ALLOWED_STATUS_CODES}    ${resp.status_code}
222
223 Get JSON Elements From URI
224     [Arguments]    ${uri}
225     ${resp}    RequestsLibrary.Get Request    session    ${uri}
226     ${value}    To Json    ${resp.content}
227     [Return]    ${value}
228
229 Init Suite
230     [Documentation]    Create session and initialize ODL version specific variables
231     Create Session    session    http://${ODL_SYSTEM_IP}:${RESTCONFPORT}    auth=${AUTH}    headers=${HEADERS}
232     log    ${ODL_STREAM}
233     Set Suite Variable    ${VERSION_DIR}    master
234     Set Suite Variable    ${SERVICE_FUNCTIONS_URI}    /restconf/config/service-function:service-functions/
235     Set Suite Variable    ${SERVICE_FUNCTIONS_FILE}    ${CURDIR}/../../../variables/sfc/${VERSION_DIR}/service-functions.json
236     Set Suite Variable    @{SERVICE_FUNCTION_NAMES}    "napt44-103-2"    "napt44-103-1"    "dpi-102-2"    "firewall-101-2"    "napt44-104"
237     ...    "dpi-102-1"    "firewall-104"    "dpi-102-3"    "firewall-101-1"
238     Set Suite Variable    ${SERVICE_FORWARDERS_URI}    /restconf/config/service-function-forwarder:service-function-forwarders/
239     Set Suite Variable    ${SERVICE_FORWARDERS_FILE}    ${CURDIR}/../../../variables/sfc/${VERSION_DIR}/service-function-forwarders.json
240     Set Suite Variable    ${SERVICE_NODES_URI}    /restconf/config/service-node:service-nodes/
241     Set Suite Variable    ${SERVICE_NODES_FILE}    ${CURDIR}/../../../variables/sfc/${VERSION_DIR}/service-nodes.json
242     Set Suite Variable    ${SERVICE_CHAINS_URI}    /restconf/config/service-function-chain:service-function-chains/
243     Set Suite Variable    ${SERVICE_CHAINS_FILE}    ${CURDIR}/../../../variables/sfc/${VERSION_DIR}/service-function-chains.json
244     Set Suite Variable    ${SERVICE_FUNCTION_PATHS_URI}    /restconf/config/service-function-path:service-function-paths/
245     Set Suite Variable    ${SERVICE_FUNCTION_PATHS_FILE}    ${CURDIR}/../../../variables/sfc/${VERSION_DIR}/service-function-paths.json
246     Set Suite Variable    ${SERVICE_SCHED_TYPES_URI}    /restconf/config/service-function-scheduler-type:service-function-scheduler-types/
247     Set Suite Variable    ${SERVICE_SCHED_TYPE_URI_BASE}    ${SERVICE_SCHED_TYPES_URI}service-function-scheduler-type/service-function-scheduler-type:
248     Set Suite Variable    ${SERVICE_RANDOM_SCHED_TYPE_URI}    ${SERVICE_SCHED_TYPE_URI_BASE}random
249     Set Suite Variable    ${SERVICE_RANDOM_SCHED_TYPE_FILE}    ${CURDIR}/../../../variables/sfc/${VERSION_DIR}/service-random-schedule-type.json
250     Set Suite Variable    ${SERVICE_ROUNDROBIN_SCHED_TYPE_URI}    ${SERVICE_SCHED_TYPE_URI_BASE}round-robin
251     Set Suite Variable    ${SERVICE_ROUNDROBIN_SCHED_TYPE_FILE}    ${CURDIR}/../../../variables/sfc/${VERSION_DIR}/service-roundrobin-schedule-type.json
252     Set Suite Variable    ${SERVICE_LOADBALANCE_SCHED_TYPE_URI}    ${SERVICE_SCHED_TYPE_URI_BASE}load-balance
253     Set Suite Variable    ${SERVICE_LOADBALANCE_SCHED_TYPE_FILE}    ${CURDIR}/../../../variables/sfc/${VERSION_DIR}/service-loadbalance-schedule-type.json
254     Set Suite Variable    ${SERVICE_SHORTESTPATH_SCHED_TYPE_URI}    ${SERVICE_SCHED_TYPE_URI_BASE}shortest-path
255     Set Suite Variable    ${SERVICE_SHORTESTPATH_SCHED_TYPE_FILE}    ${CURDIR}/../../../variables/sfc/${VERSION_DIR}/service-shortestpath-schedule-type.json
256     Set Suite Variable    ${RENDERED_SERVICE_PATHS_URI}    /restconf/config/rendered-service-path:rendered-service-paths/
257     Set Suite Variable    ${OPERATIONAL_RSPS_URI}    /restconf/operational/rendered-service-path:rendered-service-paths/
258     Set Suite Variable    ${OPERATIONS_CREATE_RSP_URI}    /restconf/operations/rendered-service-path:create-rendered-path/
259     Set Suite Variable    ${OPERATIONS_DELETE_RSP_URI}    /restconf/operations/rendered-service-path:delete-rendered-path
260     Set Suite Variable    ${CREATE_RSP1_INPUT}    {"input":{"parent-service-function-path":"SFC1-100","name":"SFC1-100-Path-1"}}
261     Set Suite Variable    ${CREATE_RSP2_INPUT}    {"input":{"parent-service-function-path":"SFC1-100","name":"SFC1-100-Path-2"}}
262     Set Suite Variable    ${CREATE_RSP3_INPUT}    {"input":{"parent-service-function-path":"SFC1-100","name":"SFC1-100-Path-3"}}
263     Set Suite Variable    ${CREATE_RSP4_INPUT}    {"input":{"parent-service-function-path":"SFC1-100","name":"SFC1-100-Path-4"}}
264     Set Suite Variable    ${CREATE_RSP5_INPUT}    {"input":{"parent-service-function-path":"SFC1-100","name":"SFC1-100-Path-5"}}
265     Set Suite Variable    ${CREATE_RSP6_INPUT}    {"input":{"parent-service-function-path":"SFC1-100","name":"SFC1-100-Path-6"}}
266     Set Suite Variable    ${CREATE_RSP_FAILURE_INPUT}    {"input":{"parent-service-function-path":"SFC1-empty","name":"SFC1-empty-Path-1"}}
267     Set Suite Variable    ${DELETE_RSP1_INPUT}    {"input":{"name":"SFC1-100-Path-1"}}
268     Set Suite Variable    ${DELETE_RSP2_INPUT}    {"input":{"name":"SFC1-100-Path-2"}}
269     Set Suite Variable    ${DELETE_RSP3_INPUT}    {"input":{"name":"SFC1-100-Path-3"}}
270     Set Suite Variable    ${DELETE_RSP4_INPUT}    {"input":{"name":"SFC1-100-Path-4"}}
271     Set Suite Variable    ${DELETE_RSP5_INPUT}    {"input":{"name":"SFC1-100-Path-5"}}
272     Set Suite Variable    ${DELETE_RSP6_INPUT}    {"input":{"name":"SFC1-100-Path-6"}}