Esempio n. 1
0
    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()
Esempio n. 3
0
    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)
Esempio n. 4
0
    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)