Add tests for symmetric paths using bidirectional flag in SF type
[integration/test.git] / csit / suites / sfc / SFC_Basic / 130__sfc_symmetric_RSP.robot
1 *** Settings ***
2 Documentation     Test suite for symmetric RSP using bidirectional field of SF type.
3 Suite Setup       Init Suite
4 Suite Teardown    End Suite
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/Utils.robot
12 Resource          ../../../libraries/TemplatedRequests.robot
13
14 *** Variables ***
15 ${VERSION_DIR}    master
16 ${SUITE_DIR}      ${CURDIR}/../../../variables/sfc/${VERSION_DIR}/symmetricRSP
17 ${SERVICE_NODES_FILE}    ${SUITE_DIR}/service_nodes.json
18 ${SERVICE_FUNCTION_TYPES_FILE}    ${SUITE_DIR}/service_function_types.json
19 ${SERVICE_FUNCTIONS_FILE}    ${SUITE_DIR}/service_functions.json
20 ${SERVICE_FORWARDERS_FILE}    ${SUITE_DIR}/service_function_forwarders.json
21 ${SERVICE_CHAINS_FILE}    ${SUITE_DIR}/service_function_chains.json
22 ${SERVICE_FUNCTION_PATHS_FILE}    ${SUITE_DIR}/service_function_paths.json
23 ${CREATE_RSP1_INPUT}    {"input":{"parent-service-function-path":"SFP1","name":"RSP1"}}
24 ${CREATE_RSP2_INPUT}    {"input":{"parent-service-function-path":"SFP2","name":"RSP2"}}
25 ${CREATE_RSP3_INPUT}    {"input":{"parent-service-function-path":"SFP3","name":"RSP3"}}
26 ${DELETE_RSP1_INPUT}    {"input":{"name":"RSP1"}}
27 ${DELETE_RSP2_INPUT}    {"input":{"name":"RSP2"}}
28 ${DELETE_RSP3_INPUT}    {"input":{"name":"RSP3"}}
29
30 *** Test Cases ***
31 Create symmetric RSP with bidirectional flag set true in one SF type
32     Post Elements To URI    ${OPERATIONS_CREATE_RSP_URI}    ${CREATE_RSP1_INPUT}
33     ${resp}    RequestsLibrary.Get Request    session    ${OPERATIONAL_RSPS_URI}
34     Should Be Equal As Strings    ${resp.status_code}    200
35     ${elements}=    Create List    RSP1    RSP1-Reverse
36     Check For Elements At URI    ${OPERATIONAL_RSPS_URI}    ${elements}
37     [Teardown]    Post Elements To URI    ${OPERATIONS_DELETE_RSP_URI}    ${DELETE_RSP1_INPUT}
38
39 Create non-symmetric RSP with bidirectional flag set false or not set in all SFs
40     Post Elements To URI    ${OPERATIONS_CREATE_RSP_URI}    ${CREATE_RSP2_INPUT}
41     ${resp}    RequestsLibrary.Get Request    session    ${OPERATIONAL_RSPS_URI}
42     Should Be Equal As Strings    ${resp.status_code}    200
43     Log    ${resp.content}
44     Should Contain    ${resp.content}    RSP2
45     Should Not Contain    ${resp.content}    RSP2-Reverse
46     [Teardown]    Post Elements To URI    ${OPERATIONS_DELETE_RSP_URI}    ${DELETE_RSP2_INPUT}
47
48 Create non-symmetric RSP overriding bidirectional flag with SFP symmetric flag
49     Post Elements To URI    ${OPERATIONS_CREATE_RSP_URI}    ${CREATE_RSP3_INPUT}
50     # Note that SFP3 uses SFC1, which contains a dpi-bidirectional, but it's
51     # overriden with symmetric flag in SFP set to false
52     ${resp}    RequestsLibrary.Get Request    session    ${OPERATIONAL_RSPS_URI}
53     Should Be Equal As Strings    ${resp.status_code}    200
54     Log    ${resp.content}
55     Should Contain    ${resp.content}    RSP3
56     Should Not Contain    ${resp.content}    RSP3-Reverse
57     [Teardown]    Post Elements To URI    ${OPERATIONS_DELETE_RSP_URI}    ${DELETE_RSP3_INPUT}
58
59 *** Keywords ***
60 Init Suite
61     [Documentation]    Create session and initialize ODL version specific variables
62     Create Session    session    http://${ODL_SYSTEM_IP}:${RESTCONFPORT}    auth=${AUTH}    headers=${HEADERS}
63     log    ${ODL_STREAM}
64     Basic Environment Setup
65
66 Basic Environment Setup
67     [Documentation]    Provision all elements except RSPs
68     Clean Datastore
69     Add Elements To URI From File    ${SERVICE_FORWARDERS_URI}    ${SERVICE_FORWARDERS_FILE}
70     Add Elements To URI From File    ${SERVICE_NODES_URI}    ${SERVICE_NODES_FILE}
71     Add Elements To URI From File    ${SERVICE_FUNCTION_TYPES_URI}    ${SERVICE_FUNCTION_TYPES_FILE}
72     Add Elements To URI From File    ${SERVICE_FUNCTIONS_URI}    ${SERVICE_FUNCTIONS_FILE}
73     Add Elements To URI From File    ${SERVICE_CHAINS_URI}    ${SERVICE_CHAINS_FILE}
74     Add Elements To URI From File    ${SERVICE_FUNCTION_PATHS_URI}    ${SERVICE_FUNCTION_PATHS_FILE}
75
76 End Suite
77     Clean Datastore
78     Delete All Sessions
79
80 Clean Datastore
81     [Documentation]    Remove All Elements
82     Remove All Elements If Exist    ${SERVICE_FUNCTIONS_URI}
83     Remove All Elements If Exist    ${SERVICE_FORWARDERS_URI}
84     Remove All Elements If Exist    ${SERVICE_NODES_URI}
85     Remove All Elements If Exist    ${SERVICE_CHAINS_URI}
86     Remove All Elements If Exist    ${SERVICE_FUNCTION_PATHS_URI}