[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [Qemu-block] [Qemu-devel] [PATCH v3 4/8] tests: add tests for hbitma
From: |
John Snow |
Subject: |
Re: [Qemu-block] [Qemu-devel] [PATCH v3 4/8] tests: add tests for hbitmap_next_dirty_area |
Date: |
Mon, 10 Sep 2018 16:45:08 -0400 |
User-agent: |
Mozilla/5.0 (X11; Linux x86_64; rv:52.0) Gecko/20100101 Thunderbird/52.9.1 |
On 08/14/2018 08:14 AM, Vladimir Sementsov-Ogievskiy wrote:
> Signed-off-by: Vladimir Sementsov-Ogievskiy <address@hidden>
ACK, and
Tested-by: John Snow <address@hidden>
> ---
> tests/test-hbitmap.c | 106
> +++++++++++++++++++++++++++++++++++++++++++++++++++
> 1 file changed, 106 insertions(+)
>
> diff --git a/tests/test-hbitmap.c b/tests/test-hbitmap.c
> index dddb67c3c5..af5142b481 100644
> --- a/tests/test-hbitmap.c
> +++ b/tests/test-hbitmap.c
> @@ -1016,6 +1016,105 @@ static void test_hbitmap_next_zero_4(TestHBitmapData
> *data, const void *unused)
> test_hbitmap_next_zero_do(data, 4);
> }
>
> +static void test_hbitmap_next_dirty_area_check(TestHBitmapData *data,
> + uint64_t offset,
> + uint64_t count)
> +{
> + uint64_t off1, off2;
> + uint64_t len1 = 0, len2 = 0;
> + bool ret1, ret2;
> + int64_t end;
> +
> + off1 = offset;
> + end = count ? offset + count : 0;
> + ret1 = hbitmap_next_dirty_area(data->hb, &off1, end, &len1);
> +
> + end = count ? offset + count : data->size;
> +
> + for (off2 = offset; off2 < end && !hbitmap_get(data->hb, off2); off2++) {
> + ;
> + }
> +
> + for (len2 = 1; off2 + len2 < end && hbitmap_get(data->hb, off2 + len2);
> + len2++)
> + {
> + }
> +
> + ret2 = off2 < end;
> + if (!ret2) {
> + /* leave unchanged */
> + off2 = offset;
> + len2 = 0;
> + }
> +
> + g_assert_cmpint(ret1, ==, ret2);
> + g_assert_cmpint(off1, ==, off2);
> + g_assert_cmpint(len1, ==, len2);
> +}
> +
> +static void test_hbitmap_next_dirty_area_do(TestHBitmapData *data,
> + int granularity)
> +{
> + hbitmap_test_init(data, L3, granularity);
> + test_hbitmap_next_dirty_area_check(data, 0, 0);
> + test_hbitmap_next_dirty_area_check(data, 0, 1);
> + test_hbitmap_next_dirty_area_check(data, L3 - 1, 1);
> +
> + hbitmap_set(data->hb, L2, 1);
> + test_hbitmap_next_dirty_area_check(data, 0, 1);
> + test_hbitmap_next_dirty_area_check(data, 0, L2);
> + test_hbitmap_next_dirty_area_check(data, 0, 0);
> + test_hbitmap_next_dirty_area_check(data, L2 - 1, 0);
> + test_hbitmap_next_dirty_area_check(data, L2 - 1, 1);
> + test_hbitmap_next_dirty_area_check(data, L2 - 1, 2);
> + test_hbitmap_next_dirty_area_check(data, L2 - 1, 3);
> + test_hbitmap_next_dirty_area_check(data, L2, 0);
> + test_hbitmap_next_dirty_area_check(data, L2, 1);
> + test_hbitmap_next_dirty_area_check(data, L2 + 1, 1);
> +
> + hbitmap_set(data->hb, L2 + 5, L1);
> + test_hbitmap_next_dirty_area_check(data, 0, 0);
> + test_hbitmap_next_dirty_area_check(data, L2 - 2, 8);
> + test_hbitmap_next_dirty_area_check(data, L2 + 1, 5);
> + test_hbitmap_next_dirty_area_check(data, L2 + 1, 3);
> + test_hbitmap_next_dirty_area_check(data, L2 + 4, L1);
> + test_hbitmap_next_dirty_area_check(data, L2 + 5, L1);
> + test_hbitmap_next_dirty_area_check(data, L2 + 7, L1);
> + test_hbitmap_next_dirty_area_check(data, L2 + L1, L1);
> + test_hbitmap_next_dirty_area_check(data, L2, 0);
> + test_hbitmap_next_dirty_area_check(data, L2 + 1, 0);
> +
> + hbitmap_set(data->hb, L2 * 2, L3 - L2 * 2);
> + test_hbitmap_next_dirty_area_check(data, 0, 0);
> + test_hbitmap_next_dirty_area_check(data, L2, 0);
> + test_hbitmap_next_dirty_area_check(data, L2 + 1, 0);
> + test_hbitmap_next_dirty_area_check(data, L2 + 5 + L1 - 1, 0);
> + test_hbitmap_next_dirty_area_check(data, L2 + 5 + L1, 5);
> + test_hbitmap_next_dirty_area_check(data, L2 * 2 - L1, L1 + 1);
> + test_hbitmap_next_dirty_area_check(data, L2 * 2, L2);
> +
> + hbitmap_set(data->hb, 0, L3);
> + test_hbitmap_next_dirty_area_check(data, 0, 0);
> +}
> +
> +static void test_hbitmap_next_dirty_area_0(TestHBitmapData *data,
> + const void *unused)
> +{
> + test_hbitmap_next_dirty_area_do(data, 0);
> +}
> +
> +static void test_hbitmap_next_dirty_area_1(TestHBitmapData *data,
> + const void *unused)
> +{
> + test_hbitmap_next_dirty_area_do(data, 1);
> +}
> +
> +static void test_hbitmap_next_dirty_area_4(TestHBitmapData *data,
> + const void *unused)
> +{
> + test_hbitmap_next_dirty_area_do(data, 4);
> +}
> +
> int main(int argc, char **argv)
> {
> g_test_init(&argc, &argv, NULL);
> @@ -1082,6 +1181,13 @@ int main(int argc, char **argv)
> hbitmap_test_add("/hbitmap/next_zero/next_zero_4",
> test_hbitmap_next_zero_4);
>
> + hbitmap_test_add("/hbitmap/next_dirty_area/next_dirty_area_0",
> + test_hbitmap_next_dirty_area_0);
> + hbitmap_test_add("/hbitmap/next_dirty_area/next_dirty_area_1",
> + test_hbitmap_next_dirty_area_1);
> + hbitmap_test_add("/hbitmap/next_dirty_area/next_dirty_area_4",
> + test_hbitmap_next_dirty_area_4);
> +
> g_test_run();
>
> return 0;
>
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- Re: [Qemu-block] [Qemu-devel] [PATCH v3 4/8] tests: add tests for hbitmap_next_dirty_area,
John Snow <=