blob: e6becb8e7367ef36aafe453b67029e9238a1730d [file] [log] [blame]
*** Settings ***
Documentation Network stack stress tests using "nping" tool.
Resource ../lib/resource.robot
Resource ../lib/bmc_redfish_resource.robot
Resource ../lib/ipmi_client.robot
Library OperatingSystem
Library String
Library ../lib/gen_robot_valid.py
Library ../lib/bmc_network_utils.py
Library ../lib/ipmi_utils.py
Suite Setup Suite Setup Execution
Force Tags Network_Nping
*** Variables ***
${delay} 1000ms
${count} 4
${program_name} nping
${iterations} 5000
*** Test Cases ***
Send ICMP Timestamp Request
[Documentation] Send ICMP packet type 13 and check BMC drops such packets
[Tags] Send_ICMP_Timestamp_Request
# Send ICMP packet type 13 to BMC and check packet loss.
${packet_loss}= Send Network Packets And Get Packet Loss
... ${OPENBMC_HOST} ${count} ${ICMP_PACKETS} ${NETWORK_PORT} ${ICMP_TIMESTAMP_REQUEST}
Should Be Equal As Numbers ${packet_loss} 100.00
... msg=FAILURE: BMC is not dropping timestamp request messages.
Send ICMP Netmask Request
[Documentation] Send ICMP packet type 17 and check BMC drops such packets
[Tags] Send_ICMP_Netmask_Request
# Send ICMP packet type 17 to BMC and check packet loss.
${packet_loss}= Send Network Packets And Get Packet Loss
... ${OPENBMC_HOST} ${count} ${ICMP_PACKETS} ${NETWORK_PORT} ${ICMP_NETMASK_REQUEST}
Should Be Equal As Numbers ${packet_loss} 100.00
... msg=FAILURE: BMC is not dropping netmask request messages.
Send Network Packets Continuously To Redfish Interface
[Documentation] Send network packets continuously to Redfish interface and verify stability.
[Tags] Send_Network_Packets_Continuously_To_Redfish_Interface
# Send large number of packets to Redfish interface.
${packet_loss}= Send Network Packets And Get Packet Loss
... ${OPENBMC_HOST} ${iterations} ${TCP_PACKETS} ${REDFISH_INTERFACE}
Should Be Equal ${packet_loss} 0.0
... msg=FAILURE: BMC is dropping some packets.
# Check if Redfish interface is functional.
Redfish.Login
Redfish.Logout
Send Network Packets Continuously To IPMI Port
[Documentation] Send network packets continuously to IPMI port and verify stability.
[Tags] Send_Network_Packets_Continuously_To_IPMI_Port
# Send large number of packets to IPMI port.
${packet_loss}= Send Network Packets And Get Packet Loss
... ${OPENBMC_HOST} ${iterations} ${TCP_PACKETS} ${IPMI_PORT}
Should Be Equal ${packet_loss} 0.0
... msg=FAILURE: BMC is dropping some packets.
# Check if IPMI interface is functional.
Run IPMI Standard Command chassis status
Send Network Packets Continuously To SSH Port
[Documentation] Send network packets continuously to SSH port and verify stability.
[Tags] Send_Network_Packets_Continuously_To_SSH_Port
# Send large number of packets to SSH port.
${packet_loss}= Send Network Packets And Get Packet Loss
... ${OPENBMC_HOST} ${iterations} ${TCP_PACKETS} ${SSH_PORT}
Should Be Equal ${packet_loss} 0.0
... msg=FAILURE: BMC is dropping some packets.
# Check if SSH interface is functional.
SSHLibrary.Open Connection ${OPENBMC_HOST}
Open Connection And Log In ${OPENBMC_USERNAME} ${OPENBMC_PASSWORD}
*** Keywords ***
Suite Setup Execution
[Documentation] Validate the setup.
Valid Value OPENBMC_HOST
Valid Program program_name
Send Network Packets And Get Packet Loss
[Documentation] Send TCP, UDP or ICMP packets to the target.
[Arguments] ${host} ${num}=${count} ${packet_type}=${ICMP_PACKETS}
... ${port}=80 ${icmp_type}=${ICMP_ECHO_REQUEST}
# Description of argument(s):
# host The host name or IP address of the target system.
# packet_type The type of packets to be sent ("tcp, "udp", "icmp").
# port Network port.
# icmp_type Type of ICMP packets (e.g. 8, 13, 17, etc.).
# num Number of packets to be sent.
# This keyword 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 4 ICMP echo request packets at 1 packets/second.
${cmd_suffix}= Set Variable If '${packet_type}' == 'icmp'
... --icmp-type ${icmp_type}
... -p ${port}
${cmd_buf}= Set Variable --delay ${delay} ${host} -c ${num} --${packet_type} ${cmd_suffix}
${nping_result}= Nping ${cmd_buf}
[Return] ${nping_result['percent_lost']}