1*** Settings *** 2Documentation Network stack stress tests using "nping" tool. 3 4# This Suite has few testcases which uses nping with ICMP. 5# ICMP creates a raw socket, which requires root privilege/sudo to run tests. 6 7Resource ../lib/resource.robot 8Resource ../lib/bmc_redfish_resource.robot 9Resource ../lib/ipmi_client.robot 10Resource ../lib/bmc_network_security_utils.robot 11 12Library OperatingSystem 13Library String 14Library ../lib/gen_robot_valid.py 15Library ../lib/bmc_network_utils.py 16Library ../lib/ipmi_utils.py 17 18Suite Setup Suite Setup Execution 19 20Force Tags Network_Nping 21 22*** Variables *** 23 24${delay} 1000ms 25${count} 4 26${program_name} nping 27${iterations} 5000 28 29*** Test Cases *** 30 31Send ICMP Timestamp Request 32 [Documentation] Send ICMP packet type 13 and check BMC drops such packets 33 [Tags] Send_ICMP_Timestamp_Request 34 35 # Send ICMP packet type 13 to BMC and check packet loss. 36 ${packet_loss}= Send Network Packets And Get Packet Loss 37 ... ${OPENBMC_HOST} ${count} ${ICMP_PACKETS} ${NETWORK_PORT} ${ICMP_TIMESTAMP_REQUEST} 38 Should Be Equal As Numbers ${packet_loss} 100.00 39 ... msg=FAILURE: BMC is not dropping timestamp request messages. 40 41Send ICMP Netmask Request 42 [Documentation] Send ICMP packet type 17 and check BMC drops such packets 43 [Tags] Send_ICMP_Netmask_Request 44 45 # Send ICMP packet type 17 to BMC and check packet loss. 46 ${packet_loss}= Send Network Packets And Get Packet Loss 47 ... ${OPENBMC_HOST} ${count} ${ICMP_PACKETS} ${NETWORK_PORT} ${ICMP_NETMASK_REQUEST} 48 Should Be Equal As Numbers ${packet_loss} 100.00 49 ... msg=FAILURE: BMC is not dropping netmask request messages. 50 51Send Continuous ICMP Echo Request To BMC And Verify No Packet Loss 52 [Documentation] Send ICMP packet type 8 continuously and check no packets are dropped from BMC 53 [Tags] Send_Continuous_ICMP_Echo_Request_To_BMC_And_Verify_No_Packet_Loss 54 55 # Send ICMP packet type 8 to BMC and check packet loss. 56 ${packet_loss}= Send Network Packets And Get Packet Loss 57 ... ${OPENBMC_HOST} ${iterations} ${ICMP_PACKETS} 58 Should Be Equal As Numbers ${packet_loss} 0.0 59 ... msg=FAILURE: BMC is dropping packets. 60 61Send Network Packets Continuously To Redfish Interface 62 [Documentation] Send network packets continuously to Redfish interface and verify stability. 63 [Tags] Send_Network_Packets_Continuously_To_Redfish_Interface 64 65 # Send large number of packets to Redfish interface. 66 ${packet_loss}= Send Network Packets And Get Packet Loss 67 ... ${OPENBMC_HOST} ${iterations} ${TCP_PACKETS} ${REDFISH_INTERFACE} 68 Should Be Equal As Numbers ${packet_loss} 0.0 69 ... msg=FAILURE: BMC is dropping some packets. 70 71 # Check if Redfish interface is functional. 72 Redfish.Login 73 Redfish.Logout 74 75 76Send Network Packets Continuously To IPMI Port 77 [Documentation] Send network packets continuously to IPMI port and verify stability. 78 [Tags] Send_Network_Packets_Continuously_To_IPMI_Port 79 80 # Send large number of packets to IPMI port. 81 ${packet_loss}= Send Network Packets And Get Packet Loss 82 ... ${OPENBMC_HOST} ${iterations} ${TCP_PACKETS} ${IPMI_PORT} 83 Should Be Equal As Numbers ${packet_loss} 0.0 84 ... msg=FAILURE: BMC is dropping some packets. 85 86 # Check if IPMI interface is functional. 87 Run IPMI Standard Command chassis status 88 89 90Send Network Packets Continuously To SSH Port 91 [Documentation] Send network packets continuously to SSH port and verify stability. 92 [Tags] Send_Network_Packets_Continuously_To_SSH_Port 93 94 # Send large number of packets to SSH port. 95 ${packet_loss}= Send Network Packets And Get Packet Loss 96 ... ${OPENBMC_HOST} ${iterations} ${TCP_PACKETS} ${SSH_PORT} 97 Should Be Equal As Numbers ${packet_loss} 0.0 98 ... msg=FAILURE: BMC is dropping some packets. 99 100 # Check if SSH interface is functional. 101 102 SSHLibrary.Open Connection ${OPENBMC_HOST} 103 Open Connection And Log In ${OPENBMC_USERNAME} ${OPENBMC_PASSWORD} 104 105 106Flood Redfish Interface With Packets With Flags And Check Stability 107 [Documentation] Send large number of packets with flags to Redfish interface 108 ... and check stability. 109 [Tags] Flood_Redfish_Interface_With_Packets_With_Flags_And_Check_Stability 110 [Template] Send Network Packets With Flags And Verify Stability 111 112 # Target No. Of packets Interface Flags 113 114 # Flood syn packets and check BMC behavior. 115 ${OPENBMC_HOST} ${iterations} ${REDFISH_INTERFACE} ${SYN_PACKETS} 116 117 # Flood reset packets and check BMC behavior. 118 ${OPENBMC_HOST} ${iterations} ${REDFISH_INTERFACE} ${RESET_PACKETS} 119 120 # Flood fin packets and check BMC behavior. 121 ${OPENBMC_HOST} ${iterations} ${REDFISH_INTERFACE} ${FIN_PACKETS} 122 123 # Flood syn ack reset packets and check BMC behavior. 124 ${OPENBMC_HOST} ${iterations} ${REDFISH_INTERFACE} ${SYN_ACK_RESET} 125 126 # Flood packets with all flags and check BMC behavior. 127 ${OPENBMC_HOST} ${iterations} ${REDFISH_INTERFACE} ${ALL_FLAGS} 128 129 130Send Network Packets Continuously To SOL Port 131 [Documentation] Send network packets continuously to SOL port and verify stability. 132 [Tags] Send_Network_Packets_Continuously_To_SOL_Port 133 [Teardown] Run Keywords FFDC On Test Case Fail AND Close all connections 134 135 # Send large number of packets to SOL port. 136 ${packet_loss}= Send Network Packets And Get Packet Loss 137 ... ${OPENBMC_HOST} ${iterations} ${TCP_PACKETS} ${HOST_SOL_PORT} 138 139 # Check if SOL interface is functional. 140 141 SSHLibrary.Open Connection ${OPENBMC_HOST} port=${HOST_SOL_PORT} 142 Verify Interface Stability ${HOST_SOL_PORT} 143 Should Be Equal As Numbers ${packet_loss} 0.0 144 ... msg=FAILURE: BMC is dropping some packets. 145 146 147*** Keywords *** 148 149Suite Setup Execution 150 [Documentation] Validate the setup. 151 152 Valid Value OPENBMC_HOST 153 Valid Program program_name 154 155 156Verify Interface Stability 157 [Documentation] Verify interface is up and active. 158 [Arguments] ${port} 159 160 # Description of argument(s): 161 # port Network port. 162 163 Run Keyword If ${port} == ${REDFISH_INTERFACE} 164 ... Redfish.Login 165 ... ELSE IF ${port} == ${SSH_PORT} 166 ... Open Connection And Log In ${OPENBMC_USERNAME} ${OPENBMC_PASSWORD} 167 ... ELSE IF ${port} == ${IPMI_PORT} 168 ... Run External IPMI Standard Command lan print 169 ... ELSE IF ${port} == ${HOST_SOL_PORT} 170 ... Open Connection And Log In ${OPENBMC_USERNAME} ${OPENBMC_PASSWORD} port=${HOST_SOL_PORT} 171 ... ELSE 172 ... Redfish.Login 173