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