Update exception file output
[integration/test.git] / csit / libraries / TsdrUtils.robot
index 07c2ca5ddf6c21350ca120f70118872f127216a6..398e767d86838625871c478ca4eced4963aaaebd 100644 (file)
@@ -9,13 +9,14 @@ Resource          Utils.robot
 Variables         ../variables/Variables.py
 Library           json
 Library           HttpLibrary.HTTP
+Library           Process
 
 *** Variables ***
-${HBASE_CLIENT}    /tmp/Hbase/hbase-0.94.15/bin
-${CASSANDRA_CLIENT}    /tmp/cassandra/apache-cassandra-2.1.12/bin
+${HBASE_CLIENT}    /tmp/Hbase/hbase-0.94.27/bin
+${CASSANDRA_CLIENT}    /tmp/cassandra/apache-cassandra-2.1.16/bin
 ${final}          ${EMPTY}
 ${prompt_timeout}    ${EMPTY}
-${CASSANDRA_DB_PATH}    /tmp/cassandra/apache-cassandra-2.1.12/
+${CASSANDRA_DB_PATH}    /tmp/cassandra/apache-cassandra-2.1.16/
 ${metric_path}    metricpath
 ${metric_val}     metricval
 ${metric_log}     metriclog
@@ -28,6 +29,9 @@ ${SNMP_PATH}      ${KARAF_PATH}/etc/tsdr.snmp.cfg
 ${SNMP_COMMUNITY}    mib2dev\/if-mib
 &{HEADERS_QUERY}    Content-Type=application/json    Content-Type=application/json
 &{OPER_STATUS}    up=1    down=2    testing=3    unknown=4    dormant=5    notPresent=6    lowerLayerDown=7
+&{syslog_facility}    kern=0
+${MESSAGE}        Oct 29 18:10:31: ODL: %STKUNIT0-M:CP %IFMGR-5-ASTATE_UP: Changed interface Admin state to up: Te 0/0
+${MESSAGE_PATTERN}    Changed interface
 
 *** Keywords ***
 Start Tsdr Suite
@@ -35,7 +39,7 @@ Start Tsdr Suite
     [Documentation]    TSDR specific setup/cleanup work that can be done safely before any system.
     ...    is run.
     Clean Mininet System
-    ${mininet_conn_id1}=    Open Connection    ${TOOLS_SYSTEM_IP}    prompt=${DEFAULT_LINUX_PROMPT}    timeout=30s
+    ${mininet_conn_id1}=    Open Connection    ${TOOLS_SYSTEM_IP}    prompt=${DEFAULT_LINUX_PROMPT}    timeout=120s
     Set Suite Variable    ${mininet_conn_id1}
     Login With Public Key    ${TOOLS_SYSTEM_USER}    ${USER_HOME}/.ssh/${SSH_KEY}    any
     Execute Command    sudo ovs-vsctl set-manager ptcp:6644
@@ -56,31 +60,31 @@ Ping All Hosts
     Write    pingall
     Read Until    mininet>
 
-Iperf All Hosts
+Ping Pair Hosts
     [Arguments]    ${host1}    ${host2}
-    [Documentation]    Iperf between ${host1} and ${host2}
+    [Documentation]    Ping between ${host1} and ${host2}
     Switch Connection    ${mininet_conn_id1}
-    Write    iperf ${host1} ${host2}
+    Write    pingpair ${host1} ${host2}
     Read Until    mininet>
 
-Iperf All Hosts Hbase
+Ping Pair Hosts Hbase
     [Arguments]    ${pattern}
-    [Documentation]    Iperf between h1 and h2 and check Hbase
-    Iperf All Hosts    h1    h2
+    [Documentation]    Ping between h1 and h2 and check Hbase
+    Ping Pair Hosts    h1    h2
     ${query_output}=    Query the Data from HBaseClient    count 'NETFLOW'
     Should Match Regexp    ${query_output}    ${pattern}
 
-Iperf All Hosts Cassandra
+Ping Pair Hosts Cassandra
     [Arguments]    ${pattern}
