Update Robot Framework format - step 14
[integration/test.git] / csit / suites / sfc / SFC_Basic / 040__sfc_service_chains.robot
1 *** Settings ***
2 Documentation       Test suite for SFC Service Function Chains, Operates Chains from Restconf APIs.
3
4 Library             SSHLibrary
5 Library             Collections
6 Library             OperatingSystem
7 Library             RequestsLibrary
8 Resource            ../../../variables/sfc/Variables.robot
9 Resource            ../../../libraries/Utils.robot
10 Resource            ../../../libraries/TemplatedRequests.robot
11
12 Suite Setup         Init Suite
13 Suite Teardown      Delete All Sessions
14 Test Setup          Remove All Elements If Exist    ${SERVICE_CHAINS_URI}
15
16
17 *** Test Cases ***
18 Put Service Function Chains
19     [Documentation]    Add Service Function Chains from JSON file
20     Add Elements To URI From File    ${SERVICE_CHAINS_URI}    ${SERVICE_CHAINS_FILE}
21     ${body}    OperatingSystem.Get File    ${SERVICE_CHAINS_FILE}
22     ${jsonbody}    To Json    ${body}
23     ${chains}    Get From Dictionary    ${jsonbody}    service-function-chains
24     ${resp}    RequestsLibrary.Get Request    session    ${SERVICE_CHAINS_URI}
25     Should Contain    ${ALLOWED_STATUS_CODES}    ${resp.status_code}
26     ${result}    To JSON    ${resp.content}
27     ${chain}    Get From Dictionary    ${result}    service-function-chains
28     Lists Should be Equal    ${chain}    ${chains}
29
30 Delete All Service Function Chains
31     [Documentation]    Delete all Service Function Chains
32     Add Elements To URI From File    ${SERVICE_CHAINS_URI}    ${SERVICE_CHAINS_FILE}
33     ${resp}    RequestsLibrary.Get Request    session    ${SERVICE_CHAINS_URI}
34     Should Contain    ${ALLOWED_STATUS_CODES}    ${resp.status_code}
35     Remove All Elements At URI    ${SERVICE_CHAINS_URI}
36     ${resp}    RequestsLibrary.Get Request    session    ${SERVICE_CHAINS_URI}
37     Should Be Equal As Strings    ${resp.status_code}    404
38
39 Get one Service Function Chain
40     [Documentation]    Get one Service Function Chain
41     Add Elements To URI From File    ${SERVICE_CHAINS_URI}    ${SERVICE_CHAINS_FILE}
42     ${elements}    Create List    SFC1    dpi-abstract1    napt44-abstract1    firewall-abstract1
43     Check For Elements At URI    ${SERVICE_CHAIN_URI}/SFC1    ${elements}
44
45 Get A Non-existing Service Function Chain
46     [Documentation]    Get A Non-existing Service Function Chain
47     Add Elements To URI From File    ${SERVICE_CHAINS_URI}    ${SERVICE_CHAINS_FILE}
48     ${resp}    RequestsLibrary.Get Request    session    ${SERVICE_CHAIN_URI}/non-existing-sfc
49     Should Be Equal As Strings    ${resp.status_code}    404
50
51 Delete A Service Function Chain
52     [Documentation]    Delete A Service Function Chain
53     Add Elements To URI From File    ${SERVICE_CHAINS_URI}    ${SERVICE_CHAINS_FILE}
54     ${resp}    RequestsLibrary.Get Request    session    ${SERVICE_CHAIN_URI}/SFC1
55     Should Contain    ${ALLOWED_STATUS_CODES}    ${resp.status_code}
56     Remove All Elements At URI    ${SERVICE_CHAIN_URI}/SFC1
57     ${elements}    Create List    SFC1    dpi-abstract1    napt44-abstract1    firewall-abstract1
58     Check For Elements Not At URI    ${SERVICE_CHAINS_URI}    ${elements}
59
60 Delete A Non-existing Service Function Chain
61     [Documentation]    Delete A Non existing Service Function Chain
62     Add Elements To URI From File    ${SERVICE_CHAINS_URI}    ${SERVICE_CHAINS_FILE}
63     ${body}    OperatingSystem.Get File    ${SERVICE_CHAINS_FILE}
64     ${jsonbody}    To Json    ${body}
65     ${chains}    Get From Dictionary    ${jsonbody}    service-function-chains
66     ${resp}    RequestsLibrary.Delete Request    session    ${SERVICE_CHAIN_URI}/non-existing-sfc
67     Should Be Equal As Strings    ${resp.status_code}    404
68     ${resp}    RequestsLibrary.Get Request    session    ${SERVICE_CHAINS_URI}
69     Should Contain    ${ALLOWED_STATUS_CODES}    ${resp.status_code}
70     ${result}    To JSON    ${resp.content}
71     ${chain}    Get From Dictionary    ${result}    service-function-chains
72     Lists Should be Equal    ${chain}    ${chains}
73
74 Put one Service Function Chain
75     [Documentation]    Put one Service Function Chain
76     Add Elements To URI From File    ${SERVICE_CHAIN100_URI}    ${SERVICE_CHAIN100_FILE}
77     ${elements}    Create List    SFC100    dpi-abstract100    napt44-abstract100    firewall-abstract100
78     Check For Elements At URI    ${SERVICE_CHAIN100_URI}    ${elements}
79     Check For Elements At URI    ${SERVICE_CHAINS_URI}    ${elements}
80
81 Get one Service Function From Chain
82     [Documentation]    Get one Service Function From Chain
83     Add Elements To URI From File    ${SERVICE_CHAINS_URI}    ${SERVICE_CHAINS_FILE}
84     ${elements}    Create List    dpi-abstract1    "order":0    "type":"dpi"
85     Check For Elements At URI    ${SERVICE_CHAIN_URI}/SFC1/sfc-service-function/dpi-abstract1    ${elements}
86
87 Get A Non-existing Service Function From Chain
88     [Documentation]    Get A Non-existing Service Function From Chain
89     Add Elements To URI From File    ${SERVICE_CHAINS_URI}    ${SERVICE_CHAINS_FILE}
90     ${resp}    RequestsLibrary.Get Request
91     ...    session
92     ...    ${SERVICE_CHAIN_URI}/SFC1/sfc-service-function/non-existing-sft
93     Should Be Equal As Strings    ${resp.status_code}    404
94
95 Delete A Service Function From Chain
96     [Documentation]    Delete A Service Function From Chain
97     Add Elements To URI From File    ${SERVICE_CHAINS_URI}    ${SERVICE_CHAINS_FILE}
98     Remove All Elements At URI    ${SERVICE_CHAIN_URI}/SFC1/sfc-service-function/dpi-abstract1
99     ${resp}    RequestsLibrary.Get Request    session    ${SERVICE_CHAINS_URI}
100     Should Contain    ${ALLOWED_STATUS_CODES}    ${resp.status_code}
101     Should Contain    ${resp.text}    SFC1
102     ${elements}    Create List    dpi-abstract1    service-function-type:dpi
103     Check For Elements Not At URI    ${SERVICE_CHAIN_URI}/SFC1    ${elements}
104
105 Delete A Non-existing Service Function From Chain
106     [Documentation]    Delete A Non existing Service Function From Chain
107     Add Elements To URI From File    ${SERVICE_CHAINS_URI}    ${SERVICE_CHAINS_FILE}
108     ${resp}    RequestsLibrary.Delete Request
109     ...    session
110     ...    ${SERVICE_CHAIN_URI}/SFC1/sfc-service-function/non-existing-sft
111     Should Be Equal As Strings    ${resp.status_code}    404
112     ${elements}    Create List    dpi-abstract1    napt44-abstract1    firewall-abstract1
113     Check For Elements At URI    ${SERVICE_CHAIN_URI}/SFC1    ${elements}
114     Check For Elements At URI    ${SERVICE_CHAINS_URI}    ${elements}
115
116 Put one Service Function into Chain
117     [Documentation]    Put one Service Function Chain
118     Add Elements To URI From File    ${SERVICE_CHAINS_URI}    ${SERVICE_CHAINS_FILE}
119     Add Elements To URI From File    ${SERVICE_CHAIN100_SFIDS_URI}    ${SERVICE_CHAIN100_SFIDS_FILE}
120     ${elements}    Create List    ids-abstract100    "order":3    "type":"ids"
121     Check For Elements At URI    ${SERVICE_CHAIN100_SFIDS_URI}    ${elements}
122     Check For Elements At URI    ${SERVICE_CHAIN100_URI}    ${elements}
123     Check For Elements At URI    ${SERVICE_CHAINS_URI}    ${elements}
124
125
126 *** Keywords ***
127 Init Suite
128     [Documentation]    Initialize session and ODL version specific variables
129     Create Session    session    http://${ODL_SYSTEM_IP}:${RESTCONFPORT}    auth=${AUTH}    headers=${HEADERS}
130     log    ${ODL_STREAM}
131     Set Suite Variable    ${VERSION_DIR}    master
132     Set Suite Variable    ${TEST_DIR}    ${CURDIR}/../../../variables/sfc/${VERSION_DIR}
133     Set Suite Variable    ${SERVICE_CHAINS_FILE}    ${TEST_DIR}/service-function-chains.json
134     Set Suite Variable    ${SERVICE_CHAIN100_URI}    ${SERVICE_CHAIN_URI}/SFC100
135     Set Suite Variable    ${SERVICE_CHAIN100_FILE}    ${TEST_DIR}/sfc_chain_100.json
136     Set Suite Variable    ${SERVICE_CHAIN100_SFIDS_URI}    ${SERVICE_CHAIN100_URI}/sfc-service-function/ids-abstract100
137     Set Suite Variable    ${SERVICE_CHAIN100_SFIDS_FILE}    ${TEST_DIR}/sfc_chain_100_sfids.json