From 214483e8347c4718c9917d24b4fd8497a9feb19b Mon Sep 17 00:00:00 2001 From: Kozlowski Mateusz Date: Wed, 8 Jan 2020 04:21:39 -0500 Subject: [PATCH] test/zone: Cleanup mocked rpc request handling Unify function names and memory handling for create/delete rpc mock functions in unit test for block zone bdev. Signed-off-by: Kozlowski Mateusz Change-Id: Ib8613a78623279447cd5a6b9cf0c686e15b69d32 Reviewed-on: https://review.gerrithub.io/c/spdk/spdk/+/479644 Community-CI: Broadcom SPDK FC-NVMe CI Community-CI: SPDK CI Jenkins Tested-by: SPDK CI Jenkins Reviewed-by: Ben Walker Reviewed-by: Konrad Sztyber Reviewed-by: Jim Harris Reviewed-by: Shuhei Matsumoto --- .../vbdev_zone_block.c/vbdev_zone_block_ut.c | 117 ++++++++++-------- 1 file changed, 63 insertions(+), 54 deletions(-) diff --git a/test/unit/lib/bdev/vbdev_zone_block.c/vbdev_zone_block_ut.c b/test/unit/lib/bdev/vbdev_zone_block.c/vbdev_zone_block_ut.c index b5490d382..ebd1b96f2 100644 --- a/test/unit/lib/bdev/vbdev_zone_block.c/vbdev_zone_block_ut.c +++ b/test/unit/lib/bdev/vbdev_zone_block.c/vbdev_zone_block_ut.c @@ -49,7 +49,6 @@ uint8_t g_rpc_err; uint8_t g_json_decode_obj_construct; static TAILQ_HEAD(, spdk_bdev) g_bdev_list = TAILQ_HEAD_INITIALIZER(g_bdev_list); void *g_rpc_req = NULL; -uint32_t g_rpc_req_size = 0; static struct spdk_thread *g_thread; DEFINE_STUB_V(spdk_bdev_module_list_add, (struct spdk_bdev_module *bdev_module)); @@ -169,20 +168,25 @@ spdk_json_decode_object(const struct spdk_json_val *values, const struct spdk_json_object_decoder *decoders, size_t num_decoders, void *out) { - struct rpc_construct_zone_block *req, *_out; + struct rpc_construct_zone_block *construct, *_construct; + struct rpc_delete_zone_block *delete, *_delete; if (g_json_decode_obj_construct) { - req = g_rpc_req; - _out = out; + construct = g_rpc_req; + _construct = out; - _out->name = strdup(req->name); - SPDK_CU_ASSERT_FATAL(_out->name != NULL); - _out->base_bdev = strdup(req->base_bdev); - SPDK_CU_ASSERT_FATAL(_out->base_bdev != NULL); - _out->zone_capacity = req->zone_capacity; - _out->optimal_open_zones = req->optimal_open_zones; + _construct->name = strdup(construct->name); + SPDK_CU_ASSERT_FATAL(_construct->name != NULL); + _construct->base_bdev = strdup(construct->base_bdev); + SPDK_CU_ASSERT_FATAL(_construct->base_bdev != NULL); + _construct->zone_capacity = construct->zone_capacity; + _construct->optimal_open_zones = construct->optimal_open_zones; } else { - memcpy(out, g_rpc_req, g_rpc_req_size); + delete = g_rpc_req; + _delete = out; + + _delete->name = strdup(delete->name); + SPDK_CU_ASSERT_FATAL(_delete->name != NULL); } return 0; @@ -300,9 +304,14 @@ verify_bdev_present(const char *name, bool presence) } static void -create_test_req(struct rpc_construct_zone_block *r, const char *vbdev_name, const char *base_name, - uint64_t zone_capacity, uint64_t optimal_open_zones, bool create_base_bdev) +initialize_create_req(const char *vbdev_name, const char *base_name, + uint64_t zone_capacity, uint64_t optimal_open_zones, bool create_base_bdev) { + struct rpc_construct_zone_block *r; + + r = g_rpc_req = calloc(1, sizeof(struct rpc_construct_zone_block)); + SPDK_CU_ASSERT_FATAL(r != NULL); + r->name = strdup(vbdev_name); SPDK_CU_ASSERT_FATAL(r->name != NULL); r->base_bdev = strdup(base_name); @@ -313,45 +322,49 @@ create_test_req(struct rpc_construct_zone_block *r, const char *vbdev_name, cons if (create_base_bdev == true) { create_nvme_bdev(); } - g_rpc_req = r; - g_rpc_req_size = sizeof(*r); -} - -static void -free_test_req(struct rpc_construct_zone_block *r) -{ - free(r->name); - free(r->base_bdev); - - g_rpc_req = NULL; -} - -static void -initialize_create_req(struct rpc_construct_zone_block *r, const char *vbdev_name, - const char *base_name, - uint64_t zone_capacity, uint64_t optimal_open_zones, bool create_base_bdev) -{ - create_test_req(r, vbdev_name, base_name, zone_capacity, optimal_open_zones, create_base_bdev); - g_rpc_err = 0; g_json_decode_obj_construct = 1; } static void -create_delete_req(struct rpc_delete_zone_block *r, const char *vbdev_name) +free_create_req(void) { + struct rpc_construct_zone_block *r = g_rpc_req; + + free(r->name); + free(r->base_bdev); + free(r); + g_rpc_req = NULL; +} + +static void +initialize_delete_req(const char *vbdev_name) +{ + struct rpc_delete_zone_block *r; + + r = g_rpc_req = calloc(1, sizeof(struct rpc_delete_zone_block)); + SPDK_CU_ASSERT_FATAL(r != NULL); r->name = strdup(vbdev_name); SPDK_CU_ASSERT_FATAL(r->name != NULL); - g_rpc_req = r; - g_rpc_req_size = sizeof(*r); g_rpc_err = 0; g_json_decode_obj_construct = 0; } static void -verify_zone_config(struct rpc_construct_zone_block *r, bool presence) +free_delete_req(void) { + struct rpc_delete_zone_block *r = g_rpc_req; + + free(r->name); + free(r); + g_rpc_req = NULL; +} + +static void +verify_zone_config(bool presence) +{ + struct rpc_construct_zone_block *r = g_rpc_req; struct bdev_zone_block_config *cfg = NULL; TAILQ_FOREACH(cfg, &g_bdev_configs, link) { @@ -374,8 +387,9 @@ verify_zone_config(struct rpc_construct_zone_block *r, bool presence) } static void -verify_zone_bdev(struct rpc_construct_zone_block *r, bool presence) +verify_zone_bdev(bool presence) { + struct rpc_construct_zone_block *r = g_rpc_req; struct bdev_zone_block *bdev; bool bdev_found = false; @@ -412,27 +426,23 @@ static void send_create_vbdev(char *vdev_name, char *name, uint64_t zone_capacity, uint64_t optimal_open_zones, bool create_bdev, bool success) { - struct rpc_construct_zone_block req; - - initialize_create_req(&req, vdev_name, name, zone_capacity, optimal_open_zones, create_bdev); + initialize_create_req(vdev_name, name, zone_capacity, optimal_open_zones, create_bdev); rpc_zone_block_create(NULL, NULL); CU_ASSERT(g_rpc_err != success); - verify_zone_config(&req, success); - verify_zone_bdev(&req, success); - free_test_req(&req); + verify_zone_config(success); + verify_zone_bdev(success); + free_create_req(); } static void send_delete_vbdev(char *name, bool success) { - struct rpc_delete_zone_block delete_req; - - create_delete_req(&delete_req, name); + initialize_delete_req(name); rpc_zone_block_delete(NULL, NULL); verify_config_present(name, false); verify_bdev_present(name, false); CU_ASSERT(g_rpc_err != success); - g_rpc_req = NULL; + free_delete_req(); } static void @@ -447,7 +457,6 @@ static void test_zone_block_create(void) { struct spdk_bdev *bdev; - struct rpc_construct_zone_block req; char *name = "Nvme0n1"; size_t num_zones = 20; size_t zone_capacity = BLOCK_CNT / num_zones; @@ -457,15 +466,15 @@ test_zone_block_create(void) /* Create zoned virtual device before nvme device */ verify_config_present("zone_dev1", false); verify_bdev_present("zone_dev1", false); - initialize_create_req(&req, "zone_dev1", name, zone_capacity, 1, false); + initialize_create_req("zone_dev1", name, zone_capacity, 1, false); rpc_zone_block_create(NULL, NULL); CU_ASSERT(g_rpc_err == 0); - verify_zone_config(&req, true); - verify_zone_bdev(&req, false); + verify_zone_config(true); + verify_zone_bdev(false); bdev = create_nvme_bdev(); zone_block_examine(bdev); - verify_zone_bdev(&req, true); - free_test_req(&req); + verify_zone_bdev(true); + free_create_req(); /* Delete bdev */ send_delete_vbdev("zone_dev1", true);