@@ -207,6 +207,7 @@ def perf_tcp_pps(
207207 test_type : str ,
208208 server : Optional [RemoteNode ] = None ,
209209 client : Optional [RemoteNode ] = None ,
210+ run_with_internal_address : bool = False ,
210211) -> None :
211212 # Either server and client are set explicitly or we use the first two nodes
212213 # from the environment. We never combine the two options. We need to specify
@@ -226,6 +227,14 @@ def perf_tcp_pps(
226227 [lambda : client .tools [Netperf ], lambda : server .tools [Netperf ]] # type: ignore
227228 )
228229
230+ server_interface_ip : str = ""
231+ client_interface_ip : str = ""
232+ if run_with_internal_address :
233+ server_interface_ip = server .internal_address
234+ client_interface_ip = client .internal_address
235+ assert server_interface_ip , "Server Node: internal address is not set"
236+ assert client_interface_ip , "Client Node: internal address is not set"
237+
229238 cpu = client .tools [Lscpu ]
230239 core_count = cpu .get_core_count ()
231240 if "maxpps" == test_type :
@@ -235,9 +244,14 @@ def perf_tcp_pps(
235244 else :
236245 ports = range (30000 , 30001 )
237246 for port in ports :
238- server_netperf .run_as_server (port )
247+ server_netperf .run_as_server (port , interface_ip = server_interface_ip )
239248 for port in ports :
240- client_netperf .run_as_client_async (server .internal_address , core_count , port )
249+ client_netperf .run_as_client_async (
250+ server_ip = server .internal_address ,
251+ core_count = core_count ,
252+ port = port ,
253+ interface_ip = client_interface_ip ,
254+ )
241255 client_sar = client .tools [Sar ]
242256 server_sar = server .tools [Sar ]
243257 server_sar .get_statistics_async ()
@@ -446,17 +460,33 @@ def perf_iperf(
446460 connections : List [int ],
447461 buffer_length_list : List [int ],
448462 udp_mode : bool = False ,
463+ server : Optional [RemoteNode ] = None ,
464+ client : Optional [RemoteNode ] = None ,
465+ run_with_internal_address : bool = False ,
449466) -> None :
450- environment = test_result .environment
451- assert environment , "fail to get environment from testresult"
467+ if server is not None or client is not None :
468+ assert server is not None , "server need to be specified, if client is set"
469+ assert client is not None , "client need to be specified, if server is set"
470+ else :
471+ environment = test_result .environment
472+ assert environment , "fail to get environment from testresult"
473+ # set server and client from environment, if not set explicitly
474+ client = cast (RemoteNode , environment .nodes [0 ])
475+ server = cast (RemoteNode , environment .nodes [1 ])
452476
453- client = cast (RemoteNode , environment .nodes [0 ])
454- server = cast (RemoteNode , environment .nodes [1 ])
455477 client_iperf3 , server_iperf3 = run_in_parallel (
456- [lambda : client .tools [Iperf3 ], lambda : server .tools [Iperf3 ]]
478+ [lambda : client .tools [Iperf3 ], lambda : server .tools [Iperf3 ]] # type: ignore
457479 )
458480 test_case_name = inspect .stack ()[1 ][3 ]
459481 iperf3_messages_list : List [Any ] = []
482+ server_interface_ip = ""
483+ client_interface_ip = ""
484+ if run_with_internal_address :
485+ server_interface_ip = server .internal_address
486+ client_interface_ip = client .internal_address
487+ assert server_interface_ip , "Server Node: internal address is not set"
488+ assert client_interface_ip , "Client Node: internal address is not set"
489+
460490 if udp_mode :
461491 for node in [client , server ]:
462492 ssh = node .tools [Ssh ]
@@ -481,7 +511,13 @@ def perf_iperf(
481511 current_server_iperf_instances += 1
482512 server_iperf3_process_list .append (
483513 server_iperf3 .run_as_server_async (
484- current_server_port , "g" , 10 , True , True , False
514+ port = current_server_port ,
515+ report_unit = "g" ,
516+ report_periodic = 10 ,
517+ use_json_format = True ,
518+ one_connection_only = True ,
519+ daemon = False ,
520+ interface_ip = server_interface_ip ,
485521 )
486522 )
487523 current_server_port += 1
@@ -502,6 +538,7 @@ def perf_iperf(
502538 parallel_number = num_threads_p ,
503539 ip_version = "4" ,
504540 udp_mode = udp_mode ,
541+ client_ip = client_interface_ip ,
505542 )
506543 )
507544 current_client_port += 1
0 commit comments