unit/lvol: negative unit tests for lvols load
Signed-off-by: Maciej Szwed <maciej.szwed@intel.com> Change-Id: Id50593446bd3ce5383ca10e917a541a0246cf3a7 Reviewed-on: https://review.gerrithub.io/384076 Tested-by: SPDK Automated Test System <sys_sgsw@intel.com> Reviewed-by: Tomasz Zawadzki <tomasz.zawadzki@intel.com> Reviewed-by: Jim Harris <james.r.harris@intel.com> Reviewed-by: Ben Walker <benjamin.walker@intel.com>
This commit is contained in:
parent
bdba3e7e01
commit
c8b22dd071
@ -59,6 +59,7 @@ struct spdk_blob {
|
|||||||
uint32_t ref;
|
uint32_t ref;
|
||||||
int close_status;
|
int close_status;
|
||||||
int open_status;
|
int open_status;
|
||||||
|
int load_status;
|
||||||
TAILQ_ENTRY(spdk_blob) link;
|
TAILQ_ENTRY(spdk_blob) link;
|
||||||
char uuid[UUID_STRING_LEN];
|
char uuid[UUID_STRING_LEN];
|
||||||
char name[SPDK_LVS_NAME_MAX];
|
char name[SPDK_LVS_NAME_MAX];
|
||||||
@ -96,6 +97,8 @@ spdk_bs_md_iter_next(struct spdk_blob_store *bs, struct spdk_blob **b,
|
|||||||
next = TAILQ_NEXT(*b, link);
|
next = TAILQ_NEXT(*b, link);
|
||||||
if (next == NULL) {
|
if (next == NULL) {
|
||||||
_errno = -ENOENT;
|
_errno = -ENOENT;
|
||||||
|
} else if (next->load_status != 0) {
|
||||||
|
_errno = next->load_status;
|
||||||
}
|
}
|
||||||
|
|
||||||
cb_fn(cb_arg, next, _errno);
|
cb_fn(cb_arg, next, _errno);
|
||||||
@ -111,6 +114,8 @@ spdk_bs_md_iter_first(struct spdk_blob_store *bs,
|
|||||||
first = TAILQ_FIRST(&bs->blobs);
|
first = TAILQ_FIRST(&bs->blobs);
|
||||||
if (first == NULL) {
|
if (first == NULL) {
|
||||||
_errno = -ENOENT;
|
_errno = -ENOENT;
|
||||||
|
} else if (first->load_status != 0) {
|
||||||
|
_errno = first->load_status;
|
||||||
}
|
}
|
||||||
|
|
||||||
cb_fn(cb_arg, first, _errno);
|
cb_fn(cb_arg, first, _errno);
|
||||||
@ -1092,13 +1097,34 @@ lvols_load(void)
|
|||||||
TAILQ_INSERT_TAIL(&dev.bs->blobs, blob2, link);
|
TAILQ_INSERT_TAIL(&dev.bs->blobs, blob2, link);
|
||||||
TAILQ_INSERT_TAIL(&dev.bs->blobs, blob3, link);
|
TAILQ_INSERT_TAIL(&dev.bs->blobs, blob3, link);
|
||||||
|
|
||||||
/* Load lvs again with 3 blobs */
|
/* Load lvs again with 3 blobs, but fail on 1st one */
|
||||||
/* TODO: add some more unit tests where some of these blobs fail to open. */
|
|
||||||
g_lvol_store = NULL;
|
g_lvol_store = NULL;
|
||||||
g_lvserrno = 0;
|
g_lvserrno = 0;
|
||||||
|
blob1->load_status = -1;
|
||||||
|
spdk_lvs_load(&dev.bs_dev, lvol_store_op_with_handle_complete, req);
|
||||||
|
CU_ASSERT(g_lvserrno != 0);
|
||||||
|
CU_ASSERT(g_lvol_store == NULL);
|
||||||
|
|
||||||
|
/* Load lvs again with 3 blobs, but fail on 3rd one */
|
||||||
|
g_lvol_store = NULL;
|
||||||
|
g_lvserrno = 0;
|
||||||
|
blob1->load_status = 0;
|
||||||
|
blob2->load_status = 0;
|
||||||
|
blob3->load_status = -1;
|
||||||
|
spdk_lvs_load(&dev.bs_dev, lvol_store_op_with_handle_complete, req);
|
||||||
|
CU_ASSERT(g_lvserrno != 0);
|
||||||
|
CU_ASSERT(g_lvol_store == NULL);
|
||||||
|
|
||||||
|
/* Load lvs again with 3 blobs, with success */
|
||||||
|
g_lvol_store = NULL;
|
||||||
|
g_lvserrno = 0;
|
||||||
|
blob1->load_status = 0;
|
||||||
|
blob2->load_status = 0;
|
||||||
|
blob3->load_status = 0;
|
||||||
spdk_lvs_load(&dev.bs_dev, lvol_store_op_with_handle_complete, req);
|
spdk_lvs_load(&dev.bs_dev, lvol_store_op_with_handle_complete, req);
|
||||||
CU_ASSERT(g_lvserrno == 0);
|
CU_ASSERT(g_lvserrno == 0);
|
||||||
CU_ASSERT(g_lvol_store != NULL);
|
SPDK_CU_ASSERT_FATAL(g_lvol_store != NULL);
|
||||||
|
CU_ASSERT(!TAILQ_EMPTY(&g_lvol_store->lvols));
|
||||||
|
|
||||||
g_lvserrno = -1;
|
g_lvserrno = -1;
|
||||||
/* rc = */ spdk_lvs_unload(g_lvol_store, lvol_store_op_complete, NULL);
|
/* rc = */ spdk_lvs_unload(g_lvol_store, lvol_store_op_complete, NULL);
|
||||||
|
Loading…
Reference in New Issue
Block a user