Commit b5e9e929 authored by wenzhong wu's avatar wenzhong wu Committed by Daniel Verkamp
Browse files

test/lib/nvmf/direct: test function direct_ctrlr_admin_identify_nslist



Change-Id: I3fc2c2c76ec6046120b6aa784659e5faedc24b1d
Signed-off-by: default avatarwenzhong wu <wenzhongx.wu@intel.com>
Reviewed-on: https://review.gerrithub.io/361887


Tested-by: default avatarSPDK Automated Test System <sys_sgsw@intel.com>
Reviewed-by: default avatarDaniel Verkamp <daniel.verkamp@intel.com>
parent ad50cc52
Loading
Loading
Loading
Loading
+65 −2
Original line number Diff line number Diff line
@@ -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)