diff --git a/test/unit/lib/idxd/idxd.c/idxd_ut.c b/test/unit/lib/idxd/idxd.c/idxd_ut.c index dfb817e7c..820fc76b6 100644 --- a/test/unit/lib/idxd/idxd.c/idxd_ut.c +++ b/test/unit/lib/idxd/idxd.c/idxd_ut.c @@ -37,6 +37,8 @@ #include "common/lib/test_env.c" #include "idxd/idxd.c" +#define FAKE_REG_SIZE 1024 + int spdk_pci_enumerate(struct spdk_pci_driver *driver, spdk_pci_enum_cb enum_cb, void *enum_ctx) { @@ -81,7 +83,31 @@ mock_movdir64b(void *dst, const void *src) return; } -#define FAKE_REG_SIZE 1024 +static int +test_idxd_reset_dev(void) +{ + struct spdk_idxd_device idxd = {}; + union idxd_cmdsts_reg *fake_cmd_status_reg; + int rc; + + idxd.reg_base = calloc(1, FAKE_REG_SIZE); + SPDK_CU_ASSERT_FATAL(idxd.reg_base != NULL); + fake_cmd_status_reg = idxd.reg_base + IDXD_CMDSTS_OFFSET; + + /* Test happy path */ + rc = idxd_reset_dev(&idxd); + CU_ASSERT(rc == 0); + + /* Test error reported path */ + fake_cmd_status_reg->err = 1; + rc = idxd_reset_dev(&idxd); + CU_ASSERT(rc == -EINVAL); + + free(idxd.reg_base); + + return 0; +} + static int test_idxd_wait_cmd(void) { @@ -162,6 +188,7 @@ int main(int argc, char **argv) CU_ADD_TEST(suite, test_spdk_idxd_reconfigure_chan); CU_ADD_TEST(suite, test_spdk_idxd_set_config); CU_ADD_TEST(suite, test_idxd_wait_cmd); + CU_ADD_TEST(suite, test_idxd_reset_dev); CU_basic_set_mode(CU_BRM_VERBOSE); CU_basic_run_tests();