test/lib/nvmf/direct: test function direct_ctrlr_admin_identify_nslist
Change-Id: I3fc2c2c76ec6046120b6aa784659e5faedc24b1d Signed-off-by: wenzhong wu <wenzhongx.wu@intel.com> Reviewed-on: https://review.gerrithub.io/361887 Tested-by: SPDK Automated Test System <sys_sgsw@intel.com> Reviewed-by: Daniel Verkamp <daniel.verkamp@intel.com>
This commit is contained in:
parent
ad50cc52fb
commit
b5e9e92934
@ -45,6 +45,11 @@ spdk_env_get_current_core(void)
|
|||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
struct spdk_nvme_ctrlr {
|
||||||
|
|
||||||
|
uint32_t num_ns;
|
||||||
|
};
|
||||||
|
|
||||||
void
|
void
|
||||||
spdk_poller_register(struct spdk_poller **ppoller, spdk_poller_fn fn, void *arg,
|
spdk_poller_register(struct spdk_poller **ppoller, spdk_poller_fn fn, void *arg,
|
||||||
uint32_t lcore, uint64_t period_microseconds)
|
uint32_t lcore, uint64_t period_microseconds)
|
||||||
@ -73,7 +78,7 @@ spdk_trace_record(uint16_t tpoint_id, uint16_t poller_id, uint32_t size, uint64_
|
|||||||
uint32_t
|
uint32_t
|
||||||
spdk_nvme_ctrlr_get_num_ns(struct spdk_nvme_ctrlr *ctrlr)
|
spdk_nvme_ctrlr_get_num_ns(struct spdk_nvme_ctrlr *ctrlr)
|
||||||
{
|
{
|
||||||
return 0;
|
return ctrlr->num_ns;
|
||||||
}
|
}
|
||||||
|
|
||||||
const struct spdk_nvme_ctrlr_data *
|
const struct spdk_nvme_ctrlr_data *
|
||||||
@ -107,7 +112,7 @@ struct spdk_nvme_ns *spdk_nvme_ctrlr_get_ns(struct spdk_nvme_ctrlr *ctrlr, uint3
|
|||||||
bool
|
bool
|
||||||
spdk_nvme_ns_is_active(struct spdk_nvme_ns *ns)
|
spdk_nvme_ns_is_active(struct spdk_nvme_ns *ns)
|
||||||
{
|
{
|
||||||
return false;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
int
|
int
|
||||||
@ -206,6 +211,64 @@ spdk_nvmf_session_async_event_request(struct spdk_nvmf_request *req)
|
|||||||
static void
|
static void
|
||||||
nvmf_test_nvmf_direct_ctrlr_admin_identify_nslist(void)
|
nvmf_test_nvmf_direct_ctrlr_admin_identify_nslist(void)
|
||||||
{
|
{
|
||||||
|
int ret;
|
||||||
|
union nvmf_h2c_msg cmd;
|
||||||
|
struct spdk_nvme_ns_list ns_list = {};
|
||||||
|
struct spdk_nvme_ctrlr ctrlr = {};
|
||||||
|
struct spdk_nvmf_request req = {};
|
||||||
|
|
||||||
|
req.length = 1;
|
||||||
|
req.data = &ns_list;
|
||||||
|
req.cmd = &cmd;
|
||||||
|
|
||||||
|
/* set req_ns_id greater or equal to 0xfffffffeUL */
|
||||||
|
req.cmd->nvme_cmd.nsid = 0xfffffffeUL;
|
||||||
|
ret = nvmf_direct_ctrlr_admin_identify_nslist(&ctrlr, &req);
|
||||||
|
CU_ASSERT(ret == -1);
|
||||||
|
|
||||||
|
/* set req_ns_id is smaller than 0xfffffffeUL */
|
||||||
|
ctrlr.num_ns = 0;
|
||||||
|
req.cmd->nvme_cmd.nsid = 0xfffffffdUL;
|
||||||
|
ret = nvmf_direct_ctrlr_admin_identify_nslist(&ctrlr, &req);
|
||||||
|
CU_ASSERT(ret == 0);
|
||||||
|
|
||||||
|
/* set req_ns_id is 0 and num_ns is larger than ns_list Array size */
|
||||||
|
req.cmd->nvme_cmd.nsid = 0;
|
||||||
|
ctrlr.num_ns = 0xffffffffUL;
|
||||||
|
ret = nvmf_direct_ctrlr_admin_identify_nslist(&ctrlr, &req);
|
||||||
|
CU_ASSERT(ret == 0);
|
||||||
|
CU_ASSERT(ns_list.ns_list[0] == 1);
|
||||||
|
CU_ASSERT(ns_list.ns_list[1023] == 1024);
|
||||||
|
|
||||||
|
/* set req_ns_id is 0 and num_ns is smaller than ns_list Array size */
|
||||||
|
memset(ns_list.ns_list, 0, sizeof(ns_list));
|
||||||
|
req.cmd->nvme_cmd.nsid = 0;
|
||||||
|
ctrlr.num_ns = 100;
|
||||||
|
ret = nvmf_direct_ctrlr_admin_identify_nslist(&ctrlr, &req);
|
||||||
|
CU_ASSERT(ret == 0);
|
||||||
|
CU_ASSERT(ns_list.ns_list[0] == 1);
|
||||||
|
CU_ASSERT(ns_list.ns_list[99] == 100);
|
||||||
|
|
||||||
|
/* set req_ns_id is non zero value and num_ns is larger than ns_list Array size */
|
||||||
|
memset(ns_list.ns_list, 0, sizeof(ns_list));
|
||||||
|
req.cmd->nvme_cmd.nsid = 8;
|
||||||
|
ctrlr.num_ns = 0xffffffffUL;
|
||||||
|
ret = nvmf_direct_ctrlr_admin_identify_nslist(&ctrlr, &req);
|
||||||
|
CU_ASSERT(ret == 0);
|
||||||
|
CU_ASSERT(ns_list.ns_list[0] == 9);
|
||||||
|
CU_ASSERT(ns_list.ns_list[1023] == 1032);
|
||||||
|
|
||||||
|
/* set req_ns_id is non zero value and num_ns is smaller than ns_list Array size */
|
||||||
|
memset(ns_list.ns_list, 0, sizeof(ns_list));
|
||||||
|
req.cmd->nvme_cmd.nsid = 8;
|
||||||
|
ctrlr.num_ns = 100;
|
||||||
|
ret = nvmf_direct_ctrlr_admin_identify_nslist(&ctrlr, &req);
|
||||||
|
CU_ASSERT(ret == 0);
|
||||||
|
CU_ASSERT(ns_list.ns_list[0] == 9);
|
||||||
|
CU_ASSERT(ns_list.ns_list[91] == 100);
|
||||||
|
CU_ASSERT(ns_list.ns_list[92] == 0);
|
||||||
|
CU_ASSERT(ns_list.ns_list[1023] == 0);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
int main(int argc, char **argv)
|
int main(int argc, char **argv)
|
||||||
|
Loading…
Reference in New Issue
Block a user