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