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 <mateusz.kozlowski@intel.com>
Change-Id: Ib8613a78623279447cd5a6b9cf0c686e15b69d32
Reviewed-on: https://review.gerrithub.io/c/spdk/spdk/+/479644
Community-CI: Broadcom SPDK FC-NVMe CI <spdk-ci.pdl@broadcom.com>
Community-CI: SPDK CI Jenkins <sys_sgci@intel.com>
Tested-by: SPDK CI Jenkins <sys_sgci@intel.com>
Reviewed-by: Ben Walker <benjamin.walker@intel.com>
Reviewed-by: Konrad Sztyber <konrad.sztyber@intel.com>
Reviewed-by: Jim Harris <james.r.harris@intel.com>
Reviewed-by: Shuhei Matsumoto <shuhei.matsumoto.xt@hitachi.com>
This commit is contained in:
Kozlowski Mateusz 2020-01-08 04:21:39 -05:00 committed by Tomasz Zawadzki
parent 351c38d570
commit 214483e834

View File

@ -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);