ut/blob: add setup/clean for blob creation

Added new setup/cleanup functions for a suite of
unit tests that use a particular blob through out the
tests.

This simplifies the contents of particular UTs,
and brings forward focus of each UT.

Signed-off-by: Tomasz Zawadzki <tomasz.zawadzki@intel.com>
Change-Id: Ib7d69b90fcbe8e6a0ba303475fcbaeb90fa110a7
Reviewed-on: https://review.spdk.io/gerrit/c/spdk/spdk/+/945
Tested-by: SPDK CI Jenkins <sys_sgci@intel.com>
Reviewed-by: Paul Luse <paul.e.luse@intel.com>
Reviewed-by: Ben Walker <benjamin.walker@intel.com>
Reviewed-by: Shuhei Matsumoto <shuhei.matsumoto.xt@hitachi.com>
This commit is contained in:
Tomasz Zawadzki 2020-02-18 05:49:53 -05:00
parent 104d4c0a57
commit aba9841212

View File

@ -1139,13 +1139,11 @@ static void
blob_write(void)
{
struct spdk_blob_store *bs = g_bs;
struct spdk_blob *blob;
struct spdk_blob *blob = g_blob;
struct spdk_io_channel *channel;
uint64_t pages_per_cluster;
uint8_t payload[10 * 4096];
blob = ut_blob_create_and_open(bs, NULL);
pages_per_cluster = spdk_bs_get_cluster_size(bs) / spdk_bs_get_page_size(bs);
channel = spdk_bs_alloc_io_channel(bs);
@ -1187,15 +1185,13 @@ blob_write(void)
spdk_bs_free_io_channel(channel);
poll_threads();
ut_blob_close_and_delete(bs, blob);
}
static void
blob_read(void)
{
struct spdk_blob_store *bs = g_bs;
struct spdk_blob *blob;
struct spdk_blob *blob = g_blob;
struct spdk_io_channel *channel;
uint64_t pages_per_cluster;
uint8_t payload[10 * 4096];
@ -1205,8 +1201,6 @@ blob_read(void)
channel = spdk_bs_alloc_io_channel(bs);
CU_ASSERT(channel != NULL);
blob = ut_blob_create_and_open(bs, NULL);
/* Read from a blob with 0 size */
spdk_blob_io_read(blob, channel, payload, 0, 1, blob_op_complete, NULL);
poll_threads();
@ -1243,15 +1237,13 @@ blob_read(void)
spdk_bs_free_io_channel(channel);
poll_threads();
ut_blob_close_and_delete(bs, blob);
}
static void
blob_rw_verify(void)
{
struct spdk_blob_store *bs = g_bs;
struct spdk_blob *blob;
struct spdk_blob *blob = g_blob;
struct spdk_io_channel *channel;
uint8_t payload_read[10 * 4096];
uint8_t payload_write[10 * 4096];
@ -1259,8 +1251,6 @@ blob_rw_verify(void)
channel = spdk_bs_alloc_io_channel(bs);
CU_ASSERT(channel != NULL);
blob = ut_blob_create_and_open(bs, NULL);
spdk_blob_resize(blob, 32, blob_op_complete, NULL);
poll_threads();
CU_ASSERT(g_bserrno == 0);
@ -1278,8 +1268,6 @@ blob_rw_verify(void)
spdk_bs_free_io_channel(channel);
poll_threads();
ut_blob_close_and_delete(bs, blob);
}
static void
@ -1372,7 +1360,7 @@ static void
blob_rw_verify_iov_nomem(void)
{
struct spdk_blob_store *bs = g_bs;
struct spdk_blob *blob;
struct spdk_blob *blob = g_blob;
struct spdk_io_channel *channel;
uint8_t payload_write[10 * 4096];
struct iovec iov_write[3];
@ -1381,8 +1369,6 @@ blob_rw_verify_iov_nomem(void)
channel = spdk_bs_alloc_io_channel(bs);
CU_ASSERT(channel != NULL);
blob = ut_blob_create_and_open(bs, NULL);
spdk_blob_resize(blob, 2, blob_op_complete, NULL);
poll_threads();
CU_ASSERT(g_bserrno == 0);
@ -1407,15 +1393,13 @@ blob_rw_verify_iov_nomem(void)
spdk_bs_free_io_channel(channel);
poll_threads();
ut_blob_close_and_delete(bs, blob);
}
static void
blob_rw_iov_read_only(void)
{
struct spdk_blob_store *bs = g_bs;
struct spdk_blob *blob;
struct spdk_blob *blob = g_blob;
struct spdk_io_channel *channel;
uint8_t payload_read[4096];
uint8_t payload_write[4096];
@ -1425,8 +1409,6 @@ blob_rw_iov_read_only(void)
channel = spdk_bs_alloc_io_channel(bs);
CU_ASSERT(channel != NULL);
blob = ut_blob_create_and_open(bs, NULL);
spdk_blob_resize(blob, 2, blob_op_complete, NULL);
poll_threads();
CU_ASSERT(g_bserrno == 0);
@ -1448,8 +1430,6 @@ blob_rw_iov_read_only(void)
spdk_bs_free_io_channel(channel);
poll_threads();
ut_blob_close_and_delete(bs, blob);
}
static void
@ -1920,8 +1900,8 @@ static void
blob_xattr(void)
{
struct spdk_blob_store *bs = g_bs;
struct spdk_blob *blob;
spdk_blob_id blobid;
struct spdk_blob *blob = g_blob;
spdk_blob_id blobid = spdk_blob_get_id(blob);
uint64_t length;
int rc;
const char *name1, *name2;
@ -1929,9 +1909,6 @@ blob_xattr(void)
size_t value_len;
struct spdk_xattr_names *names;
blob = ut_blob_create_and_open(bs, NULL);
blobid = spdk_blob_get_id(blob);
/* Test that set_xattr fails if md_ro flag is set. */
blob->md_ro = true;
rc = spdk_blob_set_xattr(blob, "name", "log.txt", strlen("log.txt") + 1);
@ -2029,8 +2006,6 @@ blob_xattr(void)
CU_ASSERT(rc == 0);
CU_ASSERT((blob->invalid_flags & SPDK_BLOB_INTERNAL_XATTR) == 0);
ut_blob_close_and_delete(bs, blob);
}
static void
@ -2964,7 +2939,7 @@ blob_dirty_shutdown(void)
int index;
struct spdk_blob_store *bs = g_bs;
spdk_blob_id blobid1, blobid2, blobid3;
struct spdk_blob *blob;
struct spdk_blob *blob = g_blob;
uint64_t length;
uint64_t free_clusters;
const void *value;
@ -2974,7 +2949,6 @@ blob_dirty_shutdown(void)
struct spdk_blob_opts blob_opts;
/* Create first blob */
blob = ut_blob_create_and_open(bs, NULL);
blobid1 = spdk_blob_get_id(blob);
/* Set some xattrs */
@ -3221,8 +3195,6 @@ blob_dirty_shutdown(void)
blob = g_blob;
CU_ASSERT(free_clusters == spdk_bs_free_cluster_count(bs));
ut_blob_close_and_delete(bs, blob);
}
static void
@ -6478,9 +6450,29 @@ ut_blob_close_and_delete(struct spdk_blob_store *bs, struct spdk_blob *blob)
g_bserrno = -1;
}
static void
suite_blob_setup(void)
{
suite_bs_setup();
CU_ASSERT(g_bs != NULL);
g_blob = ut_blob_create_and_open(g_bs, NULL);
CU_ASSERT(g_blob != NULL);
}
static void
suite_blob_cleanup(void)
{
ut_blob_close_and_delete(g_bs, g_blob);
CU_ASSERT(g_blob == NULL);
suite_bs_cleanup();
CU_ASSERT(g_bs == NULL);
}
int main(int argc, char **argv)
{
CU_pSuite suite, suite_bs;
CU_pSuite suite, suite_bs, suite_blob;
unsigned int num_failures;
CU_set_error_action(CUEA_ABORT);
@ -6489,6 +6481,8 @@ int main(int argc, char **argv)
suite = CU_add_suite("blob", NULL, NULL);
suite_bs = CU_add_suite_with_setup_and_teardown("blob_bs", NULL, NULL,
suite_bs_setup, suite_bs_cleanup);
suite_blob = CU_add_suite_with_setup_and_teardown("blob_blob", NULL, NULL,
suite_blob_setup, suite_blob_cleanup);
CU_ADD_TEST(suite, blob_init);
CU_ADD_TEST(suite_bs, blob_open);
@ -6503,15 +6497,15 @@ int main(int argc, char **argv)
CU_ADD_TEST(suite, blob_read_only);
CU_ADD_TEST(suite_bs, channel_ops);
CU_ADD_TEST(suite_bs, blob_super);
CU_ADD_TEST(suite_bs, blob_write);
CU_ADD_TEST(suite_bs, blob_read);
CU_ADD_TEST(suite_bs, blob_rw_verify);
CU_ADD_TEST(suite_blob, blob_write);
CU_ADD_TEST(suite_blob, blob_read);
CU_ADD_TEST(suite_blob, blob_rw_verify);
CU_ADD_TEST(suite_bs, blob_rw_verify_iov);
CU_ADD_TEST(suite_bs, blob_rw_verify_iov_nomem);
CU_ADD_TEST(suite_bs, blob_rw_iov_read_only);
CU_ADD_TEST(suite_blob, blob_rw_verify_iov_nomem);
CU_ADD_TEST(suite_blob, blob_rw_iov_read_only);
CU_ADD_TEST(suite_bs, blob_unmap);
CU_ADD_TEST(suite_bs, blob_iter);
CU_ADD_TEST(suite_bs, blob_xattr);
CU_ADD_TEST(suite_blob, blob_xattr);
CU_ADD_TEST(suite, bs_load);
CU_ADD_TEST(suite_bs, bs_load_pending_removal);
CU_ADD_TEST(suite, bs_load_custom_cluster_size);
@ -6525,7 +6519,7 @@ int main(int argc, char **argv)
CU_ADD_TEST(suite, blob_serialize);
CU_ADD_TEST(suite_bs, blob_crc);
CU_ADD_TEST(suite, super_block_crc);
CU_ADD_TEST(suite_bs, blob_dirty_shutdown);
CU_ADD_TEST(suite_blob, blob_dirty_shutdown);
CU_ADD_TEST(suite_bs, blob_flags);
CU_ADD_TEST(suite_bs, bs_version);
CU_ADD_TEST(suite_bs, blob_set_xattrs);