Fix SFC tests for service chains, sched types and paths
[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 Library           SSHLibrary
6 Library           Collections
7 Library           OperatingSystem
8 Library           RequestsLibrary
9 Variables         ../../../variables/Variables.py
10 Resource          ../../../libraries/Utils.robot
11
12 *** Test Cases ***
13 Put Service Function Chains
14     [Documentation]    Add Service Function Chains from JSON file
15     Add Elements To URI From File    ${SERVICE_CHAINS_URI}    ${SERVICE_CHAINS_FILE}
16     ${body}    OperatingSystem.Get File    ${SERVICE_CHAINS_FILE}
17     ${jsonbody}    To Json    ${body}
18     ${chains}    Get From Dictionary    ${jsonbody}    service-function-chains
19     ${resp}    RequestsLibrary.Get Request    session    ${SERVICE_CHAINS_URI}
20     Should Be Equal As Strings    ${resp.status_code}    200
21     ${result}    To JSON    ${resp.content}
22     ${chain}    Get From Dictionary    ${result}    service-function-chains
23     Lists Should be Equal    ${chain}    ${chains}
24
25 Delete All Service Function Chains
26     [Documentation]    Delete all Service Function Chains
27     ${resp}    RequestsLibrary.Get Request    session    ${SERVICE_CHAINS_URI}
28     Should Be Equal As Strings    ${resp.status_code}    200
29     Remove All Elements At URI    ${SERVICE_CHAINS_URI}
30     ${resp}    RequestsLibrary.Get Request    session    ${SERVICE_CHAINS_URI}
31     Should Be Equal As Strings    ${resp.status_code}    404
32
33 Get one Service Function Chain
34     [Documentation]    Get one Service Function Chain
35     Remove All Elements At URI    ${SERVICE_CHAINS_URI}
36     Add Elements To URI From File    ${SERVICE_CHAINS_URI}    ${SERVICE_CHAINS_FILE}
37     ${elements}=    Create List    SFC1    dpi-abstract1    napt44-abstract1    firewall-abstract1
38     Check For Elements At URI    ${SERVICE_CHAINS_URI}service-function-chain/SFC1    ${elements}
39
40 Get A Non-existing Service Function Chain
41     [Documentation]    Get A Non-existing Service Function Chain
42     Remove All Elements At URI    ${SERVICE_CHAINS_URI}
43     Add Elements To URI From File    ${SERVICE_CHAINS_URI}    ${SERVICE_CHAINS_FILE}
44     ${resp}    RequestsLibrary.Get Request    session    ${SERVICE_CHAINS_URI}service-function-chain/non-existing-sfc
45     Should Be Equal As Strings    ${resp.status_code}    404
46
47 Delete A Service Function Chain
48     [Documentation]    Delete A Service Function Chain
49     Remove All Elements At URI    ${SERVICE_CHAINS_URI}
50     Add Elements To URI From File    ${SERVICE_CHAINS_URI}    ${SERVICE_CHAINS_FILE}
51     ${resp}    RequestsLibrary.Get Request    session    ${SERVICE_CHAINS_URI}service-function-chain/SFC1
52     Should Be Equal As Strings    ${resp.status_code}    200
53     Remove All Elements At URI    ${SERVICE_CHAINS_URI}service-function-chain/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     Remove All Elements At URI    ${SERVICE_CHAINS_URI}
60     Add Elements To URI From File    ${SERVICE_CHAINS_URI}    ${SERVICE_CHAINS_FILE}
61     ${body}    OperatingSystem.Get File    ${SERVICE_CHAINS_FILE}
62     ${jsonbody}    To Json    ${body}
63     ${chains}    Get From Dictionary    ${jsonbody}    service-function-chains
64     Remove All Elements At URI    ${SERVICE_CHAINS_URI}service-function-chain/non-existing-sfc
65     ${resp}    RequestsLibrary.Get Request    session    ${SERVICE_CHAINS_URI}
66     Should Be Equal As Strings    ${resp.status_code}    200
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     Remove All Elements At URI    ${SERVICE_CHAINS_URI}
74     Add Elements To URI From File    ${SERVICE_CHAIN100_URI}    ${SERVICE_CHAIN100_FILE}
75     ${elements}=    Create List    SFC100    dpi-abstract100    napt44-abstract100    firewall-abstract100
76     Check For Elements At URI    ${SERVICE_CHAIN100_URI}    ${elements}
77     Check For Elements At URI    ${SERVICE_CHAINS_URI}    ${elements}
78
79 Get one Service Function From Chain
80     [Documentation]    Get one Service Function From Chain
81     Remove All Elements At URI    ${SERVICE_CHAINS_URI}
82     Add Elements To URI From File    ${SERVICE_CHAINS_URI}    ${SERVICE_CHAINS_FILE}
83     ${elements}=    Create List    dpi-abstract1    "order":0    "type":"dpi"
84     Check For Elements At URI    ${SERVICE_CHAINS_URI}service-function-chain/SFC1/sfc-service-function/dpi-abstract1    ${elements}
85
86 Get A Non-existing Service Function From Chain
87     [Documentation]    Get A Non-existing Service Function From Chain
88     Remove All Elements At URI    ${SERVICE_CHAINS_URI}
89     Add Elements To URI From File    ${SERVICE_CHAINS_URI}    ${SERVICE_CHAINS_FILE}
90     ${resp}    RequestsLibrary.Get Request    session    ${SERVICE_CHAINS_URI}service-function-chain/SFC1/sfc-service-function/non-existing-sft
91     Should Be Equal As Strings    ${resp.status_code}    404
92
93 Delete A Service Function From Chain
94     [Documentation]    Delete A Service Function From Chain
95     Remove All Elements At URI    ${SERVICE_CHAINS_URI}
96     Add Elements To URI From File    ${SERVICE_CHAINS_URI}    ${SERVICE_CHAINS_FILE}
97     Remove All Elements At URI    ${SERVICE_CHAINS_URI}service-function-chain/SFC1/sfc-service-function/dpi-abstract1
98     ${resp}    RequestsLibrary.Get Request    session    ${SERVICE_CHAINS_URI}
99     Should Be Equal As Strings    ${resp.status_code}    200
100     Should Contain    ${resp.content}    SFC1
101     ${elements}=    Create List    dpi-abstract1    service-function-type:dpi
102     Check For Elements Not At URI    ${SERVICE_CHAINS_URI}service-function-chain/SFC1/    ${elements}
103
104 Delete A Non-existing Service Function From Chain
105     [Documentation]    Delete A Non existing Service Function From Chain
106     Remove All Elements At URI    ${SERVICE_CHAINS_URI}
107     Add Elements To URI From File    ${SERVICE_CHAINS_URI}    ${SERVICE_CHAINS_FILE}
108     Remove All Elements At URI    ${SERVICE_CHAINS_URI}service-function-chain/SFC1/sfc-service-function/non-existing-sft
109     ${elements}=    Create List    dpi-abstract1    napt44-abstract1    firewall-abstract1
110     Check For Elements At URI    ${SERVICE_CHAINS_URI}service-function-chain/SFC1    ${elements}
111     Check For Elements At URI    ${SERVICE_CHAINS_URI}    ${elements}
112
113 Put one Service Function into Chain
114     [Documentation]    Put one Service Function Chain
115     Remove All Elements At URI    ${SERVICE_CHAINS_URI}
116     Add Elements To URI From File    ${SERVICE_CHAINS_URI}    ${SERVICE_CHAINS_FILE}
117     Add Elements To URI From File    ${SERVICE_CHAIN100_SFIDS_URI}    ${SERVICE_CHAIN100_SFIDS_FILE}
118     ${elements}=    Create List    ids-abstract100    "order":3    "type":"ids"
119     Check For Elements At URI    ${SERVICE_CHAIN100_SFIDS_URI}    ${elements}
120     Check For Elements At URI    ${SERVICE_CHAIN100_URI}    ${elements}
121     Check For Elements At URI    ${SERVICE_CHAINS_URI}    ${elements}
122
123 Clean All Service Function Chains After Tests
124     [Documentation]    Delete all Service Function Chains From Datastore After Tests
125     Remove All Elements At URI    ${SERVICE_CHAINS_URI}
126
127 *** keywords ***
128 Init Suite
129     [Documentation]    Initialize session and ODL version specific variables
130     Create Session    session    http://${ODL_SYSTEM_IP}:${RESTCONFPORT}    auth=${AUTH}    headers=${HEADERS}
131     log    ${ODL_STREAM}
132     Run Keyword If    '${ODL_STREAM}' == 'stable-lithium'    Set Suite Variable    ${VERSION_DIR}    lithium
133     ...    ELSE    Set Suite Variable    ${VERSION_DIR}    master
134     Set Suite Variable    ${SERVICE_CHAINS_URI}    /restconf/config/service-function-chain:service-function-chains/
135     Set Suite Variable    ${SERVICE_CHAINS_FILE}    ${CURDIR}/../../../variables/sfc/${VERSION_DIR}/service-function-chains.json
136     Set Suite Variable    ${SERVICE_CHAIN100_URI}    /restconf/config/service-function-chain:service-function-chains/service-function-chain/SFC100
137     Set Suite Variable    ${SERVICE_CHAIN100_FILE}    ${CURDIR}/../../../variables/sfc/${VERSION_DIR}/sfc_chain_100.json
138     Set Suite Variable    ${SERVICE_CHAIN100_SFIDS_URI}    /restconf/config/service-function-chain:service-function-chains/service-function-chain/SFC100/sfc-service-function/ids-abstract100
139     Set Suite Variable    ${SERVICE_CHAIN100_SFIDS_FILE}    ${CURDIR}/../../../variables/sfc/${VERSION_DIR}/sfc_chain_100_sfids.json
140
141