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