Added Scripts for Openflow Validation in Cassandra DB
[integration/test.git] / csit / suites / tsdr / Cassandra / 010_InterfaceMetrics.robot
diff --git a/csit/suites/tsdr/Cassandra/010_InterfaceMetrics.robot b/csit/suites/tsdr/Cassandra/010_InterfaceMetrics.robot
new file mode 100644 (file)
index 0000000..3ec12d8
--- /dev/null
@@ -0,0 +1,149 @@
+*** Settings ***
+Documentation     Test suite for Cassandra DataStore PortStats Verification
+Suite Teardown    Stop Tsdr Suite
+Library           SSHLibrary
+Library           Collections
+Library           String
+Library           RequestsLibrary
+Library           ../../../libraries/Common.py
+Resource          ../../../libraries/KarafKeywords.robot
+Resource          ../../../libraries/TsdrUtils.robot
+Variables         ../../../variables/Variables.py
+
+*** Variables ***
+@{INTERFACE_METRICS}    TransmittedPackets    TransmittedBytes    TransmitErrors    TransmitDrops    ReceivedPackets    ReceivedBytes    ReceiveOverRunError
+...               ReceiveFrameError    ReceiveErrors    ReceiveDrops    ReceiveCrcError    CollisionCount
+${root_path}    flow-capable-node-connector-statistics
+@{xpath}    ${root_path}/packets/transmitted    ${root_path}/bytes/transmitted    ${root_path}/transmit-errors    ${root_path}/transmit-drops    ${root_path}/packets/received    ${root_path}/bytes/received    ${root_path}/receive-over-run-error
+...                ${root_path}/receive-frame-error    ${root_path}/receive-errors    ${root_path}/receive-drops    ${root_path}/receive-crc-error    ${root_path}/collision-count
+@{CATEGORY}       FlowStats    FlowTableStats    PortStats    QueueStats
+${TSDR_PORTSTATS}    tsdr:list PortStats
+${CONFIG_INTERVAL}    /restconf/config/tsdr-openflow-statistics-collector:TSDRDCConfig
+${OPER_INTERVAL}    /restconf/operations/tsdr-openflow-statistics-collector:setPollingInterval
+${metric_path}     metric_path
+${metric_val}     metric_val
+@{xml_list}
+@{tsdr_list}
+
+*** Test Cases ***
+Verification of TSDR Cassandra Feature Installation
+    [Documentation]    Install and Verify the TSDR Cassandra Features
+    COMMENT    Install a Feature    odl-tsdr-cassandra-all    ${ODL_SYSTEM_IP}    ${KARAF_SHELL_PORT}    60
+    Wait Until Keyword Succeeds    24x    10 sec    Check Karaf Log Has Messages    tsdr.openflow
+    Verify Feature Is Installed    odl-tsdr-cassandra
+    Verify Feature Is Installed    odl-tsdr-openflow-statistics-collector
+    Start Tsdr Suite
+    Ping All Hosts
+    Wait Until Keyword Succeeds    5x    30 sec    Check Metric path    24\\d+|25\\d+
+    Wait Until Keyword Succeeds    5x    30 sec    Check Metric val     \\d{5}
+
+Storing Statistics from Openflow REST
+
+    [Documentation]    Store openflow PortStats metrics using REST.
+    : FOR    ${item}    IN    @{xpath}
+    \    ${ret_val}=    Set Variable    -1
+    \    ${ret_val}=    Get Stats XML    ${OPERATIONAL_NODES_API}/node/openflow:1/node-connector/openflow:1:1    ${item}
+    \    Append To List    ${xml_list}    ${ret_val}
+    \    ${ret_val}=    Set Variable    -1
+    \    ${ret_val}=    Get Stats XML    ${OPERATIONAL_NODES_API}/node/openflow:1/node-connector/openflow:1:2    ${item}
+    \    Append To List    ${xml_list}    ${ret_val}
+    \    ${ret_val}=    Set Variable    -1
+    \    ${ret_val}=    Get Stats XML    ${OPERATIONAL_NODES_API}/node/openflow:1/node-connector/openflow:1:LOCAL    ${item}
+    \    Append To List    ${xml_list}    ${ret_val}
+    \    ${ret_val}=    Set Variable    -1
+    \    ${ret_val}=    Get Stats XML    ${OPERATIONAL_NODES_API}/node/openflow:2/node-connector/openflow:2:1    ${item}
+    \    Append To List    ${xml_list}    ${ret_val}
+    \    ${ret_val}=    Set Variable    -1
+    \    ${ret_val}=    Get Stats XML    ${OPERATIONAL_NODES_API}/node/openflow:2/node-connector/openflow:2:2    ${item}
+    \    Append To List    ${xml_list}    ${ret_val}
+    \    ${ret_val}=    Set Variable    -1
+    \    ${ret_val}=    Get Stats XML    ${OPERATIONAL_NODES_API}/node/openflow:2/node-connector/openflow:2:3    ${item}
+    \    Append To List    ${xml_list}    ${ret_val}
+    \    ${ret_val}=    Set Variable    -1
+    \    ${ret_val}=    Get Stats XML    ${OPERATIONAL_NODES_API}/node/openflow:2/node-connector/openflow:2:LOCAL    ${item}
+    \    Append To List    ${xml_list}    ${ret_val}
+    \    ${ret_val}=    Set Variable    -1
+    \    ${ret_val}=    Get Stats XML    ${OPERATIONAL_NODES_API}/node/openflow:3/node-connector/openflow:3:1    ${item}
+    \    Append To List    ${xml_list}    ${ret_val}
+    \    ${ret_val}=    Set Variable    -1
+    \    ${ret_val}=    Get Stats XML    ${OPERATIONAL_NODES_API}/node/openflow:3/node-connector/openflow:3:2    ${item}
+    \    Append To List    ${xml_list}    ${ret_val}
+    \    ${ret_val}=    Set Variable    -1
+    \    ${ret_val}=    Get Stats XML    ${OPERATIONAL_NODES_API}/node/openflow:3/node-connector/openflow:3:LOCAL    ${item}
+    \    Append To List    ${xml_list}    ${ret_val}
+    \    ${ret_val}=    Set Variable    -1
+    Log List    ${xml_list}
+
+
+
+Verification of InterfaceMetrics-Attributes on Cassandra Client
+    [Documentation]    Verify the InterfaceMetrics has been updated on Cassandra Data Store
+    Copy TSDR tables
+    : FOR    ${list}    IN    @{INTERFACE_METRICS}
+    \    ${ret_val1}=    Extract From DB Table     grep NID=openflow:1 | grep DC=PORTSTATS | grep MN=${list} | grep RK=Node:openflow:1,NodeConnector:openflow:1:1
+    \    Append To List    ${tsdr_list}    ${ret_val1}
+    \    ${ret_val1}=    Extract From DB Table    grep NID=openflow:1 | grep DC=PORTSTATS | grep MN=${list} | grep RK=Node:openflow:1,NodeConnector:openflow:1:2
+    \    Append To List    ${tsdr_list}    ${ret_val1}
+    \    ${ret_val1}=    Extract From DB Table    grep NID=openflow:1 | grep DC=PORTSTATS | grep MN=${list} | grep RK=Node:openflow:1,NodeConnector:openflow:1:LOCAL
+    \    Append To List    ${tsdr_list}    ${ret_val1}
+    \    ${ret_val1}=    Extract From DB Table    grep NID=openflow:2 | grep DC=PORTSTATS | grep MN=${list} | grep RK=Node:openflow:2,NodeConnector:openflow:2:1
+    \    Append To List    ${tsdr_list}    ${ret_val1}
+    \    ${ret_val1}=    Extract From DB Table    grep NID=openflow:2 | grep DC=PORTSTATS | grep MN=${list} | grep RK=Node:openflow:2,NodeConnector:openflow:2:2
+    \    Append To List    ${tsdr_list}    ${ret_val1}
+    \    ${ret_val1}=    Extract From DB Table    grep NID=openflow:2 | grep DC=PORTSTATS | grep MN=${list} | grep RK=Node:openflow:2,NodeConnector:openflow:2:3
+    \    Append To List    ${tsdr_list}    ${ret_val1}
+    \    ${ret_val1}=    Extract From DB Table    grep NID=openflow:2 | grep DC=PORTSTATS | grep MN=${list} | grep RK=Node:openflow:2,NodeConnector:openflow:2:LOCAL
+    \    Append To List    ${tsdr_list}    ${ret_val1}
+    \    ${ret_val1}=    Extract From DB Table    grep NID=openflow:3 | grep DC=PORTSTATS | grep MN=${list} | grep RK=Node:openflow:3,NodeConnector:openflow:3:1
+    \    Append To List    ${tsdr_list}    ${ret_val1}
+    \    ${ret_val1}=    Extract From DB Table    grep NID=openflow:3 | grep DC=PORTSTATS | grep MN=${list} | grep RK=Node:openflow:3,NodeConnector:openflow:3:2
+    \    Append To List    ${tsdr_list}    ${ret_val1}
+    \    ${ret_val1}=    Extract From DB Table    grep NID=openflow:3 | grep DC=PORTSTATS | grep MN=${list} | grep RK=Node:openflow:3,NodeConnector:openflow:3:LOCAL
+    \    Append To List    ${tsdr_list}    ${ret_val1}
+
+Comparing Mertics
+
+    [Documentation]    Compare openflow Interface metrics between data collected from openflow Plugin and TSDR
+    : FOR    ${xml_val}    ${tsdr_val}    IN ZIP    ${xml_list}    ${tsdr_list}
+    \    Compare Tsdr XML Metrics    ${xml_val}    ${tsdr_val}
+
+
+
+Verify Configuration Interval-change
+    [Documentation]    Verify the TSDR Collection configuration changes
+    ${session}=    Create Session    session    http://${ODL_SYSTEM_IP}:${RESTCONFPORT}    auth=${AUTH}    headers=${HEADERS}
+    Verify TSDR Configuration Interval    180
+    Post TSDR Configuration Interval    200
+    Verify TSDR Configuration Interval    200
+    Post TSDR Configuration Interval    180
+    Verify TSDR Configuration Interval    180
+    Delete All Sessions
+
+*** Keywords ***
+
+Verify TSDR Configuration Interval
+    [Arguments]    ${interval}
+    [Documentation]    Verify Configuration interval of TSDR Collection
+    ${resp}    RequestsLibrary.Get    session    ${CONFIG_INTERVAL}
+    Should Be Equal As Strings    ${resp.status_code}    200
+    Should Contain    ${resp.content}    ${interval}
+
+Post TSDR Configuration Interval
+    [Arguments]    ${interval}
+    [Documentation]    Configuration TSDR collection interval ${interval}
+    ${p1}    Create Dictionary    interval    ${interval}
+    ${p2}    Create Dictionary    input    ${p1}
+    ${post_data}    Create Dictionary    setPollingInterval    ${p2}
+    Log    ${post_data}
+    ${resp}    RequestsLibrary.Post    session    ${OPER_INTERVAL}    ${post_data}
+    Should Be Equal As Strings    ${resp.status_code}    201
+
+Extract From DB Table
+    [Arguments]    ${pattern}
+    [Documentation]    Extract from metricpath table and return the value
+    ${ret_val1}=    Set Variable    -100
+    ${ret_val1}=    Verify the Metrics Attributes on Cassandra Client    ${pattern}
+    [Return]    ${ret_val1}
+
+
+