2 Documentation Test suite for OpenFlow meter
3 Suite Setup Create Session session http://${ODL_SYSTEM_IP}:${RESTCONFPORT} auth=${AUTH} headers=${HEADERS_XML}
4 Suite Teardown Delete All Sessions
7 Library OperatingSystem
8 Library RequestsLibrary
9 Library ../../../libraries/Common.py
10 Variables ../../../variables/Variables.py
11 Resource ../../../libraries/Utils.robot
14 ${REST_CONTEXT} /restconf/operational/opendaylight-inventory:nodes/
15 ${REST_CONTEXT_CF} /restconf/config/opendaylight-inventory:nodes/node/openflow:1
16 ${REST_CONTEXT_OP} /restconf/operational/opendaylight-inventory:nodes/node/openflow:1
17 ${METER} ${CURDIR}/../../../variables/xmls/m4.xml
18 ${FLOW} ${CURDIR}/../../../variables/xmls/f51.xml
24 [Documentation] Get the inventory to make sure openflow:1 comes up
25 ${node_list}= Create List openflow:1
26 Wait Until Keyword Succeeds 3s 1s Check For Elements At URI ${REST_CONTEXT_OP} ${node_list}
29 [Documentation] Add a meter using RESTCONF
31 ${body} OperatingSystem.Get File ${METER}
32 Set Suite Variable ${body}
33 ${resp} RequestsLibrary.Put Request session ${REST_CONTEXT_CF}/meter/1 headers=${HEADERS_XML} data=${body}
35 Should Be Equal As Strings ${resp.status_code} 200
37 Verify after adding meter config
38 [Documentation] Get the meter stat in config
39 ${resp} RequestsLibrary.Get Request session ${REST_CONTEXT_CF}/meter/1
41 Should Be Equal As Strings ${resp.status_code} 200
42 Should Contain ${resp.content} ${METER_NAME}
44 Verify after adding meter operational
45 [Documentation] Get the meter stat in operational
46 ${elements}= Create List meter-statistics meter-kbps flow-count packet-in-count byte-in-count
47 ... meter-band-stats meter-band-headers
48 Wait Until Keyword Succeeds 6s 2s Check For Elements At URI ${REST_CONTEXT_OP}/meter/1 ${elements}
50 Add a flow that includes a meter
51 [Documentation] Push a flow through RESTCONF
53 ${body} OperatingSystem.Get File ${FLOW}
54 Set Suite Variable ${body}
55 ${resp} RequestsLibrary.Put Request session ${REST_CONTEXT_CF}/table/0/flow/2 headers=${HEADERS_XML} data=${body}
57 Should Be Equal As Strings ${resp.status_code} 200
59 Verify after adding flow config
60 [Documentation] Verify the flow
62 ${resp} RequestsLibrary.Get Request session ${REST_CONTEXT_CF}/table/0/flow/2
64 Should Be Equal As Strings ${resp.status_code} 200
65 Should Contain ${resp.content} ${FLOW_NAME}
67 Verify after adding flow operational
68 [Documentation] Verify the flow
69 ${elements}= Create List meter-id flow
70 Wait Until Keyword Succeeds 6s 2s Check For Elements At URI ${REST_CONTEXT_OP}/table/0/flow/2 ${elements}
73 [Documentation] Remove the flow
74 ${resp} RequestsLibrary.Delete Request session ${REST_CONTEXT_CF}/table/0/flow/2
75 Should Be Equal As Strings ${resp.status_code} 200
77 Verify after deleting flow
78 [Documentation] Verify the flow removal
80 ${resp} RequestsLibrary.Get Request session ${REST_CONTEXT_CF}/table/0/flow/2
81 Should Not Contain ${resp.content} ${FLOW_NAME}
84 [Documentation] Remove the meter
86 ${resp} RequestsLibrary.Delete Request session ${REST_CONTEXT_CF}/meter/1
88 Should Be Equal As Strings ${resp.status_code} 200
90 Verify after deleting meter
91 [Documentation] Verify the flow removal
93 ${resp} RequestsLibrary.Get Request session ${REST_CONTEXT_CF}/meter/1
94 Should Not Contain ${resp.content} ${METER_NAME}