コード例 #1
0
def test_show_platform_ssdhealth(duthosts, rand_one_dut_hostname):
    """
    @summary: Verify output of `show platform ssdhealth`
    """
    duthost = duthosts[rand_one_dut_hostname]
    cmd = " ".join([CMD_SHOW_PLATFORM, "ssdhealth"])

    logging.info("Verifying output of '{}' ...".format(cmd))
    ssdhealth_output_lines = duthost.command(cmd)["stdout_lines"]
    ssdhealth_dict = util.parse_colon_speparated_lines(ssdhealth_output_lines)
    expected_fields = set(["Device Model", "Health", "Temperature"])
    actual_fields = set(ssdhealth_dict.keys())

    missing_fields = expected_fields - actual_fields
    pytest_assert(
        len(missing_fields) == 0,
        "Output missing fields: {}".format(repr(missing_fields)))

    unexpected_fields = actual_fields - expected_fields
    pytest_assert(
        len(unexpected_fields) == 0,
        "Unexpected fields in output: {}".format(repr(unexpected_fields)))

    # TODO: Test values against platform-specific expected data instead of testing for missing values
    for key in expected_fields:
        pytest_assert(ssdhealth_dict[key],
                      "Missing value for '{}'".format(key))
コード例 #2
0
def test_show_platform_summary(duthosts, rand_one_dut_hostname):
    """
    @summary: Verify output of `show platform summary`
    """
    duthost = duthosts[rand_one_dut_hostname]
    cmd = " ".join([CMD_SHOW_PLATFORM, "summary"])

    logging.info("Verifying output of '{}' ...".format(cmd))
    summary_output_lines = duthost.command(cmd)["stdout_lines"]
    summary_dict = util.parse_colon_speparated_lines(summary_output_lines)
    expected_fields = set(["Platform", "HwSKU", "ASIC"])
    actual_fields = set(summary_dict.keys())
    new_field = set(["ASIC Count"])

    missing_fields = expected_fields - actual_fields
    pytest_assert(
        len(missing_fields) == 0,
        "Output missing fields: {}".format(repr(missing_fields)))

    unexpected_fields = actual_fields - expected_fields
    pytest_assert(
        ((unexpected_fields == new_field) or len(unexpected_fields) == 0),
        "Unexpected fields in output: {}".format(repr(unexpected_fields)))

    # TODO: Test values against platform-specific expected data instead of testing for missing values
    for key in expected_fields:
        pytest_assert(summary_dict[key], "Missing value for '{}'".format(key))
コード例 #3
0
def test_show_platform_summary(duthosts, enum_rand_one_per_hwsku_hostname, dut_vars):
    """
    @summary: Verify output of `show platform summary`
    """
    duthost = duthosts[enum_rand_one_per_hwsku_hostname]
    cmd = " ".join([CMD_SHOW_PLATFORM, "summary"])

    logging.info("Verifying output of '{}' on '{}'...".format(cmd, duthost.hostname))
    summary_output_lines = duthost.command(cmd)["stdout_lines"]
    summary_dict = util.parse_colon_speparated_lines(summary_output_lines)
    expected_fields = set(["Platform", "HwSKU", "ASIC"])
    actual_fields = set(summary_dict.keys())
    new_field = set(["ASIC Count"])

    missing_fields = expected_fields - actual_fields
    pytest_assert(len(missing_fields) == 0, "Output missing fields: {} on '{}'".format(repr(missing_fields), duthost.hostname))

    unexpected_fields = actual_fields - expected_fields
    pytest_assert(((unexpected_fields == new_field) or len(unexpected_fields) == 0),
                  "Unexpected fields in output: {}  on '{}'".format(repr(unexpected_fields), duthost.hostname))

    # Testing for missing values
    for key in expected_fields:
        pytest_assert(summary_dict[key], "Missing value for '{}' on '{}'".format(key, duthost.hostname))

    # Testings values against values defined in the inventory if present in the inventory.
    #    hwsku based on 'hwsku' or 'sonic_hwsku' inventory variable.
    #    platform based on 'sonic_hw_platform'  inventory variable.
    #    asic based on 'asic_type'  inventory variable.
    #    num_asic on 'num_asics' inventory variable
    expected_hwsku = dut_vars['hwsku'] if 'hwsku' in dut_vars else None
    if not expected_hwsku:
        # Lets try 'sonic_hwsku' as well
        expected_hwsku = dut_vars['sonic_hwsku'] if 'sonic_hwsku' in dut_vars else None
    expected_platform = dut_vars['sonic_hw_platform'] if 'sonic_hw_platform' in dut_vars else None
    expected_asic = dut_vars['asic_type'] if 'asic_type' in dut_vars else None
    expected_num_asic = str(dut_vars['num_asics']) if 'num_asics' in dut_vars else None

    expected_fields_values = {expected_platform, expected_hwsku, expected_asic}
    if len(unexpected_fields) != 0:
        expected_fields_values.add(expected_num_asic)

    actual_fields_values = set(summary_dict.values())
    diff_fields_values = expected_fields_values.difference(actual_fields_values)
    pytest_assert((len(diff_fields_values) == 0 or (len(diff_fields_values) == 1 and diff_fields_values.pop() is None)),
                  "Unexpected value of fields, actual={}, expected={} on host '{}'".format(actual_fields_values, expected_fields_values, duthost.hostname))