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;
|
||||
}
|
||||
|
||||
struct spdk_nvme_ctrlr {
|
||||
|
||||
uint32_t num_ns;
|
||||
};
|
||||
|
||||
void
|
||||
spdk_poller_register(struct spdk_poller **ppoller, spdk_poller_fn fn, void *arg,
|
||||
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
|
||||
spdk_nvme_ctrlr_get_num_ns(struct spdk_nvme_ctrlr *ctrlr)
|
||||
{
|
||||
return 0;
|
||||
return ctrlr->num_ns;
|
||||
}
|
||||
|
||||
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
|
||||
spdk_nvme_ns_is_active(struct spdk_nvme_ns *ns)
|
||||
{
|
||||
return false;
|
||||
return true;
|
||||
}
|
||||
|
||||
int
|
||||
@ -206,6 +211,64 @@ spdk_nvmf_session_async_event_request(struct spdk_nvmf_request *req)
|
||||
static 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)
|
||||
|
Loading…
Reference in New Issue
Block a user