2 Documentation Library containing Keywords used for SXP testing
4 Library RequestsLibrary
8 Resource KarafKeywords.robot
9 Variables ../variables/Variables.py
12 ${REST_CONTEXT} /restconf/operations/sxp-controller
16 [Arguments] ${version} ${mode} ${ip} ${port} ${node}=127.0.0.1 ${password}=none
17 ... ${session}=session
18 [Documentation] Add connection via RPC to node
19 ${DATA} Add Connection Xml ${version} ${mode} ${ip} ${port} ${node}
21 ${resp} Post Request ${session} ${REST_CONTEXT}:add-connection data=${DATA} headers=${HEADERS_XML}
23 Should be Equal As Strings ${resp.status_code} 200
26 [Arguments] ${node}=127.0.0.1 ${session}=session
27 [Documentation] Gets all connections via RPC from node
28 ${DATA} Get Connections From Node Xml ${node}
29 ${resp} Post Request ${session} ${REST_CONTEXT}:get-connections data=${DATA} headers=${HEADERS_XML}
30 Should be Equal As Strings ${resp.status_code} 200
31 [Return] ${resp.content}
34 [Arguments] ${ip} ${port} ${node}=127.0.0.1 ${session}=session
35 [Documentation] Delete connection via RPC from node
36 ${DATA} Delete Connections Xml ${ip} ${port} ${node}
37 ${resp} Post Request ${session} ${REST_CONTEXT}:delete-connection data=${DATA} headers=${HEADERS_XML}
38 Should be Equal As Strings ${resp.status_code} 200
41 [Arguments] ${node}=127.0.0.1 ${session}=session
42 [Documentation] Delete all connections via RPC from node
43 ${resp} Get Connections ${node} ${session}
44 @{connections} Parse Connections ${resp}
45 : FOR ${connection} IN @{connections}
46 \ delete connections ${connection['peer-address']} ${connection['tcp-port']} ${node} ${session}
49 [Arguments] ${version} ${mode} ${ip} ${port}=64999 ${node}=127.0.0.1 ${state}=on
50 [Documentation] Verify that connection is ON
51 ${resp} Get Connections ${node}
52 Should Contain Connection ${resp} ${ip} ${port} ${mode} ${version} ${state}
55 [Arguments] ${sgt} ${prefix} ${node}=127.0.0.1 ${session}=session
56 [Documentation] Add binding via RPC to Master DB of node
57 ${DATA} Add Entry Xml ${sgt} ${prefix} ${node}
58 ${resp} Post Request ${session} ${REST_CONTEXT}:add-entry data=${DATA} headers=${HEADERS_XML}
60 Should be Equal As Strings ${resp.status_code} 200
63 [Arguments] ${node}=127.0.0.1 ${session}=session
64 [Documentation] Gets all binding via RPC from Master DB of node
65 ${DATA} Get Bindings From Node Xml ${node} all
66 ${resp} Run Keyword If '${ODL_STREAM}' == 'boron' Post Request ${session} ${REST_CONTEXT}:get-node-bindings data=${DATA}
67 ... headers=${HEADERS_XML}
68 ... ELSE Get Request ${session} /restconf/operational/network-topology:network-topology/topology/sxp/node/${node}/master-database/ headers=${HEADERS_XML}
69 Should be Equal As Strings ${resp.status_code} 200
70 [Return] ${resp.content}
73 [Arguments] ${node}=127.0.0.1 ${session}=session
74 [Documentation] Delete all bindings via RPC from Master DB of node
75 ${resp} Get Bindings ${node} ${session}
76 @{bindings} Run Keyword If '${ODL_STREAM}' == 'boron' Parse Bindings ${resp}
77 ... ELSE Parse Prefix Groups ${resp} local
78 : FOR ${binding} IN @{bindings}
79 \ Run Keyword If '${ODL_STREAM}' == 'boron' Clean Binding ${binding['sgt']} ${binding['ip-prefix']} ${node}
81 \ ... ELSE Clean Binding ${binding} ${binding['binding']} ${node}
85 [Arguments] ${sgt} ${prefixes} ${node} ${session}
86 [Documentation] Used for nester FOR loop
87 : FOR ${prefix} IN @{prefixes}
88 \ Run Keyword If '${ODL_STREAM}' == 'boron' Delete Binding ${sgt} ${prefix} ${node}
90 \ ... ELSE Delete Binding ${sgt['sgt']} ${prefix['ip-prefix']} ${node}
94 [Arguments] ${sgtOld} ${prefixOld} ${sgtNew} ${prefixNew} ${node}=127.0.0.1 ${session}=session
95 [Documentation] Updates value of binding via RPC in Master DB of node
96 ${DATA} Update Binding Xml ${sgtOld} ${prefixOld} ${sgtNew} ${prefixNew} ${node}
97 ${resp} Post Request ${session} ${REST_CONTEXT}:update-entry data=${DATA} headers=${HEADERS_XML}
98 Should be Equal As Strings ${resp.status_code} 200
101 [Arguments] ${sgt} ${prefix} ${node}=127.0.0.1 ${session}=session
102 [Documentation] Delete binding via RPC from Master DB of node
103 ${DATA} Delete Binding Xml ${sgt} ${prefix} ${node}
104 ${resp} Post Request ${session} ${REST_CONTEXT}:delete-entry data=${DATA} headers=${HEADERS_XML}
105 Should be Equal As Strings ${resp.status_code} 200
108 [Arguments] ${name} ${peers}= ${node}=127.0.0.1 ${session}=session
109 [Documentation] Adds new PeerGroup via RPC to Node
110 ${DATA} Add Peer Group Xml ${name} ${peers} ${node}
112 ${resp} Post Request ${session} ${REST_CONTEXT}:add-peer-group data=${DATA} headers=${HEADERS_XML}
113 Should be Equal As Strings ${resp.status_code} 200
116 [Arguments] ${name} ${node}=127.0.0.1 ${session}=session
117 [Documentation] Delete PeerGroup via RPC from Node
118 ${DATA} Delete Peer Group Xml ${name} ${node}
119 ${resp} Post Request ${session} ${REST_CONTEXT}:delete-peer-group data=${DATA} headers=${HEADERS_XML}
120 Should be Equal As Strings ${resp.status_code} 200
123 [Arguments] ${node}=127.0.0.1 ${session}=session
124 [Documentation] Gets all PeerGroups via RPC from node
125 ${DATA} Get Peer Groups From Node Xml ${node}
126 ${resp} Post Request ${session} ${REST_CONTEXT}:get-peer-groups data=${DATA} headers=${HEADERS_XML}
127 Should be Equal As Strings ${resp.status_code} 200
128 [Return] ${resp.content}
131 [Arguments] ${node}=127.0.0.1 ${session}=session
132 [Documentation] Delete all PeerGroups via RPC from node
133 ${resp} Get Peer Groups ${node} ${session}
134 @{prefixes} Parse Peer Groups ${resp}
135 : FOR ${group} IN @{prefixes}
136 \ Delete Peer Group ${group['name']} ${node} ${session}
139 [Arguments] ${name} ${type} ${entries} ${node}=127.0.0.1 ${session}=session
140 [Documentation] Add Filter via RPC from Node
141 ${DATA} Add Filter Xml ${name} ${type} ${entries} ${node}
142 ${resp} Post Request ${session} ${REST_CONTEXT}:add-filter data=${DATA} headers=${HEADERS_XML}
143 Should be Equal As Strings ${resp.status_code} 200
146 [Arguments] ${name} ${type} ${node}=127.0.0.1 ${session}=session
147 [Documentation] Delete Filter via RPC from Node
148 ${DATA} Delete Filter Xml ${name} ${type} ${node}
149 ${resp} Post Request ${session} ${REST_CONTEXT}:delete-filter data=${DATA} headers=${HEADERS_XML}
150 Should be Equal As Strings ${resp.status_code} 200
152 Should Contain Binding
153 [Arguments] ${resp} ${sgt} ${prefix} ${db_source}=any
154 [Documentation] Tests if data contains specified binding
155 ${out} Run Keyword If '${ODL_STREAM}' == 'boron' Find Binding ${resp} ${sgt} ${prefix}
156 ... ELSE Find Binding Legacy ${resp} ${sgt} ${prefix} ${db_source}
158 Should Be True ${out} Doesn't have ${sgt} ${prefix}
160 Should Not Contain Binding
161 [Arguments] ${resp} ${sgt} ${prefix} ${db_source}=any
162 [Documentation] Tests if data doesn't contains specified binding
163 ${out} Run Keyword If '${ODL_STREAM}' == 'boron' Find Binding ${resp} ${sgt} ${prefix}
164 ... ELSE Find Binding Legacy ${resp} ${sgt} ${prefix} ${db_source}
166 Should Not Be True ${out} Should't have ${sgt} ${prefix}
168 Should Contain Connection
169 [Arguments] ${resp} ${ip} ${port} ${mode} ${version} ${state}=none
170 [Documentation] Test if data contains specified connection
171 ${out} Find Connection ${resp} ${version} ${mode} ${ip} ${port}
173 Should Be True ${out} Doesn't have ${ip}:${port} ${mode} ${version}
175 Should Not Contain Connection
176 [Arguments] ${resp} ${ip} ${port} ${mode} ${version} ${state}=none
177 [Documentation] Test if data doesn't contains specified connection
178 ${out} Find Connection ${resp} ${version} ${mode} ${ip} ${port}
180 Should Not Be True ${out} Shouldn't have ${ip}:${port} ${mode} ${version}
182 Setup Topology Complex
183 [Arguments] ${version}=version4 ${PASSWORD}=none
184 : FOR ${node} IN RANGE 2 6
185 \ Add Connection ${version} both 127.0.0.1 64999 127.0.0.${node}
187 \ Add Connection ${version} both 127.0.0.${node} 64999 127.0.0.1
189 \ Wait Until Keyword Succeeds 15 1 Verify Connection ${version} both
190 \ ... 127.0.0.${node}
191 \ Add Binding ${node}0 10.10.10.${node}0/32 127.0.0.${node}
192 \ Add Binding ${node}0 10.10.${node}0.0/24 127.0.0.${node}
193 \ Add Binding ${node}0 10.${node}0.0.0/16 127.0.0.${node}
194 \ Add Binding ${node}0 ${node}0.0.0.0/8 127.0.0.${node}
195 Add Binding 10 10.10.10.10/32 127.0.0.1
196 Add Binding 10 10.10.10.0/24 127.0.0.1
197 Add Binding 10 10.10.0.0/16 127.0.0.1
198 Add Binding 10 10.0.0.0/8 127.0.0.1
200 Setup SXP Environment
201 [Documentation] Create session to Controller
202 Verify Feature Is Installed odl-sxp-all
203 Create Session session url=http://${ODL_SYSTEM_IP}:${RESTCONFPORT} auth=${AUTH} headers=${HEADERS_XML}
204 Wait Until Keyword Succeeds 15 1 Get Bindings
206 Clean SXP Environment
207 [Documentation] Destroy created sessions