unittest/nvme_ns: increase code coverage for nvme_ns's several func

include test_nvme_ns_set_identify_data,
test_spdk_nvme_ns_get_values(Most functions that simply get values),
test_spdk_nvme_ns_is_active,
and spdk_nvme_ns_supports(Judge whether extended_lba and compare are supported).
The above func is completed.

Signed-off-by: ChengqiangMeng <chengqiangx.meng@intel.com>
Change-Id: I916173a195692045ee0ee3fa408a1696e0eb5b1e
Reviewed-on: https://review.spdk.io/gerrit/c/spdk/spdk/+/6511
Tested-by: SPDK CI Jenkins <sys_sgci@intel.com>
Reviewed-by: Changpeng Liu <changpeng.liu@intel.com>
Reviewed-by: Aleksey Marchuk <alexeymar@mellanox.com>
Reviewed-by: Shuhei Matsumoto <shuhei.matsumoto.xt@hitachi.com>
Community-CI: Mellanox Build Bot
This commit is contained in:
ChengqiangMeng 2021-03-03 13:09:25 +08:00 committed by Tomasz Zawadzki
parent 22412af1d2
commit 001afcbdb7

View File

@ -243,6 +243,164 @@ test_nvme_ns_data(void)
CU_ASSERT(nsdata == spdk_nvme_ns_get_data(&ns));
}
static void
test_nvme_ns_set_identify_data(void)
{
struct spdk_nvme_ns ns = {};
struct spdk_nvme_ctrlr ctrlr = {};
ns.id = 1;
ns.ctrlr = &ctrlr;
ns.ctrlr->cdata.oncs.dsm = 1;
ns.ctrlr->cdata.oncs.compare = 1;
ns.ctrlr->cdata.vwc.present = 1;
ns.ctrlr->cdata.oncs.write_zeroes = 1;
ns.ctrlr->cdata.oncs.write_unc = 1;
ns.ctrlr->min_page_size = 1024;
ns.ctrlr->max_xfer_size = 65536;
ns.nsdata.flbas.extended = 1;
ns.nsdata.nsrescap.raw = 1;
ns.nsdata.dps.pit = SPDK_NVME_FMT_NVM_PROTECTION_TYPE1;
ns.nsdata.flbas.format = 0;
ns.nsdata.lbaf[0].lbads = 9;
ns.nsdata.lbaf[0].ms = 512;
/* case1: nsdata->noiob > 0 */
ns.nsdata.noiob = 1;
nvme_ns_set_identify_data(&ns);
CU_ASSERT(spdk_nvme_ns_get_optimal_io_boundary(&ns) == 1)
CU_ASSERT(spdk_nvme_ns_get_sector_size(&ns) == 512);
CU_ASSERT(spdk_nvme_ns_get_extended_sector_size(&ns) == 1024);
CU_ASSERT(spdk_nvme_ns_get_md_size(&ns) == 512);
CU_ASSERT(spdk_nvme_ns_get_max_io_xfer_size(&ns) == 65536);
CU_ASSERT(ns.sectors_per_max_io == 64);
CU_ASSERT(ns.sectors_per_max_io_no_md == 128);
CU_ASSERT(spdk_nvme_ns_get_pi_type(&ns) == SPDK_NVME_FMT_NVM_PROTECTION_TYPE1);
CU_ASSERT(spdk_nvme_ns_get_flags(&ns) & SPDK_NVME_NS_EXTENDED_LBA_SUPPORTED);
CU_ASSERT(spdk_nvme_ns_get_flags(&ns) & SPDK_NVME_NS_RESERVATION_SUPPORTED);
CU_ASSERT(spdk_nvme_ns_get_flags(&ns) & SPDK_NVME_NS_COMPARE_SUPPORTED);
CU_ASSERT(spdk_nvme_ns_get_flags(&ns) & SPDK_NVME_NS_FLUSH_SUPPORTED);
CU_ASSERT(spdk_nvme_ns_get_flags(&ns) & SPDK_NVME_NS_WRITE_ZEROES_SUPPORTED);
CU_ASSERT(spdk_nvme_ns_get_flags(&ns) & SPDK_NVME_NS_WRITE_UNCORRECTABLE_SUPPORTED);
CU_ASSERT(spdk_nvme_ns_get_flags(&ns) & SPDK_NVME_NS_RESERVATION_SUPPORTED);
CU_ASSERT(spdk_nvme_ns_get_flags(&ns) & SPDK_NVME_NS_DPS_PI_SUPPORTED);
}
static void
test_spdk_nvme_ns_get_values(void)
{
struct spdk_nvme_ns ns = {};
struct spdk_nvme_ctrlr nsctrlr = {};
ns.ctrlr = &nsctrlr;
/* case1: spdk_nvme_ns_get_id */
ns.id = 1;
CU_ASSERT(spdk_nvme_ns_get_id(&ns) == 1);
/* case2: spdk_nvme_ns_get_ctrlr */
CU_ASSERT(spdk_nvme_ns_get_ctrlr(&ns) == &nsctrlr);
/* case3: spdk_nvme_ns_get_max_io_xfer_size */
ns.ctrlr->max_xfer_size = 65536;
CU_ASSERT(spdk_nvme_ns_get_max_io_xfer_size(&ns) == 65536);
/* case4: spdk_nvme_ns_get_sector_size */
ns.sector_size = 512;
CU_ASSERT(spdk_nvme_ns_get_sector_size(&ns) == 512);
/* case5: spdk_nvme_ns_get_extended_sector_size */
ns.extended_lba_size = 512;
CU_ASSERT(spdk_nvme_ns_get_extended_sector_size(&ns) == 512);
/* case6: spdk_nvme_ns_get_num_sectors */
ns.nsdata.nsze = 1024;
CU_ASSERT(spdk_nvme_ns_get_num_sectors(&ns) == 1024);
/* case7: spdk_nvme_ns_get_size */
CU_ASSERT(spdk_nvme_ns_get_size(&ns) == 524288);
/* case8: spdk_nvme_ns_get_flags */
ns.flags = 255;
CU_ASSERT(spdk_nvme_ns_get_flags(&ns) == 255);
/* case9: spdk_nvme_ns_get_pi_type */
ns.pi_type = SPDK_NVME_FMT_NVM_PROTECTION_DISABLE;
CU_ASSERT(spdk_nvme_ns_get_pi_type(&ns) == SPDK_NVME_FMT_NVM_PROTECTION_DISABLE);
/* case10: spdk_nvme_ns_get_md_size */
ns.md_size = 512;
CU_ASSERT(spdk_nvme_ns_get_md_size(&ns) == 512);
/* case11: spdk_nvme_ns_get_data */
CU_ASSERT(spdk_nvme_ns_get_data(&ns) != NULL);
/* case12: spdk_nvme_ns_get_optimal_io_boundary */
ns.sectors_per_stripe = 1;
CU_ASSERT(spdk_nvme_ns_get_optimal_io_boundary(&ns) == 1);
/* case13: spdk_nvme_ns_get_dealloc_logical_block_read_value */
ns.ctrlr->quirks = NVME_QUIRK_READ_ZERO_AFTER_DEALLOCATE | NVME_INTEL_QUIRK_WRITE_LATENCY;
ns.nsdata.dlfeat.bits.read_value = SPDK_NVME_DEALLOC_NOT_REPORTED;
CU_ASSERT(spdk_nvme_ns_get_dealloc_logical_block_read_value(&ns) == SPDK_NVME_DEALLOC_READ_00);
ns.ctrlr->quirks = NVME_INTEL_QUIRK_READ_LATENCY;
CU_ASSERT(spdk_nvme_ns_get_dealloc_logical_block_read_value(&ns) == SPDK_NVME_DEALLOC_NOT_REPORTED);
/* case14: spdk_nvme_ns_get_csi */
ns.csi = SPDK_NVME_CSI_NVM;
CU_ASSERT(spdk_nvme_ns_get_csi(&ns) == SPDK_NVME_CSI_NVM);
/* case15: spdk_nvme_ns_get_ana_group_id */
ns.ana_group_id = 15;
CU_ASSERT(spdk_nvme_ns_get_ana_group_id(&ns) == 15);
/* case16: spdk_nvme_ns_get_ana_state */
ns.ana_state = SPDK_NVME_ANA_OPTIMIZED_STATE;
CU_ASSERT(spdk_nvme_ns_get_ana_state(&ns) == SPDK_NVME_ANA_OPTIMIZED_STATE);
}
static void
test_spdk_nvme_ns_is_active(void)
{
struct spdk_nvme_ns ns = {};
/* case1: nsdata->id == 0 return false */
ns.id = 0;
CU_ASSERT(spdk_nvme_ns_is_active(&ns) == false);
/* case2: nsdata->ncap == 0 return false */
ns.id = 1;
ns.nsdata.ncap = 0;
CU_ASSERT(spdk_nvme_ns_is_active(&ns) == false);
/* case3: ns->ncap != 0 return true */
ns.nsdata.ncap = 1;
CU_ASSERT(spdk_nvme_ns_is_active(&ns) == true);
}
static void
spdk_nvme_ns_supports(void)
{
struct spdk_nvme_ns ns = {};
/* case1: spdk_nvme_ns_supports_extended_lba */
ns.flags = SPDK_NVME_NS_DEALLOCATE_SUPPORTED;
CU_ASSERT(spdk_nvme_ns_supports_extended_lba(&ns) == false);
ns.flags = SPDK_NVME_NS_EXTENDED_LBA_SUPPORTED | SPDK_NVME_NS_DEALLOCATE_SUPPORTED;
CU_ASSERT(spdk_nvme_ns_supports_extended_lba(&ns) == true);
/* case2: spdk_nvme_ns_supports_compare */
ns.flags = SPDK_NVME_NS_DEALLOCATE_SUPPORTED;
CU_ASSERT(spdk_nvme_ns_supports_compare(&ns) == false);
ns.flags = SPDK_NVME_NS_COMPARE_SUPPORTED | SPDK_NVME_NS_DEALLOCATE_SUPPORTED;
CU_ASSERT(spdk_nvme_ns_supports_compare(&ns) == true);
}
int main(int argc, char **argv)
{
CU_pSuite suite = NULL;
@ -257,6 +415,10 @@ int main(int argc, char **argv)
CU_ADD_TEST(suite, test_nvme_ns_uuid);
CU_ADD_TEST(suite, test_nvme_ns_csi);
CU_ADD_TEST(suite, test_nvme_ns_data);
CU_ADD_TEST(suite, test_nvme_ns_set_identify_data);
CU_ADD_TEST(suite, test_spdk_nvme_ns_get_values);
CU_ADD_TEST(suite, test_spdk_nvme_ns_is_active);
CU_ADD_TEST(suite, spdk_nvme_ns_supports);
CU_basic_set_mode(CU_BRM_VERBOSE);
CU_basic_run_tests();