blob: f9d0874c65c5108dd8441961bec8712f5be8f1b6 [file] [log] [blame]
*** Settings ***
Documentation Network stack stress tests using "nping" tool.
Resource ../lib/resource.robot
Library OperatingSystem
Library String
Suite Setup Suite Setup Execution
Force Tags Network_Nping
*** Variables ***
${delay} 200ms
${count} 100
${bmc_packet_loss} ${EMPTY}
*** Test Cases ***
Verify Zero Network Packet Loss On BMC
[Documentation] Pump network packets to target.
[Tags] Verify_Zero_Network_Packet_Loss_On_BMC
# Send packets to BMC and check packet loss.
${bmc_packet_loss}= Send Network Packets
... ${OPENBMC_HOST} ${PACKET_TYPE} ${NETWORK_PORT}
Should Contain
... ${bmc_packet_loss} Lost: 0 (0.00%) msg=Fail, Packet loss on BMC.
*** Keywords ***
Suite Setup Execution
[Documentation] Validate the setup.
Should Not Be Empty ${OPENBMC_HOST} msg=BMC IP address not provided.
${output}= Run which nping
Should Not Be Empty ${output} msg="nping" tool not installed.
Send Network Packets
[Documentation] Send TCP, UDP or ICMP packets to the target.
[Arguments] ${host} ${packet_type}=tcp ${port}=80
# Description of arguments:
# ${host}- Target system to which network packets to be sent.
# ${packet_type}- type of packets to be sent viz tcp, udp or icmp.
# ${port}- Network port.
# This program expects host, port, type and number of packets to be sent
# and rate at which packets to be sent, should be given in command line
# by default it sends 100 TCP packets at 5 packets/second.
${cmd_buff}= Run Keyword If '${packet_type}' == 'icmp'
... Set Variable
... echo ${CLIENT_PASSWORD} | sudo -S nping --delay ${delay} ${host} -c ${count} --${packet_type}
... ELSE
... Set variable
... echo ${CLIENT_PASSWORD} | sudo -S nping --delay ${delay} ${host} -c ${count} -p ${port} --${packet_type}
${rc} ${output} Run And Return RC And Output ${cmd_buff}
Should Be Equal As Integers ${rc} 0 msg=Command execution failed.
${packet_loss} Get Packet Loss ${host} ${output}
[Return] ${packet_loss}
Get Packet Loss
[Documentation] Check packet loss percentage.
# Sample Output from "nping" command:
# Starting Nping 0.6.47 ( http://nmap.org/nping ) at 2017-02-21 22:05 IST
# SENT (0.0181s) TCP Source IP:37577 >
# Destination IP:80 S ttl=64 id=39113 iplen=40 seq=629782493 win=1480
# SENT (0.2189s) TCP Source IP:37577 >
# Destination IP:80 S ttl=64 id=39113 iplen=40 seq=629782493 win=1480
# RCVD (0.4120s) TCP Destination IP:80 >
# Source IP:37577 SA ttl=49 id=0 iplen=44 seq=1078301364 win=5840 <mss 1380>
# Max rtt: 193.010ms | Min rtt: 193.010ms | Avg rtt: 193.010ms
# Raw packets sent: 2 (80B) | Rcvd: 1 (46B) | Lost: 1 (50.00%)
# Nping done: 1 IP address pinged in 0.43 seconds
[Arguments] ${host} ${traffic_details}
# Description of arguments:
# ${host}- System on which packet loss to be checked.
# ${traffic_details}- Details of the network traffic sent.
${summary}= Get Lines Containing String ${traffic_details} Rcvd:
Log To Console \nPacket loss summary on ${host}\n*********************
[Return] ${summary}