2 Documentation Test suite for OpenFlow meter
6 Library OperatingSystem
7 Library RequestsLibrary
8 Library ../../../libraries/Common.py
9 Variables ../../../variables/Variables.py
10 Resource ../../../variables/openflowplugin/Variables.robot
11 Resource ../../../libraries/Utils.robot
13 Suite Setup Create Session session http://${ODL_SYSTEM_IP}:${RESTCONFPORT} auth=${AUTH} headers=${HEADERS_XML}
14 Suite Teardown Delete All Sessions
18 ${REST_CONTEXT} ${RFC8040_NODES_API}/node=openflow%3A1
19 ${METER} ${CURDIR}/../../../variables/xmls/m4.xml
20 ${FLOW} ${CURDIR}/../../../variables/xmls/f51.xml
27 [Documentation] Get the inventory to make sure openflow:1 comes up
28 ${node_list} Create List openflow:1
29 Wait Until Keyword Succeeds
32 ... Check For Elements At URI
33 ... ${REST_CONTEXT}?${RFC8040_OPERATIONAL_CONTENT}
37 [Documentation] Add a meter using RESTCONF
39 ${body} OperatingSystem.Get File ${METER}
40 Set Suite Variable ${body}
41 ${resp} RequestsLibrary.Put Request
43 ... ${REST_CONTEXT}/meter=1
44 ... headers=${HEADERS_XML}
47 BuiltIn.Should_Match "${resp.status_code}" "20?"
49 Verify after adding meter config
50 [Documentation] Get the meter stat in config
51 ${resp} RequestsLibrary.Get Request session ${REST_CONTEXT}/meter=1?${RFC8040_CONFIG_CONTENT}
53 Should Be Equal As Strings ${resp.status_code} 200
54 Should Contain ${resp.content} ${METER_NAME}
56 Verify after adding meter operational
57 [Documentation] Get the meter stat in operational
58 ${elements} Create List meter-statistics meter-kbps flow-count packet-in-count byte-in-count
59 ... meter-band-stats meter-band-headers
60 Wait Until Keyword Succeeds
63 ... Check For Elements At URI
64 ... ${REST_CONTEXT}/meter=1?${RFC8040_OPERATIONAL_CONTENT}
67 Add a flow that includes a meter
68 [Documentation] Push a flow through RESTCONF
70 ${body} OperatingSystem.Get File ${FLOW}
71 Set Suite Variable ${body}
72 ${resp} RequestsLibrary.Put Request
74 ... ${REST_CONTEXT}/flow-node-inventory:table=0/flow=2
75 ... headers=${HEADERS_XML}
78 BuiltIn.Should_Match "${resp.status_code}" "20?"
80 Verify after adding flow config
81 [Documentation] Verify the flow
83 ${resp} RequestsLibrary.Get Request
85 ... ${REST_CONTEXT}/flow-node-inventory:table=0/flow=2?${RFC8040_CONFIG_CONTENT}
87 Should Be Equal As Strings ${resp.status_code} 200
88 Should Contain ${resp.content} ${FLOW_NAME}
90 Verify after adding flow operational
91 [Documentation] Verify the flow
92 ${elements} Create List meter-id flow
93 Wait Until Keyword Succeeds
96 ... Check For Elements At URI
97 ... ${REST_CONTEXT}/flow-node-inventory:table=0/flow=2?${RFC8040_OPERATIONAL_CONTENT}
101 [Documentation] Remove the flow
102 ${resp} RequestsLibrary.Delete Request session ${REST_CONTEXT}/flow-node-inventory:table=0/flow=2
103 Should Be Equal As Strings ${resp.status_code} 200
105 Verify after deleting flow
106 [Documentation] Verify the flow removal
108 ${resp} RequestsLibrary.Get Request
110 ... ${REST_CONTEXT}/flow-node-inventory:table=0/flow=2?${RFC8040_CONFIG_CONTENT}
111 Should Not Contain ${resp.content} ${FLOW_NAME}
114 [Documentation] Remove the meter
116 ${resp} RequestsLibrary.Delete Request session ${REST_CONTEXT}/meter=1
118 Should Be Equal As Strings ${resp.status_code} 200
120 Verify after deleting meter
121 [Documentation] Verify the flow removal
123 ${resp} RequestsLibrary.Get Request session ${REST_CONTEXT}/meter=1?${RFC8040_CONFIG_CONTENT}
124 Should Not Contain ${resp.content} ${METER_NAME}