From eb6a2d872d5088df6eeec8bfd413117e2ec81ce0 Mon Sep 17 00:00:00 2001 From: KanKuo Date: Wed, 7 Dec 2022 13:59:52 +0800 Subject: [PATCH] UT/bdev/bdev.c:add bdev_compare test Signed-off-by: Kuo Kan Change-Id: Ib3d33cefc78f543e157ea552ee88f0514e305054 Reviewed-on: https://review.spdk.io/gerrit/c/spdk/spdk/+/15795 Reviewed-by: Ben Walker Tested-by: SPDK CI Jenkins Community-CI: Mellanox Build Bot Reviewed-by: Jim Harris --- test/unit/lib/bdev/bdev.c/bdev_ut.c | 33 +++++++++++++++++++++++++++-- 1 file changed, 31 insertions(+), 2 deletions(-) diff --git a/test/unit/lib/bdev/bdev.c/bdev_ut.c b/test/unit/lib/bdev/bdev.c/bdev_ut.c index 33e967271..602beecb4 100644 --- a/test/unit/lib/bdev/bdev.c/bdev_ut.c +++ b/test/unit/lib/bdev/bdev.c/bdev_ut.c @@ -3608,7 +3608,7 @@ _bdev_compare(bool emulated) compare_iov.iov_base = aa_buf; compare_iov.iov_len = sizeof(aa_buf); - /* 1. successful compare */ + /* 1. successful comparev */ expected_io = ut_alloc_expected_io(expected_io_type, offset, num_blocks, 0); TAILQ_INSERT_TAIL(&g_bdev_ut_channel->expected_io, expected_io, link); @@ -3622,7 +3622,7 @@ _bdev_compare(bool emulated) CU_ASSERT(g_io_done == true); CU_ASSERT(g_io_status == SPDK_BDEV_IO_STATUS_SUCCESS); - /* 2. miscompare */ + /* 2. miscompare comparev */ expected_io = ut_alloc_expected_io(expected_io_type, offset, num_blocks, 0); TAILQ_INSERT_TAIL(&g_bdev_ut_channel->expected_io, expected_io, link); @@ -3636,6 +3636,35 @@ _bdev_compare(bool emulated) CU_ASSERT(g_io_done == true); CU_ASSERT(g_io_status == SPDK_BDEV_IO_STATUS_MISCOMPARE); + /* 3. successful compare */ + g_io_exp_status = SPDK_BDEV_IO_STATUS_SUCCESS; + expected_io = ut_alloc_expected_io(expected_io_type, offset, num_blocks, 0); + TAILQ_INSERT_TAIL(&g_bdev_ut_channel->expected_io, expected_io, link); + + g_io_done = false; + g_compare_read_buf = aa_buf; + g_compare_read_buf_len = sizeof(aa_buf); + rc = spdk_bdev_compare_blocks(desc, ioch, aa_buf, offset, num_blocks, io_done, NULL); + CU_ASSERT_EQUAL(rc, 0); + num_completed = stub_complete_io(1); + CU_ASSERT_EQUAL(num_completed, 1); + CU_ASSERT(g_io_done == true); + CU_ASSERT(g_io_status == SPDK_BDEV_IO_STATUS_SUCCESS); + + /* 4. miscompare compare */ + expected_io = ut_alloc_expected_io(expected_io_type, offset, num_blocks, 0); + TAILQ_INSERT_TAIL(&g_bdev_ut_channel->expected_io, expected_io, link); + + g_io_done = false; + g_compare_read_buf = bb_buf; + g_compare_read_buf_len = sizeof(bb_buf); + rc = spdk_bdev_compare_blocks(desc, ioch, aa_buf, offset, num_blocks, io_done, NULL); + CU_ASSERT_EQUAL(rc, 0); + num_completed = stub_complete_io(1); + CU_ASSERT_EQUAL(num_completed, 1); + CU_ASSERT(g_io_done == true); + CU_ASSERT(g_io_status == SPDK_BDEV_IO_STATUS_MISCOMPARE); + spdk_put_io_channel(ioch); spdk_bdev_close(desc); free_bdev(bdev);