Migrate Get Requests invocations(libraries)
[integration/test.git] / csit / suites / openflowplugin / Groups_Meters_OF13 / 010__openflow_meter.robot
1 *** Settings ***
2 Documentation       Test suite for OpenFlow meter
3
4 Library             SSHLibrary
5 Library             Collections
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
12
13 Suite Setup         Create Session    session    http://${ODL_SYSTEM_IP}:${RESTCONFPORT}    auth=${AUTH}    headers=${HEADERS_XML}
14 Suite Teardown      Delete All Sessions
15
16
17 *** Variables ***
18 ${REST_CONTEXT}     ${RFC8040_NODES_API}/node=openflow%3A1
19 ${METER}            ${CURDIR}/../../../variables/xmls/m4.xml
20 ${FLOW}             ${CURDIR}/../../../variables/xmls/f51.xml
21 ${METER_NAME}       Foo
22 ${FLOW_NAME}        forward
23
24
25 *** Test Cases ***
26 Get list of nodes
27     [Documentation]    Get the inventory to make sure openflow:1 comes up
28     ${node_list}    Create List    openflow:1
29     Wait Until Keyword Succeeds
30     ...    3s
31     ...    1s
32     ...    Check For Elements At URI
33     ...    ${REST_CONTEXT}?${RFC8040_OPERATIONAL_CONTENT}
34     ...    ${node_list}
35
36 Add a meter
37     [Documentation]    Add a meter using RESTCONF
38     [Tags]    push
39     ${body}    OperatingSystem.Get File    ${METER}
40     Set Suite Variable    ${body}
41     ${resp}    RequestsLibrary.PUT On Session
42     ...    session
43     ...    url=${REST_CONTEXT}/meter=1
44     ...    headers=${HEADERS_XML}
45     ...    data=${body}
46     Log    ${resp.content}
47
48 Verify after adding meter config
49     [Documentation]    Get the meter stat in config
50     ${resp}    RequestsLibrary.GET On Session
51     ...    session
52     ...    url=${REST_CONTEXT}/meter=1?${RFC8040_CONFIG_CONTENT}
53     ...    expected_status=200
54     Log    ${resp.content}
55     Should Contain    ${resp.content}    ${METER_NAME}
56
57 Verify after adding meter operational
58     [Documentation]    Get the meter stat in operational
59     ${elements}    Create List    meter-statistics    meter-kbps    flow-count    packet-in-count    byte-in-count
60     ...    meter-band-stats    meter-band-headers
61     Wait Until Keyword Succeeds
62     ...    6s
63     ...    2s
64     ...    Check For Elements At URI
65     ...    ${REST_CONTEXT}/meter=1?${RFC8040_OPERATIONAL_CONTENT}
66     ...    ${elements}
67
68 Add a flow that includes a meter
69     [Documentation]    Push a flow through RESTCONF
70     [Tags]    push
71     ${body}    OperatingSystem.Get File    ${FLOW}
72     Set Suite Variable    ${body}
73     ${resp}    RequestsLibrary.PUT On Session
74     ...    session
75     ...    url=${REST_CONTEXT}/flow-node-inventory:table=0/flow=2
76     ...    headers=${HEADERS_XML}
77     ...    data=${body}
78     Log    ${resp.content}
79
80 Verify after adding flow config
81     [Documentation]    Verify the flow
82     [Tags]    get
83     ${resp}    RequestsLibrary.GET On Session
84     ...    session
85     ...    url=${REST_CONTEXT}/flow-node-inventory:table=0/flow=2?${RFC8040_CONFIG_CONTENT}
86     ...    expected_status=200
87     Log    ${resp.content}
88     Should Contain    ${resp.content}    ${FLOW_NAME}
89
90 Verify after adding flow operational
91     [Documentation]    Verify the flow
92     ${elements}    Create List    meter-id    flow
93     Wait Until Keyword Succeeds
94     ...    6s
95     ...    2s
96     ...    Check For Elements At URI
97     ...    ${REST_CONTEXT}/flow-node-inventory:table=0/flow=2?${RFC8040_OPERATIONAL_CONTENT}
98     ...    ${elements}
99
100 Remove the flow
101     [Documentation]    Remove the flow
102     ${resp}    RequestsLibrary.DELETE On Session
103     ...    session
104     ...    url=${REST_CONTEXT}/flow-node-inventory:table=0/flow=2
105     ...    expected_status=200
106
107 Verify after deleting flow
108     [Documentation]    Verify the flow removal
109     [Tags]    get
110     ${resp}    RequestsLibrary.GET On Session
111     ...    session
112     ...    url=${REST_CONTEXT}/flow-node-inventory:table=0/flow=2?${RFC8040_CONFIG_CONTENT}
113     Should Not Contain    ${resp.content}    ${FLOW_NAME}
114
115 Delete the meter
116     [Documentation]    Remove the meter
117     [Tags]    delete
118     ${resp}    RequestsLibrary.DELETE On Session    session    url=${REST_CONTEXT}/meter=1    expected_status=200
119     Log    ${resp.content}
120
121 Verify after deleting meter
122     [Documentation]    Verify the flow removal
123     [Tags]    get
124     ${resp}    RequestsLibrary.GET On Session    session    url=${REST_CONTEXT}/meter=1?${RFC8040_CONFIG_CONTENT}
125     Should Not Contain    ${resp.content}    ${METER_NAME}