blob: 5b9d08d98258a63a65bcc76e91adc18ebf79b9e5 [file] [log] [blame]
Prashanth Kattic8bfc362019-09-03 07:40:43 -05001*** Settings ***
2Documentation Network stack stress tests using "nping" tool.
3
4Resource ../lib/resource.robot
Prashanth Katti2f80bf12021-06-17 07:43:25 -05005Resource ../lib/bmc_redfish_resource.robot
6Resource ../lib/ipmi_client.robot
Prashanth Kattic8bfc362019-09-03 07:40:43 -05007
8Library OperatingSystem
9Library String
10Library ../lib/gen_robot_valid.py
11Library ../lib/bmc_network_utils.py
Prashanth Katti2f80bf12021-06-17 07:43:25 -050012Library ../lib/ipmi_utils.py
Prashanth Kattic8bfc362019-09-03 07:40:43 -050013
14Suite Setup Suite Setup Execution
15
16Force Tags Network_Nping
17
18*** Variables ***
19
20${delay} 1000ms
21${count} 4
22${program_name} nping
Prashanth Katti2f80bf12021-06-17 07:43:25 -050023${iterations} 5000
Prashanth Kattic8bfc362019-09-03 07:40:43 -050024
25*** Test Cases ***
26
27Send ICMP Timestamp Request
28 [Documentation] Send ICMP packet type 13 and check BMC drops such packets
29 [Tags] Send_ICMP_Timestamp_Request
30
31 # Send ICMP packet type 13 to BMC and check packet loss.
32 ${packet_loss}= Send Network Packets And Get Packet Loss
33 ... ${OPENBMC_HOST} ${count} ${ICMP_PACKETS} ${NETWORK_PORT} ${ICMP_TIMESTAMP_REQUEST}
34 Should Be Equal As Numbers ${packet_loss} 100.00
35 ... msg=FAILURE: BMC is not dropping timestamp request messages.
36
37Send ICMP Netmask Request
38 [Documentation] Send ICMP packet type 17 and check BMC drops such packets
39 [Tags] Send_ICMP_Netmask_Request
40
41 # Send ICMP packet type 17 to BMC and check packet loss.
42 ${packet_loss}= Send Network Packets And Get Packet Loss
43 ... ${OPENBMC_HOST} ${count} ${ICMP_PACKETS} ${NETWORK_PORT} ${ICMP_NETMASK_REQUEST}
44 Should Be Equal As Numbers ${packet_loss} 100.00
45 ... msg=FAILURE: BMC is not dropping netmask request messages.
46
47Send Network Packets Continuously To Redfish Interface
48 [Documentation] Send network packets continuously to Redfish interface and verify stability.
49 [Tags] Send_Network_Packets_Continuously_To_Redfish_Interface
50
51 # Send large number of packets to Redfish interface.
52 ${packet_loss}= Send Network Packets And Get Packet Loss
Prashanth Katti2f80bf12021-06-17 07:43:25 -050053 ... ${OPENBMC_HOST} ${iterations} ${TCP_PACKETS} ${REDFISH_INTERFACE}
Prashanth Kattib18762b2021-06-21 07:55:52 -050054 Should Be Equal As Numbers ${packet_loss} 0.0
Prashanth Kattic8bfc362019-09-03 07:40:43 -050055 ... msg=FAILURE: BMC is dropping some packets.
56
57 # Check if Redfish interface is functional.
58 Redfish.Login
59 Redfish.Logout
60
Prashanth Katti2f80bf12021-06-17 07:43:25 -050061
62Send Network Packets Continuously To IPMI Port
63 [Documentation] Send network packets continuously to IPMI port and verify stability.
64 [Tags] Send_Network_Packets_Continuously_To_IPMI_Port
65
66 # Send large number of packets to IPMI port.
67 ${packet_loss}= Send Network Packets And Get Packet Loss
68 ... ${OPENBMC_HOST} ${iterations} ${TCP_PACKETS} ${IPMI_PORT}
Prashanth Kattib18762b2021-06-21 07:55:52 -050069 Should Be Equal As Numbers ${packet_loss} 0.0
Prashanth Katti2f80bf12021-06-17 07:43:25 -050070 ... msg=FAILURE: BMC is dropping some packets.
71
72 # Check if IPMI interface is functional.
73 Run IPMI Standard Command chassis status
74
75
76Send Network Packets Continuously To SSH Port
77 [Documentation] Send network packets continuously to SSH port and verify stability.
78 [Tags] Send_Network_Packets_Continuously_To_SSH_Port
79
80 # Send large number of packets to SSH port.
81 ${packet_loss}= Send Network Packets And Get Packet Loss
82 ... ${OPENBMC_HOST} ${iterations} ${TCP_PACKETS} ${SSH_PORT}
Prashanth Kattib18762b2021-06-21 07:55:52 -050083 Should Be Equal As Numbers ${packet_loss} 0.0
Prashanth Katti2f80bf12021-06-17 07:43:25 -050084 ... msg=FAILURE: BMC is dropping some packets.
85
86 # Check if SSH interface is functional.
87
88 SSHLibrary.Open Connection ${OPENBMC_HOST}
89 Open Connection And Log In ${OPENBMC_USERNAME} ${OPENBMC_PASSWORD}
90
91
Prashanth Kattib18762b2021-06-21 07:55:52 -050092Flood Redfish Interface With Packets With Flags And Check Stability
93 [Documentation] Send large number of packets with flags to Redfish interface
94 ... and check stability.
95 [Tags] Flood_Redfish_Interface_With_Packets_With_Flags_And_Check_Stability
96 [Template] Send Network Packets With Flags And Verify Stability
97
98 # Target No. Of packets Interface Flags
99
100 # Flood syn packets and check BMC behavior.
101 ${OPENBMC_HOST} ${iterations} ${REDFISH_INTERFACE} ${SYN_PACKETS}
102
103 # Flood reset packets and check BMC behavior.
104 ${OPENBMC_HOST} ${iterations} ${REDFISH_INTERFACE} ${RESET_PACKETS}
105
106 # Flood fin packets and check BMC behavior.
107 ${OPENBMC_HOST} ${iterations} ${REDFISH_INTERFACE} ${FIN_PACKETS}
108
109 # Flood syn ack reset packets and check BMC behavior.
110 ${OPENBMC_HOST} ${iterations} ${REDFISH_INTERFACE} ${SYN_ACK_RESET}
111
112 # Flood packets with all flags and check BMC behavior.
113 ${OPENBMC_HOST} ${iterations} ${REDFISH_INTERFACE} ${ALL_FLAGS}
114
115
Prashanth Kattic8bfc362019-09-03 07:40:43 -0500116*** Keywords ***
117
118Suite Setup Execution
119 [Documentation] Validate the setup.
120
121 Valid Value OPENBMC_HOST
122 Valid Program program_name
123
124Send Network Packets And Get Packet Loss
125 [Documentation] Send TCP, UDP or ICMP packets to the target.
George Keishing333bb722019-12-11 11:40:49 -0600126 [Arguments] ${host} ${num}=${count} ${packet_type}=${ICMP_PACKETS}
127 ... ${port}=80 ${icmp_type}=${ICMP_ECHO_REQUEST}
Prashanth Kattic8bfc362019-09-03 07:40:43 -0500128
129 # Description of argument(s):
130 # host The host name or IP address of the target system.
131 # packet_type The type of packets to be sent ("tcp, "udp", "icmp").
132 # port Network port.
133 # icmp_type Type of ICMP packets (e.g. 8, 13, 17, etc.).
134 # num Number of packets to be sent.
135
136 # This keyword expects host, port, type and number of packets to be sent
137 # and rate at which packets to be sent, should be given in command line.
138 # By default it sends 4 ICMP echo request packets at 1 packets/second.
139
140 ${cmd_suffix}= Set Variable If '${packet_type}' == 'icmp'
141 ... --icmp-type ${icmp_type}
142 ... -p ${port}
143 ${cmd_buf}= Set Variable --delay ${delay} ${host} -c ${num} --${packet_type} ${cmd_suffix}
144
145 ${nping_result}= Nping ${cmd_buf}
146 [Return] ${nping_result['percent_lost']}
Prashanth Kattib18762b2021-06-21 07:55:52 -0500147
148
149Send Network Packets With Flags And Verify Stability
150 [Documentation] Send TCP with flags to the target.
151 [Arguments] ${host} ${num}=${count} ${port}=${REDFISH_INTERFACE}
152 ... ${flags}=${SYN_PACKETS}
153 [Teardown] Verify Interface Stability ${port}
154
155 # Description of argument(s):
156 # host The host name or IP address of the target system.
157 # packet_type The type of packets to be sent ("tcp, "udp", "icmp").
158 # port Network port.
159 # flags Type of flag to be set (e.g. SYN, ACK, RST, FIN, ALL).
160 # num Number of packets to be sent.
161
162 # This keyword expects host, port, type and number of packets to be sent
163 # and rate at which packets to be sent, should be given in command line.
164 # By default it sends 4 ICMP echo request packets at 1 packets/second.
165
166 ${cmd_suffix}= Catenate -p ${port} --flags ${flags}
167 ${cmd_buf}= Set Variable --delay ${delay} ${host} -c ${num} --${packet_type} ${cmd_suffix}
168
169 ${nping_result}= Nping ${cmd_buf}
170 Log To Console Packets lost: ${nping_result['percent_lost']}
171
172
173Verify Interface Stability
174 [Documentation] Verify interface is up and active.
175 [Arguments] ${port}
176
177 # Description of argument(s):
178 # port Network port.
179
180 Run Keyword If ${port} == ${REDFISH_INTERFACE}
181 ... Redfish.Login
182 ... ELSE IF ${port} == ${SSH_PORT}
183 ... Open Connection And Log In ${OPENBMC_USERNAME} ${OPENBMC_PASSWORD}
184 ... ELSE IF ${port} == ${IPMI_PORT}
185 ... Run External IPMI Standard Command lan print
186 ... ELSE IF ${port} == ${HOST_SOL_PORT}
187 ... Open Connection And Log In ${OPENBMC_USERNAME} ${OPENBMC_PASSWORD} port=${HOST_SOL_PORT}
188 ... ELSE
189 ... Redfish.Login