def test_inner_hashing(self, hash_keys, ptfhost, outer_ipver, inner_ipver, router_mac, vlan_ptf_ports, symmetric_hashing): logging.info( "Executing static inner hash test for outer {} and inner {} with symmetric_hashing set to {}" .format(outer_ipver, inner_ipver, str(symmetric_hashing))) timestamp = datetime.now().strftime('%Y-%m-%d-%H:%M:%S') log_file = "/tmp/inner_hash_test.StaticInnerHashTest.{}.{}.{}.log".format( outer_ipver, inner_ipver, timestamp) logging.info("PTF log file: %s" % log_file) outer_src_ip_range, outer_dst_ip_range = get_src_dst_ip_range( outer_ipver) inner_src_ip_range, inner_dst_ip_range = get_src_dst_ip_range( inner_ipver) ptf_runner(ptfhost, "ptftests", "inner_hash_test.InnerHashTest", platform_dir="ptftests", params={ "fib_info": FIB_INFO_FILE_DST, "router_mac": router_mac, "src_ports": vlan_ptf_ports, "hash_keys": hash_keys, "vxlan_port": VXLAN_PORT, "inner_src_ip_range": ",".join(inner_src_ip_range), "inner_dst_ip_range": ",".join(inner_dst_ip_range), "outer_src_ip_range": ",".join(outer_src_ip_range), "outer_dst_ip_range": ",".join(outer_dst_ip_range), "outer_encap_formats": OUTER_ENCAP_FORMATS, "symmetric_hashing": symmetric_hashing }, log_file=log_file, qlen=PTF_QLEN, socket_recv_size=16384)
def test_inner_hashing(self, duthost, hash_keys, ptfhost, outer_ipver, inner_ipver, router_mac, vlan_ptf_ports, symmetric_hashing, localhost): logging.info( "Executing warm boot dynamic inner hash test for outer {} and inner {} with symmetric_hashing" " set to {}".format(outer_ipver, inner_ipver, str(symmetric_hashing))) with allure.step( 'Run ptf test InnerHashTest and warm-reboot in parallel'): timestamp = datetime.now().strftime('%Y-%m-%d-%H:%M:%S') log_file = "/tmp/wr_inner_hash_test.DynamicInnerHashTest.{}.{}.{}.log".format( outer_ipver, inner_ipver, timestamp) logging.info("PTF log file: %s" % log_file) # to reduce test run time, check one of encapsulation formats outer_encap_format = random.choice(OUTER_ENCAP_FORMATS).split() logging.info("Tested encapsulation format: {}".format( outer_encap_format[0])) outer_src_ip_range, outer_dst_ip_range = get_src_dst_ip_range( outer_ipver) inner_src_ip_range, inner_dst_ip_range = get_src_dst_ip_range( inner_ipver) balancing_test_times = 200 balancing_range = 0.3 reboot_thr = threading.Thread(target=reboot, args=( duthost, localhost, 'warm', )) reboot_thr.start() ptf_runner(ptfhost, "ptftests", "inner_hash_test.InnerHashTest", platform_dir="ptftests", params={ "fib_info": FIB_INFO_FILE_DST, "router_mac": router_mac, "src_ports": vlan_ptf_ports, "hash_keys": hash_keys, "vxlan_port": VXLAN_PORT, "inner_src_ip_range": ",".join(inner_src_ip_range), "inner_dst_ip_range": ",".join(inner_dst_ip_range), "outer_src_ip_range": ",".join(outer_src_ip_range), "outer_dst_ip_range": ",".join(outer_dst_ip_range), "balancing_test_times": balancing_test_times, "balancing_range": balancing_range, "outer_encap_formats": outer_encap_format, "nvgre_tni": NVGRE_TNI, "symmetric_hashing": symmetric_hashing }, log_file=log_file, qlen=PTF_QLEN, socket_recv_size=16384) reboot_thr.join()
def test_inner_hashing(self, hash_keys, ptfhost, outer_ipver, inner_ipver, router_mac, vlan_ptf_ports, symmetric_hashing, duthost): logging.info( "Executing dynamic inner hash test for outer {} and inner {} with symmetric_hashing set to {}" .format(outer_ipver, inner_ipver, str(symmetric_hashing))) with allure.step('Run ptf test InnerHashTest'): timestamp = datetime.now().strftime('%Y-%m-%d-%H:%M:%S') log_file = "/tmp/inner_hash_test.DynamicInnerHashTest.{}.{}.{}.log".format( outer_ipver, inner_ipver, timestamp) logging.info("PTF log file: %s" % log_file) outer_src_ip_range, outer_dst_ip_range = get_src_dst_ip_range( outer_ipver) inner_src_ip_range, inner_dst_ip_range = get_src_dst_ip_range( inner_ipver) balancing_test_times = 150 balancing_range = 0.3 ptf_runner(ptfhost, "ptftests", "inner_hash_test.InnerHashTest", platform_dir="ptftests", params={ "fib_info": FIB_INFO_FILE_DST, "router_mac": router_mac, "src_ports": vlan_ptf_ports, "hash_keys": hash_keys, "vxlan_port": VXLAN_PORT, "inner_src_ip_range": ",".join(inner_src_ip_range), "inner_dst_ip_range": ",".join(inner_dst_ip_range), "outer_src_ip_range": ",".join(outer_src_ip_range), "outer_dst_ip_range": ",".join(outer_dst_ip_range), "balancing_test_times": balancing_test_times, "balancing_range": balancing_range, "outer_encap_formats": OUTER_ENCAP_FORMATS, "nvgre_tni": NVGRE_TNI, "symmetric_hashing": symmetric_hashing }, log_file=log_file, qlen=PTF_QLEN, socket_recv_size=16384) retry_call(check_pbh_counters, fargs=[ duthost, outer_ipver, inner_ipver, balancing_test_times, symmetric_hashing, hash_keys ], tries=5, delay=5)
def test_inner_hashing(self, request, hash_keys, ptfhost, outer_ipver, inner_ipver, router_mac, vlan_ptf_ports, symmetric_hashing, duthost, lag_mem_ptf_ports_groups): logging.info( "Executing dynamic inner hash test for outer {} and inner {} with symmetric_hashing set to {}" .format(outer_ipver, inner_ipver, str(symmetric_hashing))) with allure.step('Run ptf test InnerHashTest'): timestamp = datetime.now().strftime('%Y-%m-%d-%H:%M:%S') log_file = "/tmp/inner_hash_test.DynamicInnerHashTest.{}.{}.{}.log".format( outer_ipver, inner_ipver, timestamp) logging.info("PTF log file: %s" % log_file) outer_src_ip_range, outer_dst_ip_range = get_src_dst_ip_range( outer_ipver) inner_src_ip_range, inner_dst_ip_range = get_src_dst_ip_range( inner_ipver) balancing_test_times = 120 balancing_range = 0.3 ptf_params = { "fib_info": FIB_INFO_FILE_DST, "router_mac": router_mac, "src_ports": vlan_ptf_ports, "exp_port_groups": lag_mem_ptf_ports_groups, "hash_keys": hash_keys, "vxlan_port": VXLAN_PORT, "inner_src_ip_range": ",".join(inner_src_ip_range), "inner_dst_ip_range": ",".join(inner_dst_ip_range), "outer_src_ip_range": ",".join(outer_src_ip_range), "outer_dst_ip_range": ",".join(outer_dst_ip_range), "balancing_test_times": balancing_test_times, "balancing_range": balancing_range, "outer_encap_formats": OUTER_ENCAP_FORMATS, "nvgre_tni": NVGRE_TNI, "symmetric_hashing": symmetric_hashing } duthost.shell("sonic-clear pbh statistics") ptf_runner(ptfhost, "ptftests", "inner_hash_test.InnerHashTest", platform_dir="ptftests", params=ptf_params, log_file=log_file, qlen=PTF_QLEN, socket_recv_size=16384) retry_call(check_pbh_counters, fargs=[ duthost, outer_ipver, inner_ipver, balancing_test_times, symmetric_hashing, hash_keys, lag_mem_ptf_ports_groups ], tries=5, delay=5) if update_outer_ipver == outer_ipver and update_inner_ipver == inner_ipver: logging.info( "Validate dynamic inner hash Edit Flow for outer {} and inner {} ip versions with" " symmetric_hashing set to {}".format(outer_ipver, inner_ipver, str(symmetric_hashing))) swapped_outer_ipver = "ipv6" if outer_ipver == "ipv4" else "ipv4" swapped_inner_ipver = "ipv6" if inner_ipver == "ipv4" else "ipv4" with allure.step( 'Swap configuration of rules {}_{} with {}_{}'.format( outer_ipver, inner_ipver, swapped_outer_ipver, swapped_inner_ipver)): request.getfixturevalue("update_rule") with allure.step( 'Run again the ptf test InnerHashTest after updating the rules' ): duthost.shell("sonic-clear pbh statistics") ptf_runner(ptfhost, "ptftests", "inner_hash_test.InnerHashTest", platform_dir="ptftests", params=ptf_params, log_file=log_file, qlen=PTF_QLEN, socket_recv_size=16384) retry_call(check_pbh_counters, fargs=[ duthost, swapped_outer_ipver, swapped_inner_ipver, balancing_test_times, symmetric_hashing, hash_keys, lag_mem_ptf_ports_groups ], tries=5, delay=5)