Step 1: Move vm scripts to the right place
[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       Create Session    session    http://${CONTROLLER}:${RESTCONFPORT}    auth=${AUTH}    headers=${HEADERS}
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 *** Variables ***
13 ${SERVICE_CHAINS_URI}    /restconf/config/service-function-chain:service-function-chains/
14 ${SERVICE_CHAINS_FILE}    ../../../variables/sfc/service-function-chains.json
15 ${SERVICE_CHAIN100_URI}    /restconf/config/service-function-chain:service-function-chains/service-function-chain/SFC100
16 ${SERVICE_CHAIN100_FILE}    ../../../variables/sfc/sfc_chain_100.json
17 ${SERVICE_CHAIN100_SFIDS_URI}    /restconf/config/service-function-chain:service-function-chains/service-function-chain/SFC100/sfc-service-function/ids-abstract100
18 ${SERVICE_CHAIN100_SFIDS_FILE}    ../../../variables/sfc/sfc_chain_100_sfids.json
19
20 *** Test Cases ***
21 Put Service Function Chains
22     [Documentation]    Add Service Function Chains from JSON file
23     Add Elements To URI From File    ${SERVICE_CHAINS_URI}    ${SERVICE_CHAINS_FILE}
24     ${body}    OperatingSystem.Get File    ${SERVICE_CHAINS_FILE}
25     ${jsonbody}    To Json    ${body}
26     ${chains}    Get From Dictionary    ${jsonbody}    service-function-chains
27     ${resp}    RequestsLibrary.Get    session    ${SERVICE_CHAINS_URI}
28     Should Be Equal As Strings    ${resp.status_code}    200
29     ${result}    To JSON    ${resp.content}
30     ${chain}    Get From Dictionary    ${result}    service-function-chains
31     Lists Should be Equal    ${chain}    ${chains}
32
33 Delete All Service Function Chains
34     [Documentation]    Delete all Service Function Chains
35     ${resp}    RequestsLibrary.Get    session    ${SERVICE_CHAINS_URI}
36     Should Be Equal As Strings    ${resp.status_code}    200
37     Remove All Elements At URI    ${SERVICE_CHAINS_URI}
38     ${resp}    RequestsLibrary.Get    session    ${SERVICE_CHAINS_URI}
39     Should Be Equal As Strings    ${resp.status_code}    404
40
41 Get one Service Function Chain
42     [Documentation]    Get one Service Function Chain
43     Remove All Elements At URI    ${SERVICE_CHAINS_URI}
44     Add Elements To URI From File    ${SERVICE_CHAINS_URI}    ${SERVICE_CHAINS_FILE}
45     ${elements}=    Create List    SFC1    dpi-abstract1    napt44-abstract1    firewall-abstract1
46     Check For Elements At URI    ${SERVICE_CHAINS_URI}service-function-chain/SFC1    ${elements}
47
48 Get A Non-existing Service Function Chain
49     [Documentation]    Get A Non-existing Service Function Chain
50     Remove All Elements At URI    ${SERVICE_CHAINS_URI}
51     Add Elements To URI From File    ${SERVICE_CHAINS_URI}    ${SERVICE_CHAINS_FILE}
52     ${resp}    RequestsLibrary.Get    session    ${SERVICE_CHAINS_URI}service-function-chain/non-existing-sfc
53     Should Be Equal As Strings    ${resp.status_code}    404
54
55 Delete A Service Function Chain
56     [Documentation]    Delete A Service Function Chain
57     Remove All Elements At URI    ${SERVICE_CHAINS_URI}
58     Add Elements To URI From File    ${SERVICE_CHAINS_URI}    ${SERVICE_CHAINS_FILE}
59     ${resp}    RequestsLibrary.Get    session    ${SERVICE_CHAINS_URI}service-function-chain/SFC1
60     Should Be Equal As Strings    ${resp.status_code}    200
61     Remove All Elements At URI    ${SERVICE_CHAINS_URI}service-function-chain/SFC1
62     ${elements}=    Create List    SFC1    dpi-abstract1    napt44-abstract1    firewall-abstract1
63     Check For Elements Not At URI    ${SERVICE_CHAINS_URI}    ${elements}
64
65 Delete A Non-existing Service Function Chain
66     [Documentation]    Delete A Non existing Service Function Chain
67     Remove All Elements At URI    ${SERVICE_CHAINS_URI}
68     Add Elements To URI From File    ${SERVICE_CHAINS_URI}    ${SERVICE_CHAINS_FILE}
69     ${body}    OperatingSystem.Get File    ${SERVICE_CHAINS_FILE}
70     ${jsonbody}    To Json    ${body}
71     ${chains}    Get From Dictionary    ${jsonbody}    service-function-chains
72     Remove All Elements At URI    ${SERVICE_CHAINS_URI}service-function-chain/non-existing-sfc
73     ${resp}    RequestsLibrary.Get    session    ${SERVICE_CHAINS_URI}
74     Should Be Equal As Strings    ${resp.status_code}    200
75     ${result}    To JSON    ${resp.content}
76     ${chain}    Get From Dictionary    ${result}    service-function-chains
77     Lists Should be Equal    ${chain}    ${chains}
78
79 Put one Service Function Chain
80     [Documentation]    Put one Service Function Chain
81     Remove All Elements At URI    ${SERVICE_CHAINS_URI}
82     Add Elements To URI From File    ${SERVICE_CHAIN100_URI}    ${SERVICE_CHAIN100_FILE}
83     ${elements}=    Create List    SFC100    dpi-abstract100    napt44-abstract100    firewall-abstract100
84     Check For Elements At URI    ${SERVICE_CHAIN100_URI}    ${elements}
85     Check For Elements At URI    ${SERVICE_CHAINS_URI}    ${elements}
86
87 Get one Service Function From Chain
88     [Documentation]    Get one Service Function From Chain
89     Remove All Elements At URI    ${SERVICE_CHAINS_URI}
90     Add Elements To URI From File    ${SERVICE_CHAINS_URI}    ${SERVICE_CHAINS_FILE}
91     ${elements}=    Create List    dpi-abstract1    "order":0    service-function-type:dpi
92     Check For Elements At URI    ${SERVICE_CHAINS_URI}service-function-chain/SFC1/sfc-service-function/dpi-abstract1    ${elements}
93
94 Get A Non-existing Service Function From Chain
95     [Documentation]    Get A Non-existing Service Function From Chain
96     Remove All Elements At URI    ${SERVICE_CHAINS_URI}
97     Add Elements To URI From File    ${SERVICE_CHAINS_URI}    ${SERVICE_CHAINS_FILE}
98     ${resp}    RequestsLibrary.Get    session    ${SERVICE_CHAINS_URI}service-function-chain/SFC1/sfc-service-function/non-existing-sft
99     Should Be Equal As Strings    ${resp.status_code}    404
100
101 Delete A Service Function From Chain
102     [Documentation]    Delete A Service Function From Chain
103     Remove All Elements At URI    ${SERVICE_CHAINS_URI}
104     Add Elements To URI From File    ${SERVICE_CHAINS_URI}    ${SERVICE_CHAINS_FILE}
105     Remove All Elements At URI    ${SERVICE_CHAINS_URI}service-function-chain/SFC1/sfc-service-function/dpi-abstract1
106     ${resp}    RequestsLibrary.Get    session    ${SERVICE_CHAINS_URI}
107     Should Be Equal As Strings    ${resp.status_code}    200
108     Should Contain    ${resp.content}    SFC1
109     ${elements}=    Create List    dpi-abstract1    service-function-type:dpi
110     Check For Elements Not At URI    ${SERVICE_CHAINS_URI}service-function-chain/SFC1/    ${elements}
111
112 Delete A Non-existing Service Function From Chain
113     [Documentation]    Delete A Non existing Service Function From Chain
114     Remove All Elements At URI    ${SERVICE_CHAINS_URI}
115     Add Elements To URI From File    ${SERVICE_CHAINS_URI}    ${SERVICE_CHAINS_FILE}
116     Remove All Elements At URI    ${SERVICE_CHAINS_URI}service-function-chain/SFC1/sfc-service-function/non-existing-sft
117     ${elements}=    Create List    dpi-abstract1    napt44-abstract1    firewall-abstract1
118     Check For Elements At URI    ${SERVICE_CHAINS_URI}service-function-chain/SFC1    ${elements}
119     Check For Elements At URI    ${SERVICE_CHAINS_URI}    ${elements}
120
121 Put one Service Function into Chain
122     [Documentation]    Put one Service Function Chain
123     Remove All Elements At URI    ${SERVICE_CHAINS_URI}
124     Add Elements To URI From File    ${SERVICE_CHAINS_URI}    ${SERVICE_CHAINS_FILE}
125     Add Elements To URI From File    ${SERVICE_CHAIN100_SFIDS_URI}    ${SERVICE_CHAIN100_SFIDS_FILE}
126     ${elements}=    Create List    ids-abstract100    "order":3    service-function-type:ids
127     Check For Elements At URI    ${SERVICE_CHAIN100_SFIDS_URI}    ${elements}
128     Check For Elements At URI    ${SERVICE_CHAIN100_URI}    ${elements}
129     Check For Elements At URI    ${SERVICE_CHAINS_URI}    ${elements}
130
131 Clean All Service Function Chains After Tests
132     [Documentation]    Delete all Service Function Chains From Datastore After Tests
133     Remove All Elements At URI    ${SERVICE_CHAINS_URI}