7 Library RequestsLibrary
8 Variables ../variables/Variables.py
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
18 @{FLOWELMENTS} nw_src=10.0.0.1 nw_dst=10.0.0.3 actions=drop
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
28 [Documentation] Stop VTN Manager Test Suite
33 [Documentation] Start VTN Manager Test Suite
34 Create Session session http://${CONTROLLER}:${RESTPORT} auth=${AUTH} headers=${HEADERS}
37 [Documentation] Stop VTN Manager Test Suite
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
132 [Arguments] ${host1} ${host2}
133 write ${host1} ifconfig -a | grep HWaddr
134 ${sourcemacaddr} Read Until mininet>
136 ${macaddress}= Split String ${sourcemacaddr} ${SPACE}
138 ${sourcemacaddr}= Get from List ${macaddress} ${index}
139 ${sourcemacaddress}= Convert To Lowercase ${sourcemacaddr}
141 write ${host2} ifconfig -a | grep HWaddr
142 ${destmacaddr} Read Until mininet>
144 ${macaddress}= Split String ${destmacaddr} ${SPACE}
145 ${destmacaddr}= Get from List ${macaddress} ${index}
147 ${destmacaddress}= Convert To Lowercase ${destmacaddr}
150 ${result} Read Until mininet>
151 Should Contain ${result} ${sourcemacaddress}
152 Should Contain ${result} ${destmacaddress}
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
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
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
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
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
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
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
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
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
207 Verify Actions on Flow Entry
209 ${result} Read Until mininet>
210 : FOR ${flowElement} IN @{FLOWELMENTS}
211 \ should Contain ${result} ${flowElement}