X-Git-Url: https://git.opendaylight.org/gerrit/gitweb?a=blobdiff_plain;f=csit%2Flibraries%2FTsdrUtils.robot;h=9c3604e85372ff6bd3c92d95028db61a74740c84;hb=744758a2a996c3921faed61dfcbcf2589b3e150b;hp=0e30f450f3a6175f0c25311804bb8c15b9fbe177;hpb=649de519a7f6d7f5e4138f9e24d441305ac64b07;p=integration%2Ftest.git diff --git a/csit/libraries/TsdrUtils.robot b/csit/libraries/TsdrUtils.robot index 0e30f450f3..9c3604e853 100644 --- a/csit/libraries/TsdrUtils.robot +++ b/csit/libraries/TsdrUtils.robot @@ -8,14 +8,14 @@ Library DateTime 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 +28,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 +38,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,33 +59,32 @@ 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 - ${query_output}= Issue Command On Karaf Console tsdr:list NETFLOW | wc -l + Ping Pair Hosts h1 h2 + ${query_output}= Issue Command On Karaf Console tsdr:list NETFLOW | wc -l Should Match Regexp ${query_output} ${pattern} Stop Tsdr Suite @@ -168,11 +170,12 @@ Create the Hbase table row [Arguments] ${tsdr_line} ${metrics} [Documentation] Create the Hbase table row from tsdr:list @{words}= Split String ${tsdr_line} | - : FOR ${li} IN @{words} - \ ${key}= Fetch From Left ${li} = - \ ${value}= Fetch From Right ${li} = - \ ${each_value}= Prepare HBase Filter ${key} ${value} _ - \ ${final}= Concatenate the String ${final} ${each_value} + FOR ${li} IN @{words} + ${key}= Fetch From Left ${li} = + ${value}= Fetch From Right ${li} = + ${each_value}= Prepare HBase Filter ${key} ${value} _ + ${final}= Concatenate the String ${final} ${each_value} + END ${query}= Concatenate the String ${metrics} ${final} ${query}= Remove Space on String ${query} [Return] ${query} @@ -225,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 @@ -264,7 +267,6 @@ Verify the Metrics Attributes on Cassandra Client ${metric_count}= Get From List ${split_line} 3 [Return] ${metric_count} - Form Portstats Query Pattern [Arguments] ${metric} ${node} ${port} ${attribute} [Documentation] Used for geneating openflow metrics Queries for Cassandra. @@ -285,7 +287,6 @@ Create Temporary Key Info ${output}= Run Command On Remote System ${ODL_SYSTEM_IP} cat ${CASSANDRA_DB_PATH}${val_table}|grep "${pattern}" [Return] ${output} - Verify Metric Val File [Documentation] Returns Value for metric matching particular keya,keyb @{metricval}= Read File and Return Split Lines ${CASSANDRA_DB_PATH}${temp_metric_val} @@ -303,7 +304,6 @@ Verify Metric log File [Return] ${contents} Grep From File - [Arguments] ${file} ${pattern} [Documentation] Use cat to grep from the file and return the output ${output}= Run Command On Remote System ${ODL_SYSTEM_IP} cat ${file} | ${pattern} @@ -374,7 +374,7 @@ Get Stats XML [Documentation] Parse the xml output and returns it. ${sid}= RequestsLibrary.Create_Session session http://${ODL_SYSTEM_IP}:${RESTCONFPORT} headers=${SEND_ACCEPT_XML_HEADERS} auth=${AUTH} ${resp}= RequestsLibrary.Get Request session ${query} headers=${SEND_ACCEPT_XML_HEADERS} - ${resp_xml}= Parse XML ${resp.content} + ${resp_xml}= Parse XML ${resp.text} ${id1}= Get Element Text ${resp_xml} ${xpath} Delete All Sessions [Return] ${id1} @@ -384,7 +384,7 @@ Return all XML matches [Documentation] Returns all the values from xpath ${sid}= RequestsLibrary.Create_Session session http://${ODL_SYSTEM_IP}:${RESTCONFPORT} headers=${SEND_ACCEPT_XML_HEADERS} auth=${AUTH} ${resp}= RequestsLibrary.Get Request session ${query} headers=${SEND_ACCEPT_XML_HEADERS} - ${resp_xml}= Parse XML ${resp.content} + ${resp_xml}= Parse XML ${resp.text} @{id1}= Get Elements Texts ${resp_xml} ${xpath} Delete All Sessions [Return] @{id1} @@ -400,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 @@ -424,11 +424,12 @@ Verify the Metrics Syslog on Cassandra Client Iterating over metricpath [Documentation] Used to traverse over metricpath file and traverse over metricpath file and get the keys @{mp_lines}= Read File and Return Split Lines ${CASSANDRA_DB_PATH}${metric_path} - : FOR ${line} IN @{mp_lines} - \ @{split_line}= Split String ${line} ${SPACE} - \ ${keya}= Get From List ${split_line} 1 - \ ${keyb}= Get From List ${split_line} 2 - \ Iterating over metricval ${keya} ${keyb} + FOR ${line} IN @{mp_lines} + @{split_line}= Split String ${line} ${SPACE} + ${keya}= Get From List ${split_line} 1 + ${keyb}= Get From List ${split_line} 2 + Iterating over metricval ${keya} ${keyb} + END Iterating over metricval [Arguments] ${keya} ${keyb} @@ -460,41 +461,12 @@ 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 Create Session session http://${ODL_SYSTEM_IP}:${RESTCONFPORT} auth=${AUTH} headers=${HEADERS_QUERY} ${resp}= RequestsLibrary.Get Request session /tsdr/metrics/query?tsdrkey="[NID=${NID}][DC=${DC}][MN=${MN}][RK=${RK}]"&from=${from}&until=${until} headers=${HEADERS_QUERY} - @{convert}= Parse Json ${resp.content} + @{convert}= Parse Json ${resp.text} Delete All Sessions [Return] @{convert} @@ -504,10 +476,10 @@ Generate TSDR NBI [Documentation] Issues TSDR Query and returns the list Create Session session http://${ODL_SYSTEM_IP}:${RESTCONFPORT} auth=${AUTH} headers=${HEADERS_QUERY} ${resp}= RequestsLibrary.Get Request session /tsdr/nbi/render?target="[NID=${NID}][DC=${DC}][MN=${MN}][RK=${RK}]"&from=${from}&until=${until}&maxDataPoints=${datapts} headers=${HEADERS_QUERY} - @{convert}= Parse Json ${resp.content} + @{convert}= Parse Json ${resp.text} ${dict_convert}= Convert To Dictionary @{convert} @{dict}= Get Dictionary Values ${dict_convert} - @{datapoints_list}= Convert to List @{dict}[0] + ${datapoints_list}= Convert to List ${dict}[0] Delete All Sessions [Return] @{datapoints_list} @@ -593,14 +565,16 @@ Evaluate Datasets Length Evaluate Datasets Value [Arguments] ${tsdr_lines} ${query_output} ${nbi_output} ${TYPE} [Documentation] Compare the outputs returned from all Data Stores - : FOR ${q_item} ${t_item} ${n_item} IN ZIP ${query_output} ${tsdr_lines} + FOR ${q_item} ${t_item} ${n_item} IN ZIP ${query_output} ${tsdr_lines} ... ${nbi_output} - \ ${query_row}= Extract Row Values from TSDR Query ${q_item} ${t_item} ${n_item} ${TYPE} - : FOR ${found_line} IN @{matching_list} - \ @{split_line}= Split String ${found_line} | - \ ${hex_name}= Get From List ${split_line} 2 - \ ${if_desc}= Decode Bytes To String ${hex_name} HEX - \ Append To List ${ifdesc_list} ${if_desc} + ${query_row}= Extract Row Values from TSDR Query ${q_item} ${t_item} ${n_item} ${TYPE} + END + FOR ${found_line} IN @{matching_list} + @{split_line}= Split String ${found_line} | + ${hex_name}= Get From List ${split_line} 2 + ${if_desc}= Decode Bytes To String ${hex_name} HEX + Append To List ${ifdesc_list} ${if_desc} + END [Return] @{ifdesc_list} Write SNMP config @@ -613,12 +587,11 @@ Write SNMP config Bringup Netflow [Documentation] Brings up basic netflow setup . Verify Feature Is Installed odl-tsdr-netflow-statistics-collector - Wait Until Keyword Succeeds 24x 10 sec Check Karaf Log Has Messages NetFlow Data Colletor Initialized + Wait Until Keyword Succeeds 24x 10 sec Check Karaf Log Has Messages NetFlow Data Colletor Initialized Start Tsdr Suite Ping All Hosts Configure Netflow - Collect Data from SNMP Agent [Arguments] ${SNMP_IP}=127.0.0.1 ${SNMP_AGENT_COMM}=${SNMP_COMMUNITY} [Documentation] Poll for SNMP Agent OID @@ -627,62 +600,99 @@ Collect Data from SNMP Agent ${snmpagentcreate_json}= json.dumps ${snmpagentcreate} Create Session session http://${ODL_SYSTEM_IP}:${RESTCONFPORT} auth=${AUTH} headers=${HEADERS_QUERY} ${resp}= RequestsLibrary.Post Request session /restconf/operations/snmp:get-interfaces data=${snmpagentcreate_json} - ${convert}= To Json ${resp.content} + ${convert}= To Json ${resp.text} @{dict1}= Get Dictionary Keys ${convert} ${dict1_0}= Get From List ${dict1} 0 ${dict1_val}= Get From Dictionary ${convert} ${dict1_0} @{ifEntry}= Get From Dictionary ${dict1_val} ifEntry @{SNMP_ENTRY}= Create List @{SNMP_VALUES}= Create List - : FOR ${int} IN @{ifEntry} - \ ${ifindex}= Get From Dictionary ${int} ifIndex - \ ${ifOutDiscards}= Get From Dictionary ${int} ifOutDiscards - \ ${ifInDiscards}= Get From Dictionary ${int} ifInDiscards - \ ${ifType}= Get From Dictionary ${int} ifType - \ ${ifInOctets}= Get From Dictionary ${int} ifInOctets - \ ${ifSpeed}= Get From Dictionary ${int} ifSpeed - \ ${ifOutQLen}= Get From Dictionary ${int} ifOutQLen - \ ${ifOutErrors}= Get From Dictionary ${int} ifOutErrors - \ ${ifPhysAddress}= Get From Dictionary ${int} ifPhysAddress - \ ${ifInUcastPkts}= Get From Dictionary ${int} ifInUcastPkts - \ ${ifOutNUcastPkts}= Get From Dictionary ${int} ifOutNUcastPkts - \ ${ifInErrors}= Get From Dictionary ${int} ifInErrors - \ ${ifOutOctets}= Get From Dictionary ${int} ifOutOctets - \ ${ifAdminStatus1}= Get From Dictionary ${int} ifAdminStatus - \ ${ifAdminStatus}= Get From Dictionary ${OPER_STATUS} ${ifAdminStatus1} - \ ${ifInUnknownProtos}= Get From Dictionary ${int} ifInUnknownProtos - \ ${ifOutUcastPkts}= Get From Dictionary ${int} ifOutUcastPkts - \ ${ifInNUcastPkts}= Get From Dictionary ${int} ifInNUcastPkts - \ ${ifMtu}= Get From Dictionary ${int} ifMtu - \ ${ifOperStatus1}= Get From Dictionary ${int} ifOperStatus - \ ${ifOperStatus}= Get From Dictionary ${OPER_STATUS} ${ifOperStatus1} - \ Append To List ${SNMP_ENTRY} grep NID=${SNMP_IP} | grep DC=SNMPINTERFACES | grep MN=IfOutDiscards | grep RK=ifIndex:${ifindex},ifName:Iso88023Csmacd,SnmpMetric:IfOutDiscards - \ Append To List ${SNMP_VALUES} ${ifOutDiscards} - \ Append To List ${SNMP_ENTRY} grep NID=${SNMP_IP} | grep DC=SNMPINTERFACES | grep MN=IfInDiscards | grep RK=ifIndex:${ifindex},ifName:Iso88023Csmacd,SnmpMetric:IfInDiscards - \ Append To List ${SNMP_VALUES} ${ifInDiscards} - \ Append To List ${SNMP_ENTRY} grep NID=${SNMP_IP} | grep DC=SNMPINTERFACES | grep MN=IfInOctets | grep RK=ifIndex:${ifindex},ifName:Iso88023Csmacd,SnmpMetric:IfInOctets - \ Append To List ${SNMP_VALUES} ${ifInOctets} - \ Append To List ${SNMP_ENTRY} grep NID=${SNMP_IP} | grep DC=SNMPINTERFACES | grep MN=IfOutQLen | grep RK=ifIndex:${ifindex},ifName:Iso88023Csmacd,SnmpMetric:IfOutQLen - \ Append To List ${SNMP_VALUES} ${ifOutQLen} - \ Append To List ${SNMP_ENTRY} grep NID=${SNMP_IP} | grep DC=SNMPINTERFACES | grep MN=IfOutErrors | grep RK=ifIndex:${ifindex},ifName:Iso88023Csmacd,SnmpMetric:IfOutErrors - \ Append To List ${SNMP_VALUES} ${ifOutErrors} - \ Append To List ${SNMP_ENTRY} grep NID=${SNMP_IP} | grep DC=SNMPINTERFACES | grep MN=IfInUcastPkts | grep RK=ifIndex:${ifindex},ifName:Iso88023Csmacd,SnmpMetric:IfInUcastPkts - \ Append To List ${SNMP_VALUES} ${ifInUcastPkts} - \ Append To List ${SNMP_ENTRY} grep NID=${SNMP_IP} | grep DC=SNMPINTERFACES | grep MN=IfOutNUcastPkts | grep RK=ifIndex:${ifindex},ifName:Iso88023Csmacd,SnmpMetric:IfOutNUcastPkts - \ Append To List ${SNMP_VALUES} ${ifOutNUcastPkts} - \ Append To List ${SNMP_ENTRY} grep NID=${SNMP_IP} | grep DC=SNMPINTERFACES | grep MN=IfInErrors | grep RK=ifIndex:${ifindex},ifName:Iso88023Csmacd,SnmpMetric:IfInErrors - \ Append To List ${SNMP_VALUES} ${ifInErrors} - \ Append To List ${SNMP_ENTRY} grep NID=${SNMP_IP} | grep DC=SNMPINTERFACES | grep MN=IfOutOctets | grep RK=ifIndex:${ifindex},ifName:Iso88023Csmacd,SnmpMetric:IfOutOctets - \ Append To List ${SNMP_VALUES} ${ifOutOctets} - \ Append To List ${SNMP_ENTRY} grep NID=${SNMP_IP} | grep DC=SNMPINTERFACES | grep MN=IfAdminStatus | grep RK=ifIndex:${ifindex},ifName:Iso88023Csmacd,SnmpMetric:IfAdminStatus - \ Append To List ${SNMP_VALUES} ${ifAdminStatus} - \ Append To List ${SNMP_ENTRY} grep NID=${SNMP_IP} | grep DC=SNMPINTERFACES | grep MN=IfInUnknownProtos | grep RK=ifIndex:${ifindex},ifName:Iso88023Csmacd,SnmpMetric:IfInUnknownProtos - \ Append To List ${SNMP_VALUES} ${ifInUnknownProtos} - \ Append To List ${SNMP_ENTRY} grep NID=${SNMP_IP} | grep DC=SNMPINTERFACES | grep MN=IfOutUcastPkts | grep RK=ifIndex:${ifindex},ifName:Iso88023Csmacd,SnmpMetric:IfOutUcastPkts - \ Append To List ${SNMP_VALUES} ${ifOutUcastPkts} - \ Append To List ${SNMP_ENTRY} grep NID=${SNMP_IP} | grep DC=SNMPINTERFACES | grep MN=IfInNUcastPkts | grep RK=ifIndex:${ifindex},ifName:Iso88023Csmacd,SnmpMetric:IfInNUcastPkts - \ Append To List ${SNMP_VALUES} ${ifInNUcastPkts} - \ 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} + FOR ${int} IN @{ifEntry} + ${ifindex}= Get From Dictionary ${int} ifIndex + ${ifOutDiscards}= Get From Dictionary ${int} ifOutDiscards + ${ifInDiscards}= Get From Dictionary ${int} ifInDiscards + ${ifType}= Get From Dictionary ${int} ifType + ${ifInOctets}= Get From Dictionary ${int} ifInOctets + ${ifSpeed}= Get From Dictionary ${int} ifSpeed + ${ifOutQLen}= Get From Dictionary ${int} ifOutQLen + ${ifOutErrors}= Get From Dictionary ${int} ifOutErrors + ${ifPhysAddress}= Get From Dictionary ${int} ifPhysAddress + ${ifInUcastPkts}= Get From Dictionary ${int} ifInUcastPkts + ${ifOutNUcastPkts}= Get From Dictionary ${int} ifOutNUcastPkts + ${ifInErrors}= Get From Dictionary ${int} ifInErrors + ${ifOutOctets}= Get From Dictionary ${int} ifOutOctets + ${ifAdminStatus1}= Get From Dictionary ${int} ifAdminStatus + ${ifAdminStatus}= Get From Dictionary ${OPER_STATUS} ${ifAdminStatus1} + ${ifInUnknownProtos}= Get From Dictionary ${int} ifInUnknownProtos + ${ifOutUcastPkts}= Get From Dictionary ${int} ifOutUcastPkts + ${ifInNUcastPkts}= Get From Dictionary ${int} ifInNUcastPkts + ${ifMtu}= Get From Dictionary ${int} ifMtu + ${ifOperStatus1}= Get From Dictionary ${int} ifOperStatus + ${ifOperStatus}= Get From Dictionary ${OPER_STATUS} ${ifOperStatus1} + Append To List ${SNMP_ENTRY} grep NID=${SNMP_IP} | grep DC=SNMPINTERFACES | grep MN=IfOutDiscards | grep RK=ifIndex:${ifindex},ifName:Iso88023Csmacd,SnmpMetric:IfOutDiscards + Append To List ${SNMP_VALUES} ${ifOutDiscards} + Append To List ${SNMP_ENTRY} grep NID=${SNMP_IP} | grep DC=SNMPINTERFACES | grep MN=IfInDiscards | grep RK=ifIndex:${ifindex},ifName:Iso88023Csmacd,SnmpMetric:IfInDiscards + Append To List ${SNMP_VALUES} ${ifInDiscards} + Append To List ${SNMP_ENTRY} grep NID=${SNMP_IP} | grep DC=SNMPINTERFACES | grep MN=IfInOctets | grep RK=ifIndex:${ifindex},ifName:Iso88023Csmacd,SnmpMetric:IfInOctets + Append To List ${SNMP_VALUES} ${ifInOctets} + Append To List ${SNMP_ENTRY} grep NID=${SNMP_IP} | grep DC=SNMPINTERFACES | grep MN=IfOutQLen | grep RK=ifIndex:${ifindex},ifName:Iso88023Csmacd,SnmpMetric:IfOutQLen + Append To List ${SNMP_VALUES} ${ifOutQLen} + Append To List ${SNMP_ENTRY} grep NID=${SNMP_IP} | grep DC=SNMPINTERFACES | grep MN=IfOutErrors | grep RK=ifIndex:${ifindex},ifName:Iso88023Csmacd,SnmpMetric:IfOutErrors + Append To List ${SNMP_VALUES} ${ifOutErrors} + Append To List ${SNMP_ENTRY} grep NID=${SNMP_IP} | grep DC=SNMPINTERFACES | grep MN=IfInUcastPkts | grep RK=ifIndex:${ifindex},ifName:Iso88023Csmacd,SnmpMetric:IfInUcastPkts + Append To List ${SNMP_VALUES} ${ifInUcastPkts} + Append To List ${SNMP_ENTRY} grep NID=${SNMP_IP} | grep DC=SNMPINTERFACES | grep MN=IfOutNUcastPkts | grep RK=ifIndex:${ifindex},ifName:Iso88023Csmacd,SnmpMetric:IfOutNUcastPkts + Append To List ${SNMP_VALUES} ${ifOutNUcastPkts} + Append To List ${SNMP_ENTRY} grep NID=${SNMP_IP} | grep DC=SNMPINTERFACES | grep MN=IfInErrors | grep RK=ifIndex:${ifindex},ifName:Iso88023Csmacd,SnmpMetric:IfInErrors + Append To List ${SNMP_VALUES} ${ifInErrors} + Append To List ${SNMP_ENTRY} grep NID=${SNMP_IP} | grep DC=SNMPINTERFACES | grep MN=IfOutOctets | grep RK=ifIndex:${ifindex},ifName:Iso88023Csmacd,SnmpMetric:IfOutOctets + Append To List ${SNMP_VALUES} ${ifOutOctets} + Append To List ${SNMP_ENTRY} grep NID=${SNMP_IP} | grep DC=SNMPINTERFACES | grep MN=IfAdminStatus | grep RK=ifIndex:${ifindex},ifName:Iso88023Csmacd,SnmpMetric:IfAdminStatus + Append To List ${SNMP_VALUES} ${ifAdminStatus} + Append To List ${SNMP_ENTRY} grep NID=${SNMP_IP} | grep DC=SNMPINTERFACES | grep MN=IfInUnknownProtos | grep RK=ifIndex:${ifindex},ifName:Iso88023Csmacd,SnmpMetric:IfInUnknownProtos + Append To List ${SNMP_VALUES} ${ifInUnknownProtos} + Append To List ${SNMP_ENTRY} grep NID=${SNMP_IP} | grep DC=SNMPINTERFACES | grep MN=IfOutUcastPkts | grep RK=ifIndex:${ifindex},ifName:Iso88023Csmacd,SnmpMetric:IfOutUcastPkts + Append To List ${SNMP_VALUES} ${ifOutUcastPkts} + Append To List ${SNMP_ENTRY} grep NID=${SNMP_IP} | grep DC=SNMPINTERFACES | grep MN=IfInNUcastPkts | grep RK=ifIndex:${ifindex},ifName:Iso88023Csmacd,SnmpMetric:IfInNUcastPkts + Append To List ${SNMP_VALUES} ${ifInNUcastPkts} + 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} + END [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.text} + ${json}= RequestsLibrary.To Json ${resp.text} + ${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.text} + ${json}= RequestsLibrary.To Json ${resp.text} + ${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}