Step 2: Move test folder to root
[integration/test.git] / csit / libraries / VtnMaKeywords.robot
1 *** Settings ***
2 Library           SSHLibrary
3 Library           String
4 Library           DateTime
5 Library           Collections
6 Library           json
7 Library           RequestsLibrary
8 Variables         ../variables/Variables.py
9 Resource          ./Utils.robot
10
11 *** Variables ***
12 ${REST_CONTEXT_VTNS}    controller/nb/v2/vtn/default/vtns
13 ${REST_CONTEXT}    controller/nb/v2/vtn/default
14 ${VERSION_VTN}          controller/nb/v2/vtn/version
15 ${VTN_INVENTORY}        restconf/operational/vtn-inventory:vtn-nodes
16 ${DUMPFLOWS}    dpctl dump-flows -O OpenFlow13
17 ${index}    7
18 @{FLOWELMENTS}    nw_src=10.0.0.1    nw_dst=10.0.0.3    actions=drop
19
20 *** Keywords ***
21 Start SuiteVtnMa
22     [Documentation]  Start VTN Manager Init Test Suite
23     Create Session    session    http://${CONTROLLER}:${RESTPORT}    auth=${AUTH}    headers=${HEADERS}
24     BuiltIn.Wait_Until_Keyword_Succeeds    30    3     Fetch vtn list
25     Start Suite
26
27 Stop SuiteVtnMa
28     [Documentation]  Stop VTN Manager Test Suite
29     Delete All Sessions
30     Stop Suite
31
32 Start SuiteVtnMaTest
33     [Documentation]  Start VTN Manager Test Suite
34     Create Session    session    http://${CONTROLLER}:${RESTPORT}    auth=${AUTH}    headers=${HEADERS}
35
36 Stop SuiteVtnMaTest
37     [Documentation]  Stop VTN Manager Test Suite
38     Delete All Sessions
39
40 Fetch vtn list
41     [Documentation]    Check if VTN Manager is up.
42     ${resp}=    RequestsLibrary.Get    session    ${REST_CONTEXT_VTNS}
43     Should Be Equal As Strings    ${resp.status_code}    200
44
45 Fetch vtn switch inventory
46     [Arguments]    ${sw_name}
47     [Documentation]    Check if Switch is detected.
48     ${resp}=    RequestsLibrary.Get    session    ${VTN_INVENTORY}/vtn-inventory:vtn-node/${sw_name}
49     Should Be Equal As Strings    ${resp.status_code}    200
50
51 Add a vtn
52     [Arguments]    ${vtn_name}    ${vtn_data}
53     [Documentation]    Create a vtn with specified parameters.
54     ${resp}=    RequestsLibrary.Post    session    ${REST_CONTEXT_VTNS}/${vtn_name}    data=${vtn_data}
55     Should Be Equal As Strings    ${resp.status_code}    201
56
57 Delete a vtn
58     [Arguments]    ${vtn_name}
59     [Documentation]    Create a vtn with specified parameters.
60     ${resp}=    RequestsLibrary.Delete    session    ${REST_CONTEXT_VTNS}/${vtn_name}
61     Should Be Equal As Strings    ${resp.status_code}    200
62
63 Add a vBridge
64     [Arguments]    ${vtn_name}    ${vBridge_name}    ${vBridge_data}
65     [Documentation]    Create a vBridge in a VTN
66     ${resp}=    RequestsLibrary.Post    session    ${REST_CONTEXT_VTNS}/${vtn_name}/vbridges/${vBridge_name}    data=${vBridge_data}
67     Should Be Equal As Strings    ${resp.status_code}    201
68
69 Add a interface
70     [Arguments]    ${vtn_name}    ${vBridge_name}    ${interface_name}    ${interface_data}
71     [Documentation]    Create a interface into a vBridge of a VTN
72     ${resp}=    RequestsLibrary.Post    session    ${REST_CONTEXT_VTNS}/${vtn_name}/vbridges/${vBridge_name}/interfaces/${interface_name}    data=${interface_data}
73     Should Be Equal As Strings    ${resp.status_code}    201
74
75 Add a portmap
76     [Arguments]    ${vtn_name}    ${vBridge_name}    ${interface_name}    ${portmap_data}
77     [Documentation]    Create a portmap for a interface of a vbridge
78     ${json_data}=   json.dumps    ${portmap_data}
79     ${resp}=    RequestsLibrary.Put    session    ${REST_CONTEXT_VTNS}/${vtn_name}/vbridges/${vBridge_name}/interfaces/${interface_name}/portmap    data=${json_data}    headers=${HEADERS}
80     Should Be Equal As Strings    ${resp.status_code}    200
81
82 Add a macmap
83     [Arguments]    ${vtn_name}    ${vBridge_name}    ${macmap_data}
84     [Documentation]    Create a macmap for a vbridge
85     ${json_data}=   json.dumps    ${macmap_data}
86     ${resp}=    RequestsLibrary.Post    session    ${REST_CONTEXT_VTNS}/${vtn_name}/vbridges/${vBridge_name}/macmap/allow    data=${macmap_data}    headers=${HEADERS}
87     Should Be Equal As Strings    ${resp.status_code}    201
88
89 Mininet Ping Should Succeed
90     [Arguments]     ${host1}     ${host2}
91     Write    ${host1} ping -c 10 ${host2}
92     ${result}    Read Until    mininet>
93     Should Contain    ${result}    64 bytes
94
95 Mininet Ping Should Not Succeed
96     [Arguments]    ${host1}    ${host2}
97     Write    ${host1} ping -c 10 ${host2}
98     ${result}    Read Until    mininet>
99     Should Not Contain    ${result}    64 bytes
100
101 Delete a interface
102     [Arguments]    ${vtn_name}    ${vBridge_name}    ${interface_name}
103     [Documentation]    Delete a interface with specified parameters.
104     ${resp}=    RequestsLibrary.Delete    session    ${REST_CONTEXT_VTNS}/${vtn_name}/vbridges/${vBridge_name}/interfaces/${interface_name}
105     Should Be Equal As Strings    ${resp.status_code}    200
106
107
108 Get flow
109     [Arguments]    ${vtn_name}
110     [Documentation]    Get data flow.
111     ${resp}=    RequestsLibrary.Get   session    ${REST_CONTEXT_VTNS}/${vtn_name}/flows/detail
112     Should Be Equal As Strings    ${resp.status_code}    200
113
114 Remove a portmap
115     [Arguments]    ${vtn_name}    ${vBridge_name}    ${interface_name}    ${portmap_data}
116     [Documentation]    Remove a portmap for a interface of a vbridge
117     ${json_data}=   json.dumps    ${portmap_data}
118     ${resp}=    RequestsLibrary.Delete    session    ${REST_CONTEXT_VTNS}/${vtn_name}/vbridges/${vBridge_name}/interfaces/${interface_name}/portmap    data=${json_data}    headers=${HEADERS}
119     Should Be Equal As Strings    ${resp.status_code}    200
120
121 Verify FlowMacAddress
122     [Arguments]    ${host1}    ${host2}
123     ${booleanValue}=    Run Keyword And Return Status    Verify macaddress    ${host1}    ${host2}
124     Should Be Equal As Strings    ${booleanValue}    True
125
126 Verify RemovedFlowMacAddress
127     [Arguments]    ${host1}    ${host2}
128     ${booleanValue}=    Run Keyword And Return Status    Verify macaddress    ${host1}    ${host2}
129     Should Not Be Equal As Strings    ${booleanValue}    True
130
131 Verify macaddress
132     [Arguments]    ${host1}    ${host2}
133     write    ${host1} ifconfig -a | grep HWaddr
134     ${sourcemacaddr}    Read Until    mininet>
135
136     ${macaddress}=    Split String    ${sourcemacaddr}    ${SPACE}
137
138     ${sourcemacaddr}=    Get from List    ${macaddress}    ${index}
139     ${sourcemacaddress}=    Convert To Lowercase    ${sourcemacaddr}
140
141     write    ${host2} ifconfig -a | grep HWaddr
142     ${destmacaddr}    Read Until    mininet>
143
144     ${macaddress}=    Split String    ${destmacaddr}    ${SPACE}
145     ${destmacaddr}=    Get from List    ${macaddress}    ${index}
146
147     ${destmacaddress}=    Convert To Lowercase    ${destmacaddr}
148
149     write    ${DUMPFLOWS}
150     ${result}    Read Until    mininet>
151     Should Contain    ${result}    ${sourcemacaddress}
152     Should Contain    ${result}    ${destmacaddress}
153
154 Add a flowcondition
155     [Arguments]    ${cond_name}    ${flowcond_data}
156     [Documentation]    Create a flowcondition for a interface of a vbridge
157     ${json_data}=   json.dumps    ${flowcond_data}
158     ${resp}=    RequestsLibrary.Put    session    ${REST_CONTEXT}/flowconditions/${cond_name}    data=${json_data}    headers=${HEADERS}
159     Should Be Equal As Strings    ${resp.status_code}    201
160
161 Delete a flowcondition
162     [Arguments]    ${cond_name}
163     [Documentation]    Delete a flowcondition for a interface of a vbridge
164     ${resp}=    RequestsLibrary.Delete    session    ${REST_CONTEXT}/flowconditions/${cond_name}
165     Should Be Equal As Strings    ${resp.status_code}    200
166
167 Add a flowfilter
168     [Arguments]    ${vtn_name}    ${vBridge_name}    ${interface_name}    ${flowfilter_data}    ${ff_index}
169     [Documentation]    Create a flowfilter for a vtn
170     ${resp}=    RequestsLibrary.Put    session    ${REST_CONTEXT_VTNS}/${vtn_name}/vbridges/${vBridge_name}/interfaces/${interface_name}/flowfilters/IN/${ff_index}    data=${flowfilter_data}    headers=${HEADERS}
171     Should Be Equal As Strings    ${resp.status_code}    201
172
173 Add a flowfilter_vtn
174     [Arguments]    ${vtn_name}    ${flowfilter_data}    ${ff_index}
175     [Documentation]    Create a flowfilter for a vtn
176     ${resp}=    RequestsLibrary.Put    session    ${REST_CONTEXT_VTNS}/${vtn_name}/flowfilters/${ff_index}    data=${flowfilter_data}    headers=${HEADERS}
177     Should Be Equal As Strings    ${resp.status_code}    201
178
179 Add a flowfilter_vbr
180     [Arguments]    ${vtn_name}    ${vBridge_name}    ${flowfilter_data}    ${ff_index}
181     [Documentation]    Create a flowfilter for a vbr
182     ${resp}=    RequestsLibrary.Put    session    ${REST_CONTEXT_VTNS}/${vtn_name}/vbridges/${vBridge_name}/flowfilters/IN/${ff_index}    data=${flowfilter_data}    headers=${HEADERS}
183     Should Be Equal As Strings    ${resp.status_code}    201
184
185 Update a flowfilter
186     [Arguments]    ${vtn_name}    ${vBridge_name}    ${interface_name}    ${flowfilter_data}    ${ff_index}
187     [Documentation]    Create a flowfilter for a vtn
188     ${resp}=    RequestsLibrary.Put    session    ${REST_CONTEXT_VTNS}/${vtn_name}/vbridges/${vBridge_name}/interfaces/${interface_name}/flowfilters/IN/${ff_index}    data=${flowfilter_data}    headers=${HEADERS}
189     Should Be Equal As Strings    ${resp.status_code}    200
190
191 Add a flowfilter for drop
192     [Arguments]    ${vtn_name}    ${vBridge_name}    ${interface_name}    ${flowfilter_data}    ${ff_index}
193     [Documentation]    Create a flowfilter for a vtn
194     ${resp}=    RequestsLibrary.Put    session    ${REST_CONTEXT_VTNS}/${vtn_name}/vbridges/${vBridge_name}/interfaces/${interface_name}/flowfilters/IN/${ff_index}    data=${flowfilter_data}    headers=${HEADERS}
195     Should Be Equal As Strings    ${resp.status_code}    200
196
197 Verify Flow Entry for Inet Flowfilter
198     [Documentation]    Verify switch flow entry using flowfilter for a vtn
199     ${booleanValue}=    Run Keyword And Return Status    Verify Actions on Flow Entry
200     Should Not Be Equal As Strings    ${booleanValue}    True
201
202 Verify Removed Flow Entry for Inet Drop Flowfilter
203     [Documentation]    Verify removed switch flow entry using flowfilter drop for a vtn
204     ${booleanValue}=    Run Keyword And Return Status    Verify Actions on Flow Entry
205     Should Be Equal As Strings    ${booleanValue}    True
206
207 Verify Actions on Flow Entry
208     write    ${DUMPFLOWS}
209     ${result}    Read Until    mininet>
210     : FOR    ${flowElement}    IN    @{FLOWELMENTS}
211     \    should Contain    ${result}    ${flowElement}