-    [Documentation]    Iperf between h1 and h2 and check Cassandra
-    Iperf All Hosts    h1    h2
+    [Documentation]    Ping between h1 and h2 and check Cassandra
+    Ping Pair Hosts    h1    h2
     ${query_output}=    Count Cassandra rows    select count(*) from tsdr.metriclog;
     Should Match Regexp    ${query_output}    ${pattern}
 
-Iperf All Hosts HSQLDB
+Ping Pair Hosts HSQLDB
     [Arguments]    ${pattern}
     [Documentation]    Iperf between h1 and h2 and check Cassandra
-    Iperf All Hosts    h1    h2
+    Ping Pair Hosts    h1    h2
     ${query_output}=    Issue Command On Karaf Console    tsdr:list NETFLOW | wc -l
     Should Match Regexp    ${query_output}    ${pattern}
 
@@ -224,7 +228,7 @@ Generate HBase Query
     ${hbase_query}=    Concatenate the String    scan    '${table}'
     ${hbase_query}=    Concatenate the String    ${hbase_query}    ,{ FILTER =>\"(RowFilter(=,
     ${hbase_query}=    Concatenate the String    ${hbase_query}    'regexstring:${filter}*\')) AND (RowFilter(=,
-    ${hbase_query}=    Concatenate the String    ${hbase_query}    'regexstring:MN=${metric}*\'))\",LIMIT=>10}
+    ${hbase_query}=    Concatenate the String    ${hbase_query}    'regexstring:${metric}*\'))\",LIMIT=>10}
     [Return]    ${hbase_query}
 
 Get Metrics Value
@@ -396,9 +400,9 @@ Compare Tsdr XML Metrics
     Should Be True    ${val_diff} <= ${val_max}
 
 Generate Syslog
-    [Arguments]    ${facility}    ${level}    ${MESSAGE}
-    [Documentation]    Uses syslogd to generate syslogs
-    Run Command On Remote System    ${ODL_SYSTEM_IP}    logger -p ${facility}.${level} -n 127.0.0.1 -u 514 ${MESSAGE}
+    [Arguments]    ${facility}
+    [Documentation]    Uses netcat to generate logs and send it to port ${ODL_SYSTEM_IP}:1514
+    Run    echo "<${facility}>${MESSAGE}" | nc -w 4 -u ${ODL_SYSTEM_IP} 1514
 
 Verify Metric Val File For Syslog
     [Documentation]    Returns Value for metric matching particular keya,keyb
@@ -456,35 +460,6 @@ Check Metric Log
     ${query_output}=    Count Cassandra rows    select count(*) from tsdr.metriclog;
     Should Match Regexp    ${query_output}    ${pattern}
 
-Severity Iterator
-    [Arguments]    ${key}    ${MESSAGE}    ${syslog_severity}
-    [Documentation]    Simulating FOR loop for generating syslogs for each syslog_severity
-    : FOR    ${level}    IN ZIP    &{syslog_severity}
-    \    ${level_value}=    Get From Dictionary    ${syslog_severity}    ${level}
-    \    Generate Syslog    ${key}    ${level}    ${MESSAGE}
-
-Severity Iterator For TSDR
-    [Arguments]    ${key}    ${facility_value}    ${iterator_value}    ${syslogs}    ${MESSAGE}    ${syslog_severity}
-    [Documentation]    Simulating FOR loop for checking TSDR for each syslog_severity
-    ${iterator}=    Evaluate    ${iterator_value} * 8
-    : FOR    ${level}    IN ZIP    &{syslog_severity}
-    \    ${severity_value}=    Get From Dictionary    ${syslog_severity}    ${level}
-    \    ${fac_sev}=    Evaluate    ${facility_value} * 8 + ${severity_value}
-    \    Should Contain    @{syslogs}[${iterator}]    ${MESSAGE}
-    \    Should Contain    @{syslogs}[${iterator}]    <${fac_sev}>
-    \    ${iterator}=    Evaluate    ${iterator} + 1
-
-Severity Iterator For Syslog HBase
-    [Arguments]    ${message}    ${value}    &{syslog_severity}
-    [Documentation]    Simulating FOR loop for checking HBASE for each syslog_severity
-    ${output}=    Query the Data from HBaseClient    scan 'SYSLOG'
-    Should Contain X Times    ${output}    ${message}    8
-    ${iterator}=    Evaluate    ${value} * 8
-    : FOR    ${level}    IN ZIP    &{syslog_severity}
-    \    ${severity_value}=    Get From Dictionary    ${syslog_severity}    ${level}
-    \    ${fac_sev}=    Evaluate    ${iterator} + ${severity_value}
-    \    Should Match    ${output}    *${fac_sev}>*
-
 Generate TSDR Query
     [Arguments]    ${DC}=    ${MN}=    ${NID}=    ${RK}=    ${from}=0    ${until}=now
     [Documentation]    Issues TSDR Query and returns the list
@@ -680,3 +655,40 @@ Collect Data from SNMP Agent
     \    Append To List    ${SNMP_ENTRY}    grep NID=${SNMP_IP} | grep DC=SNMPINTERFACES | grep MN=IfOperStatus | grep RK=ifIndex:${ifindex},ifName:Iso88023Csmacd,SnmpMetric:IfOperStatus
     \    Append To List    ${SNMP_VALUES}    ${ifOperStatus}
     [Return]    ${SNMP_ENTRY}    ${SNMP_VALUES}
+
+Retrieve Value From Elasticsearch
+    [Arguments]    ${data_category}    ${metric_name}    ${node_id}    ${rk_node_id}
+    [Documentation]    Retrieve the last record of Elastic Search from index TSDR. Query is done by data category, metricname and node ID
+    Create Session    session    http://${ODL_SYSTEM_IP}:${ELASTICPORT}    auth=${AUTH}    headers=${HEADERS_QUERY}
+    ${els_query}=    create_query_string_search    ${data_category}    ${metric_name}    ${node_id}    ${rk_node_id}
+    ${els_JSON_request}=    build_elastic_search_JSON_request    ${els_query}
+    ${resp}=    RequestsLibrary.Post_Request    session    _search?pretty    data=${els_JSON_request}
+    Should Be Equal As Strings    ${resp.status_code}    200
+    @{convert}=    Parse Json    ${resp.content}
+    ${json}=    RequestsLibrary.To Json    ${resp.content}
+    ${result}=    extract_metric_value_search    ${json}
+    [Teardown]    Delete All Sessions
+    [Return]    ${result}
+
+Check Available values from Elasticsearch
+    [Arguments]    ${data_category}    ${number_items}
+    [Documentation]    Check whether data were sent to Elastic Search. We retrieve all data by data category and then compare its count
+    Create Session    session    http://${ODL_SYSTEM_IP}:${ELASTICPORT}    auth=${AUTH}    headers=${HEADERS_QUERY}
+    ${els_query}=    create_query_string_count    ${data_category}
+    ${els_JSON_request}=    build_elastic_search_JSON_request    ${els_query}
+    ${resp}=    RequestsLibrary.Post_Request    session    _search?pretty    data=${els_JSON_request}
+    Should Be Equal As Strings    ${resp.status_code}    200
+    @{convert}=    Parse Json    ${resp.content}
+    ${json}=    RequestsLibrary.To Json    ${resp.content}
+    ${result}=    extract_metric_value_count    ${json}
+    Log To Console    Elasticsearch: Check number of elements
+    Should Be True    ${result} > ${number_items}
+    [Teardown]    Delete All Sessions
+
+Clear Elasticsearch Datastore
+    [Documentation]    Clear Elastic Search Datastore
+    Create Session    session    http://${ODL_SYSTEM_IP}:${ELASTICPORT}    auth=${AUTH}    headers=${HEADERS_QUERY}
+    ${resp}=    RequestsLibrary.Delete_Request    session    tsdr
+    Should Be Equal As Strings    ${resp.status_code}    200
+    [Teardown]    Delete All Sessions
+    [Return]    ${resp.status_code}