[PATCH v2 0/7] virbitmaptest: Refactor and modernize

This was split out from my series refactoring the virbitmap util module to address review feedback. Patches 1-5 are new, patches 6-7 were already part of the refactor but needed to be modified to fit on top of the changes needed to comply with review requirements. Peter Krempa (7): virbitmaptest: Split up test12 virbitmaptest: Split up test4 virbitmaptest: Use separate output strings in 'test5' virbitmaptest: Turn 'TEST_MAP' macro into a helper function virbitmaptest: Refactor checks in 'test6' virbitmaptest: Use g_auto(free) for cleanup virbitmaptest: Remove unnecessary error/cleanup labels tests/virbitmaptest.c | 512 ++++++++++++++++++------------------------ 1 file changed, 224 insertions(+), 288 deletions(-) -- 2.26.2

'test12' was testing two distinct operations on two instances of a bitmap. Split it up into 'test12a' and 'test12b' so that the 'bitmap' variable is not reused. Signed-off-by: Peter Krempa <pkrempa@redhat.com> --- tests/virbitmaptest.c | 19 +++++++++++++++++-- 1 file changed, 17 insertions(+), 2 deletions(-) diff --git a/tests/virbitmaptest.c b/tests/virbitmaptest.c index 687b5f87af..32187ebec4 100644 --- a/tests/virbitmaptest.c +++ b/tests/virbitmaptest.c @@ -629,7 +629,7 @@ test11(const void *opaque) /* test self-expanding bitmap APIs */ static int -test12(const void *opaque G_GNUC_UNUSED) +test12a(const void *opaque G_GNUC_UNUSED) { virBitmapPtr map = virBitmapNewEmpty(); int ret = -1; @@ -646,7 +646,20 @@ test12(const void *opaque G_GNUC_UNUSED) TEST_MAP(151, "128"); + ret = 0; + + cleanup: virBitmapFree(map); + return ret; +} + + +static int +test12b(const void *opaque G_GNUC_UNUSED) +{ + virBitmapPtr map = virBitmapNewEmpty(); + int ret = -1; + if (!(map = virBitmapParseUnlimited("34,1023"))) goto cleanup; @@ -829,7 +842,9 @@ mymain(void) TESTBINARYOP("0-3", "0,^0", "0,^0", test11); TESTBINARYOP("0,2", "1,3", "0,^0", test11); - if (virTestRun("test12", test12, NULL) < 0) + if (virTestRun("test12a", test12a, NULL) < 0) + ret = -1; + if (virTestRun("test12b", test12b, NULL) < 0) ret = -1; if (virTestRun("test13", test13, NULL) < 0) ret = -1; -- 2.26.2

On a Monday in 2020, Peter Krempa wrote:
'test12' was testing two distinct operations on two instances of a bitmap. Split it up into 'test12a' and 'test12b' so that the 'bitmap'
'map' or just drop the quotes.
variable is not reused.
Signed-off-by: Peter Krempa <pkrempa@redhat.com> --- tests/virbitmaptest.c | 19 +++++++++++++++++-- 1 file changed, 17 insertions(+), 2 deletions(-)
Reviewed-by: Ján Tomko <jtomko@redhat.com> Jano

'test4' was testing three distinct operations on separate instances of a bitmap. Split it up into 'test4a', 'test4b' and 'test4c' so that the 'bitmap' variable is not reused. Signed-off-by: Peter Krempa <pkrempa@redhat.com> --- tests/virbitmaptest.c | 64 +++++++++++++++++++++++++++++++------------ 1 file changed, 46 insertions(+), 18 deletions(-) diff --git a/tests/virbitmaptest.c b/tests/virbitmaptest.c index 32187ebec4..98ac06c406 100644 --- a/tests/virbitmaptest.c +++ b/tests/virbitmaptest.c @@ -173,23 +173,9 @@ test3(const void *data G_GNUC_UNUSED) /* test for virBitmapNextSetBit, virBitmapLastSetBit, virBitmapNextClearBit */ static int -test4(const void *data G_GNUC_UNUSED) +test4a(const void *data G_GNUC_UNUSED) { - const char *bitsString = "0, 2-4, 6-10, 12, 14-18, 20, 22, 25"; - int size = 40; - int bitsPos[] = { - 0, 2, 3, 4, 6, 7, 8, 9, 10, 12, - 14, 15, 16, 17, 18, 20, 22, 25 - }; - int bitsPosInv[] = { - 1, 5, 11, 13, 19, 21, 23, 24, 26, 27, - 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39 - }; virBitmapPtr bitmap = NULL; - ssize_t i, j; - - if (G_N_ELEMENTS(bitsPos) + G_N_ELEMENTS(bitsPosInv) != size) - goto error; /* 0. empty set */ @@ -205,7 +191,20 @@ test4(const void *data G_GNUC_UNUSED) goto error; virBitmapFree(bitmap); - bitmap = NULL; + return 0; + + error: + virBitmapFree(bitmap); + return -1; +} + + +static int +test4b(const void *data G_GNUC_UNUSED) +{ + virBitmapPtr bitmap = NULL; + int size = 40; + size_t i; /* 1. zero set */ @@ -230,7 +229,32 @@ test4(const void *data G_GNUC_UNUSED) goto error; virBitmapFree(bitmap); - bitmap = NULL; + return 0; + + error: + virBitmapFree(bitmap); + return -1; +} + + +static int +test4c(const void *data G_GNUC_UNUSED) +{ + const char *bitsString = "0, 2-4, 6-10, 12, 14-18, 20, 22, 25"; + int size = 40; + int bitsPos[] = { + 0, 2, 3, 4, 6, 7, 8, 9, 10, 12, + 14, 15, 16, 17, 18, 20, 22, 25 + }; + int bitsPosInv[] = { + 1, 5, 11, 13, 19, 21, 23, 24, 26, 27, + 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39 + }; + virBitmapPtr bitmap = NULL; + ssize_t i, j; + + if (G_N_ELEMENTS(bitsPos) + G_N_ELEMENTS(bitsPosInv) != size) + goto error; /* 2. partial set */ @@ -818,7 +842,11 @@ mymain(void) ret = -1; if (virTestRun("test3", test3, NULL) < 0) ret = -1; - if (virTestRun("test4", test4, NULL) < 0) + if (virTestRun("test4a", test4a, NULL) < 0) + ret = -1; + if (virTestRun("test4b", test4b, NULL) < 0) + ret = -1; + if (virTestRun("test4c", test4c, NULL) < 0) ret = -1; if (virTestRun("test5", test5, NULL) < 0) ret = -1; -- 2.26.2

On a Monday in 2020, Peter Krempa wrote:
'test4' was testing three distinct operations on separate instances of a bitmap. Split it up into 'test4a', 'test4b' and 'test4c' so that the 'bitmap' variable is not reused.
Signed-off-by: Peter Krempa <pkrempa@redhat.com> --- tests/virbitmaptest.c | 64 +++++++++++++++++++++++++++++++------------ 1 file changed, 46 insertions(+), 18 deletions(-)
Reviewed-by: Ján Tomko <jtomko@redhat.com> Jano

The test validates two outputs. Don't reuse 'str' for both. Signed-off-by: Peter Krempa <pkrempa@redhat.com> --- tests/virbitmaptest.c | 13 ++++++------- 1 file changed, 6 insertions(+), 7 deletions(-) diff --git a/tests/virbitmaptest.c b/tests/virbitmaptest.c index 98ac06c406..dc23431645 100644 --- a/tests/virbitmaptest.c +++ b/tests/virbitmaptest.c @@ -329,7 +329,8 @@ test5(const void *v G_GNUC_UNUSED) size_t i; ssize_t j; int ret = -1; - char *str = NULL; + g_autofree char *actual1 = NULL; + g_autofree char *actual2 = NULL; bitmap = virBitmapNewData(data, sizeof(data)); if (!bitmap) @@ -359,19 +360,17 @@ test5(const void *v G_GNUC_UNUSED) data2[4] != 0x04) goto error; - if (!(str = virBitmapDataFormat(data, sizeof(data)))) + if (!(actual1 = virBitmapDataFormat(data, sizeof(data)))) goto error; - if (STRNEQ(str, "0,9,34")) + if (STRNEQ(actual1, "0,9,34")) goto error; - VIR_FREE(str); - if (!(str = virBitmapDataFormat(data2, len2))) + if (!(actual2 = virBitmapDataFormat(data2, len2))) goto error; - if (STRNEQ(str, "0,2,9,15,34")) + if (STRNEQ(actual2, "0,2,9,15,34")) goto error; ret = 0; error: - VIR_FREE(str); virBitmapFree(bitmap); VIR_FREE(data2); return ret; -- 2.26.2

On a Monday in 2020, Peter Krempa wrote:
The test validates two outputs. Don't reuse 'str' for both.
Signed-off-by: Peter Krempa <pkrempa@redhat.com> --- tests/virbitmaptest.c | 13 ++++++------- 1 file changed, 6 insertions(+), 7 deletions(-)
Reviewed-by: Ján Tomko <jtomko@redhat.com> Jano

The function will also be reusable in other places of the code by making the size check optional. For now only test12* is refactored since it used TEST_MAP directly. Signed-off-by: Peter Krempa <pkrempa@redhat.com> --- tests/virbitmaptest.c | 63 +++++++++++++++++++++++++------------------ 1 file changed, 37 insertions(+), 26 deletions(-) diff --git a/tests/virbitmaptest.c b/tests/virbitmaptest.c index dc23431645..c16be62e23 100644 --- a/tests/virbitmaptest.c +++ b/tests/virbitmaptest.c @@ -26,6 +26,31 @@ #include "virbitmap.h" + +static int +checkBitmap(virBitmapPtr map, + const char *expect, + ssize_t expectedSize) +{ + g_autofree char *actual = virBitmapFormat(map); + + if (expectedSize != -1 && + virBitmapSize(map) != expectedSize) { + fprintf(stderr, "\n expected bitmap size: '%zd' actual size: " + "'%zu'\n", expectedSize, virBitmapSize(map)); + return -1; + } + + if (STRNEQ_NULLABLE(expect, actual)) { + fprintf(stderr, "\n expected bitmap contents '%s' actual contents "\ + "'%s'\n", NULLSTR(expect), NULLSTR(actual)); + return -1; + } + + return 0; +} + + static int test1(const void *data G_GNUC_UNUSED) { @@ -630,25 +655,6 @@ test11(const void *opaque) return ret; } -#define TEST_MAP(sz, expect) \ - do { \ - char *actual; \ - if (virBitmapSize(map) != sz) { \ - fprintf(stderr, "\n expected bitmap size: '%d' actual size: " \ - "'%zu'\n", sz, virBitmapSize(map)); \ - goto cleanup; \ - } \ - \ - actual = virBitmapFormat(map); \ - \ - if (STRNEQ_NULLABLE(expect, actual)) { \ - fprintf(stderr, "\n expected bitmap contents '%s' actual contents "\ - "'%s'\n", NULLSTR(expect), NULLSTR(actual)); \ - VIR_FREE(actual); \ - goto cleanup; \ - } \ - VIR_FREE(actual); \ - } while (0) /* test self-expanding bitmap APIs */ static int @@ -657,17 +663,20 @@ test12a(const void *opaque G_GNUC_UNUSED) virBitmapPtr map = virBitmapNewEmpty(); int ret = -1; - TEST_MAP(0, ""); + if (checkBitmap(map, "", 0) < 0) + goto cleanup; if (virBitmapSetBitExpand(map, 128) < 0) goto cleanup; - TEST_MAP(129, "128"); + if (checkBitmap(map, "128", 129) < 0) + goto cleanup; if (virBitmapClearBitExpand(map, 150) < 0) goto cleanup; - TEST_MAP(151, "128"); + if (checkBitmap(map, "128", 151) < 0) + goto cleanup; ret = 0; @@ -686,13 +695,16 @@ test12b(const void *opaque G_GNUC_UNUSED) if (!(map = virBitmapParseUnlimited("34,1023"))) goto cleanup; - TEST_MAP(1024, "34,1023"); + if (checkBitmap(map, "34,1023", 1024) < 0) + goto cleanup; virBitmapShrink(map, 35); - TEST_MAP(35, "34"); + if (checkBitmap(map, "34", 35) < 0) + goto cleanup; virBitmapShrink(map, 34); - TEST_MAP(34, ""); + if (checkBitmap(map, "", 34) < 0) + goto cleanup; ret = 0; @@ -729,7 +741,6 @@ test13(const void *opaque G_GNUC_UNUSED) return 0; } -#undef TEST_MAP static int test14(const void *opaque) -- 2.26.2

On a Monday in 2020, Peter Krempa wrote:
The function will also be reusable in other places of the code by making the size check optional. For now only test12* is refactored since it used TEST_MAP directly.
Signed-off-by: Peter Krempa <pkrempa@redhat.com> --- tests/virbitmaptest.c | 63 +++++++++++++++++++++++++------------------ 1 file changed, 37 insertions(+), 26 deletions(-)
Reviewed-by: Ján Tomko <jtomko@redhat.com> Jano

The 'checkBitmap' helper uses 'virBitmapFormat' internally and also reports better errors. Use it instead of the open-coded checks. Signed-off-by: Peter Krempa <pkrempa@redhat.com> --- tests/virbitmaptest.c | 44 ++++++------------------------------------- 1 file changed, 6 insertions(+), 38 deletions(-) diff --git a/tests/virbitmaptest.c b/tests/virbitmaptest.c index c16be62e23..c59eb49265 100644 --- a/tests/virbitmaptest.c +++ b/tests/virbitmaptest.c @@ -407,7 +407,6 @@ static int test6(const void *v G_GNUC_UNUSED) { virBitmapPtr bitmap = NULL; - char *str = NULL; int size = 64; int ret = -1; @@ -415,73 +414,42 @@ test6(const void *v G_GNUC_UNUSED) if (!bitmap) goto error; - str = virBitmapFormat(bitmap); - if (!str) + if (checkBitmap(bitmap, "", -1) < 0) goto error; - if (STRNEQ(str, "")) - goto error; - - VIR_FREE(str); - ignore_value(virBitmapSetBit(bitmap, 0)); - str = virBitmapFormat(bitmap); - if (!str) - goto error; - if (STRNEQ(str, "0")) + if (checkBitmap(bitmap, "0", -1) < 0) goto error; - VIR_FREE(str); - ignore_value(virBitmapSetBit(bitmap, 4)); ignore_value(virBitmapSetBit(bitmap, 5)); - str = virBitmapFormat(bitmap); - if (!str) - goto error; - if (STRNEQ(str, "0,4-5")) + if (checkBitmap(bitmap, "0,4-5", -1) < 0) goto error; - VIR_FREE(str); - ignore_value(virBitmapSetBit(bitmap, 6)); - str = virBitmapFormat(bitmap); - if (!str) - goto error; - if (STRNEQ(str, "0,4-6")) + if (checkBitmap(bitmap, "0,4-6", -1) < 0) goto error; - VIR_FREE(str); - ignore_value(virBitmapSetBit(bitmap, 13)); ignore_value(virBitmapSetBit(bitmap, 14)); ignore_value(virBitmapSetBit(bitmap, 15)); ignore_value(virBitmapSetBit(bitmap, 16)); - str = virBitmapFormat(bitmap); - if (!str) - goto error; - if (STRNEQ(str, "0,4-6,13-16")) + if (checkBitmap(bitmap, "0,4-6,13-16", -1) < 0) goto error; - VIR_FREE(str); - ignore_value(virBitmapSetBit(bitmap, 62)); ignore_value(virBitmapSetBit(bitmap, 63)); - str = virBitmapFormat(bitmap); - if (!str) - goto error; - if (STRNEQ(str, "0,4-6,13-16,62-63")) + if (checkBitmap(bitmap, "0,4-6,13-16,62-63", -1) < 0) goto error; - ret = 0; error: virBitmapFree(bitmap); - VIR_FREE(str); return ret; } -- 2.26.2

On a Monday in 2020, Peter Krempa wrote:
The 'checkBitmap' helper uses 'virBitmapFormat' internally and also reports better errors. Use it instead of the open-coded checks.
Signed-off-by: Peter Krempa <pkrempa@redhat.com> --- tests/virbitmaptest.c | 44 ++++++------------------------------------- 1 file changed, 6 insertions(+), 38 deletions(-)
Reviewed-by: Ján Tomko <jtomko@redhat.com> Jano

Signed-off-by: Peter Krempa <pkrempa@redhat.com> --- tests/virbitmaptest.c | 79 ++++++++++++++----------------------------- 1 file changed, 25 insertions(+), 54 deletions(-) diff --git a/tests/virbitmaptest.c b/tests/virbitmaptest.c index c59eb49265..fd49ed4c55 100644 --- a/tests/virbitmaptest.c +++ b/tests/virbitmaptest.c @@ -54,7 +54,7 @@ checkBitmap(virBitmapPtr map, static int test1(const void *data G_GNUC_UNUSED) { - virBitmapPtr bitmap; + g_autoptr(virBitmap) bitmap = NULL; int size; int bit; bool result; @@ -83,7 +83,6 @@ test1(const void *data G_GNUC_UNUSED) ret = 0; error: - virBitmapFree(bitmap); return ret; } @@ -110,8 +109,8 @@ static int test2(const void *data G_GNUC_UNUSED) { const char *bitsString1 = "1-32,50,88-99,1021-1023"; - char *bitsString2 = NULL; - virBitmapPtr bitmap = NULL; + g_autofree char *bitsString2 = NULL; + g_autoptr(virBitmap) bitmap = NULL; int ret = -1; int size = 1025; @@ -164,15 +163,13 @@ test2(const void *data G_GNUC_UNUSED) ret = 0; error: - virBitmapFree(bitmap); - VIR_FREE(bitsString2); return ret; } static int test3(const void *data G_GNUC_UNUSED) { - virBitmapPtr bitmap = NULL; + g_autoptr(virBitmap) bitmap = NULL; int ret = -1; int size = 5; size_t i; @@ -192,7 +189,6 @@ test3(const void *data G_GNUC_UNUSED) ret = 0; error: - virBitmapFree(bitmap); return ret; } @@ -200,7 +196,7 @@ test3(const void *data G_GNUC_UNUSED) static int test4a(const void *data G_GNUC_UNUSED) { - virBitmapPtr bitmap = NULL; + g_autoptr(virBitmap) bitmap = NULL; /* 0. empty set */ @@ -215,11 +211,9 @@ test4a(const void *data G_GNUC_UNUSED) if (virBitmapNextClearBit(bitmap, -1) != -1) goto error; - virBitmapFree(bitmap); return 0; error: - virBitmapFree(bitmap); return -1; } @@ -227,7 +221,7 @@ test4a(const void *data G_GNUC_UNUSED) static int test4b(const void *data G_GNUC_UNUSED) { - virBitmapPtr bitmap = NULL; + g_autoptr(virBitmap) bitmap = NULL; int size = 40; size_t i; @@ -253,11 +247,9 @@ test4b(const void *data G_GNUC_UNUSED) if (!virBitmapIsAllClear(bitmap)) goto error; - virBitmapFree(bitmap); return 0; error: - virBitmapFree(bitmap); return -1; } @@ -275,7 +267,7 @@ test4c(const void *data G_GNUC_UNUSED) 1, 5, 11, 13, 19, 21, 23, 24, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39 }; - virBitmapPtr bitmap = NULL; + g_autoptr(virBitmap) bitmap = NULL; ssize_t i, j; if (G_N_ELEMENTS(bitsPos) + G_N_ELEMENTS(bitsPosInv) != size) @@ -334,11 +326,9 @@ test4c(const void *data G_GNUC_UNUSED) if (virBitmapNextClearBit(bitmap, -1) != -1) goto error; - virBitmapFree(bitmap); return 0; error: - virBitmapFree(bitmap); return -1; } @@ -347,10 +337,10 @@ static int test5(const void *v G_GNUC_UNUSED) { char data[] = {0x01, 0x02, 0x00, 0x00, 0x04}; - unsigned char *data2 = NULL; + g_autofree unsigned char *data2 = NULL; int len2; int bits[] = {0, 9, 34}; - virBitmapPtr bitmap; + g_autoptr(virBitmap) bitmap = NULL; size_t i; ssize_t j; int ret = -1; @@ -396,8 +386,6 @@ test5(const void *v G_GNUC_UNUSED) ret = 0; error: - virBitmapFree(bitmap); - VIR_FREE(data2); return ret; } @@ -406,7 +394,7 @@ test5(const void *v G_GNUC_UNUSED) static int test6(const void *v G_GNUC_UNUSED) { - virBitmapPtr bitmap = NULL; + g_autoptr(virBitmap) bitmap = NULL; int size = 64; int ret = -1; @@ -449,14 +437,12 @@ test6(const void *v G_GNUC_UNUSED) ret = 0; error: - virBitmapFree(bitmap); return ret; } static int test7(const void *v G_GNUC_UNUSED) { - virBitmapPtr bitmap; size_t i; size_t maxBit[] = { 1, 8, 31, 32, 63, 64, 95, 96, 127, 128, 159, 160 @@ -464,7 +450,7 @@ test7(const void *v G_GNUC_UNUSED) size_t nmaxBit = 12; for (i = 0; i < nmaxBit; i++) { - bitmap = virBitmapNew(maxBit[i]); + g_autoptr(virBitmap) bitmap = virBitmapNew(maxBit[i]); if (!bitmap) goto error; @@ -482,21 +468,18 @@ test7(const void *v G_GNUC_UNUSED) virBitmapClearAll(bitmap); if (!virBitmapIsAllClear(bitmap)) goto error; - - virBitmapFree(bitmap); } return 0; error: - virBitmapFree(bitmap); return -1; } static int test8(const void *v G_GNUC_UNUSED) { - virBitmapPtr bitmap = NULL; + g_autoptr(virBitmap) bitmap = NULL; char data[108] = {0x00,}; int ret = -1; @@ -515,7 +498,6 @@ test8(const void *v G_GNUC_UNUSED) ret = 0; cleanup: - virBitmapFree(bitmap); return ret; } @@ -525,7 +507,7 @@ static int test9(const void *opaque G_GNUC_UNUSED) { int ret = -1; - virBitmapPtr bitmap = NULL; + g_autoptr(virBitmap) bitmap = NULL; if (virBitmapParse("100000000", &bitmap, 20) != -1) goto cleanup; @@ -547,7 +529,6 @@ test9(const void *opaque G_GNUC_UNUSED) ret = 0; cleanup: - virBitmapFree(bitmap); return ret; } @@ -556,7 +537,10 @@ static int test10(const void *opaque G_GNUC_UNUSED) { int ret = -1; - virBitmapPtr b1 = NULL, b2 = NULL, b3 = NULL, b4 = NULL; + g_autoptr(virBitmap) b1 = NULL; + g_autoptr(virBitmap) b2 = NULL; + g_autoptr(virBitmap) b3 = NULL; + g_autoptr(virBitmap) b4 = NULL; if (virBitmapParseSeparator("0-3,5-8,11-15f16", 'f', &b1, 20) < 0 || virBitmapParse("4,9,10,16-19", &b2, 20) < 0 || @@ -577,10 +561,6 @@ test10(const void *opaque G_GNUC_UNUSED) ret = 0; cleanup: - virBitmapFree(b1); - virBitmapFree(b2); - virBitmapFree(b3); - virBitmapFree(b4); return ret; } @@ -594,9 +574,9 @@ static int test11(const void *opaque) { const struct testBinaryOpData *data = opaque; - virBitmapPtr amap = NULL; - virBitmapPtr bmap = NULL; - virBitmapPtr resmap = NULL; + g_autoptr(virBitmap) amap = NULL; + g_autoptr(virBitmap) bmap = NULL; + g_autoptr(virBitmap) resmap = NULL; int ret = -1; if (virBitmapParse(data->a, &amap, 256) < 0 || @@ -616,10 +596,6 @@ test11(const void *opaque) ret = 0; cleanup: - virBitmapFree(amap); - virBitmapFree(bmap); - virBitmapFree(resmap); - return ret; } @@ -628,7 +604,7 @@ test11(const void *opaque) static int test12a(const void *opaque G_GNUC_UNUSED) { - virBitmapPtr map = virBitmapNewEmpty(); + g_autoptr(virBitmap) map = virBitmapNewEmpty(); int ret = -1; if (checkBitmap(map, "", 0) < 0) @@ -649,7 +625,6 @@ test12a(const void *opaque G_GNUC_UNUSED) ret = 0; cleanup: - virBitmapFree(map); return ret; } @@ -657,7 +632,7 @@ test12a(const void *opaque G_GNUC_UNUSED) static int test12b(const void *opaque G_GNUC_UNUSED) { - virBitmapPtr map = virBitmapNewEmpty(); + g_autoptr(virBitmap) map = NULL; int ret = -1; if (!(map = virBitmapParseUnlimited("34,1023"))) @@ -677,7 +652,6 @@ test12b(const void *opaque G_GNUC_UNUSED) ret = 0; cleanup: - virBitmapFree(map); return ret; } @@ -714,9 +688,9 @@ static int test14(const void *opaque) { const struct testBinaryOpData *data = opaque; - virBitmapPtr amap = NULL; - virBitmapPtr bmap = NULL; - virBitmapPtr resmap = NULL; + g_autoptr(virBitmap) amap = NULL; + g_autoptr(virBitmap) bmap = NULL; + g_autoptr(virBitmap) resmap = NULL; int ret = -1; if (virBitmapParse(data->a, &amap, 256) < 0 || @@ -736,9 +710,6 @@ test14(const void *opaque) ret = 0; cleanup: - virBitmapFree(amap); - virBitmapFree(bmap); - virBitmapFree(resmap); return ret; } -- 2.26.2

On a Monday in 2020, Peter Krempa wrote:
Signed-off-by: Peter Krempa <pkrempa@redhat.com> --- tests/virbitmaptest.c | 79 ++++++++++++++----------------------------- 1 file changed, 25 insertions(+), 54 deletions(-)
Reviewed-by: Ján Tomko <jtomko@redhat.com> Jano

Signed-off-by: Peter Krempa <pkrempa@redhat.com> --- tests/virbitmaptest.c | 270 +++++++++++++++++------------------------- 1 file changed, 107 insertions(+), 163 deletions(-) diff --git a/tests/virbitmaptest.c b/tests/virbitmaptest.c index fd49ed4c55..3559e61be7 100644 --- a/tests/virbitmaptest.c +++ b/tests/virbitmaptest.c @@ -58,32 +58,28 @@ test1(const void *data G_GNUC_UNUSED) int size; int bit; bool result; - int ret = -1; size = 1024; bit = 100; if (!(bitmap = virBitmapNew(size))) - goto error; + return -1; if (virBitmapSetBit(bitmap, bit) < 0) - goto error; + return -1; if (virBitmapGetBit(bitmap, bit, &result) < 0) - goto error; + return -1; if (!result) - goto error; + return -1; if (virBitmapGetBit(bitmap, bit + 1, &result) < 0) - goto error; + return -1; if (result) - goto error; - - ret = 0; + return -1; - error: - return ret; + return 0; } static int @@ -111,85 +107,78 @@ test2(const void *data G_GNUC_UNUSED) const char *bitsString1 = "1-32,50,88-99,1021-1023"; g_autofree char *bitsString2 = NULL; g_autoptr(virBitmap) bitmap = NULL; - int ret = -1; int size = 1025; if (virBitmapParse(bitsString1, &bitmap, size) < 0) - goto error; + return -1; if (testBit(bitmap, 1, 32, true) < 0) - goto error; + return -1; if (testBit(bitmap, 50, 50, true) < 0) - goto error; + return -1; if (testBit(bitmap, 88, 99, true) < 0) - goto error; + return -1; if (testBit(bitmap, 1021, 1023, true) < 0) - goto error; + return -1; if (testBit(bitmap, 0, 0, false) < 0) - goto error; + return -1; if (testBit(bitmap, 33, 49, false) < 0) - goto error; + return -1; if (testBit(bitmap, 51, 87, false) < 0) - goto error; + return -1; if (testBit(bitmap, 100, 1020, false) < 0) - goto error; + return -1; if (virBitmapCountBits(bitmap) != 48) - goto error; + return -1; if (!(bitsString2 = virBitmapFormat(bitmap))) - goto error; + return -1; if (strcmp(bitsString1, bitsString2)) - goto error; + return -1; virBitmapSetAll(bitmap); if (testBit(bitmap, 0, size - 1, true) < 0) - goto error; + return -1; if (virBitmapCountBits(bitmap) != size) - goto error; + return -1; if (!virBitmapIsAllSet(bitmap)) - goto error; + return -1; virBitmapClearAll(bitmap); if (!virBitmapIsAllClear(bitmap)) - goto error; + return -1; if (testBit(bitmap, 0, size - 1, false) < 0) - goto error; + return -1; if (virBitmapCountBits(bitmap) != 0) - goto error; - - ret = 0; + return -1; - error: - return ret; + return 0; } static int test3(const void *data G_GNUC_UNUSED) { g_autoptr(virBitmap) bitmap = NULL; - int ret = -1; int size = 5; size_t i; if ((bitmap = virBitmapNew(size)) == NULL) - goto error; + return -1; for (i = 0; i < size; i++) ignore_value(virBitmapSetBit(bitmap, i)); if (!virBitmapIsAllSet(bitmap)) - goto error; + return -1; virBitmapClearAll(bitmap); if (!virBitmapIsAllClear(bitmap)) - goto error; - ret = 0; + return -1; - error: - return ret; + return 0; } /* test for virBitmapNextSetBit, virBitmapLastSetBit, virBitmapNextClearBit */ @@ -203,18 +192,15 @@ test4a(const void *data G_GNUC_UNUSED) bitmap = virBitmapNewEmpty(); if (virBitmapNextSetBit(bitmap, -1) != -1) - goto error; + return -1; if (virBitmapLastSetBit(bitmap) != -1) - goto error; + return -1; if (virBitmapNextClearBit(bitmap, -1) != -1) - goto error; + return -1; return 0; - - error: - return -1; } @@ -229,28 +215,25 @@ test4b(const void *data G_GNUC_UNUSED) bitmap = virBitmapNew(size); if (!bitmap) - goto error; + return -1; if (virBitmapNextSetBit(bitmap, -1) != -1) - goto error; + return -1; if (virBitmapLastSetBit(bitmap) != -1) - goto error; + return -1; for (i = 0; i < size; i++) { if (virBitmapNextClearBit(bitmap, i - 1) != i) - goto error; + return -1; } if (virBitmapNextClearBit(bitmap, i) != -1) - goto error; + return -1; if (!virBitmapIsAllClear(bitmap)) - goto error; + return -1; return 0; - - error: - return -1; } @@ -271,14 +254,14 @@ test4c(const void *data G_GNUC_UNUSED) ssize_t i, j; if (G_N_ELEMENTS(bitsPos) + G_N_ELEMENTS(bitsPosInv) != size) - goto error; + return -1; /* 2. partial set */ if (virBitmapParse(bitsString, &bitmap, size) < 0) - goto error; + return -1; if (!bitmap) - goto error; + return -1; j = 0; i = -1; @@ -286,16 +269,16 @@ test4c(const void *data G_GNUC_UNUSED) while (j < G_N_ELEMENTS(bitsPos)) { i = virBitmapNextSetBit(bitmap, i); if (i != bitsPos[j++]) - goto error; + return -1; } if (virBitmapNextSetBit(bitmap, i) != -1) - goto error; + return -1; j = sizeof(bitsPos)/sizeof(int) - 1; if (virBitmapLastSetBit(bitmap) != bitsPos[j]) - goto error; + return -1; j = 0; i = -1; @@ -303,11 +286,11 @@ test4c(const void *data G_GNUC_UNUSED) while (j < G_N_ELEMENTS(bitsPosInv)) { i = virBitmapNextClearBit(bitmap, i); if (i != bitsPosInv[j++]) - goto error; + return -1; } if (virBitmapNextClearBit(bitmap, i) != -1) - goto error; + return -1; /* 3. full set */ @@ -315,21 +298,18 @@ test4c(const void *data G_GNUC_UNUSED) for (i = 0; i < size; i++) { if (virBitmapNextSetBit(bitmap, i - 1) != i) - goto error; + return -1; } if (virBitmapNextSetBit(bitmap, i) != -1) - goto error; + return -1; if (virBitmapLastSetBit(bitmap) != size - 1) - goto error; + return -1; if (virBitmapNextClearBit(bitmap, -1) != -1) - goto error; + return -1; return 0; - - error: - return -1; } /* test for virBitmapNewData/ToData/DataFormat */ @@ -343,29 +323,28 @@ test5(const void *v G_GNUC_UNUSED) g_autoptr(virBitmap) bitmap = NULL; size_t i; ssize_t j; - int ret = -1; g_autofree char *actual1 = NULL; g_autofree char *actual2 = NULL; bitmap = virBitmapNewData(data, sizeof(data)); if (!bitmap) - goto error; + return -1; i = 0; j = -1; while (i < sizeof(bits)/sizeof(int) && (j = virBitmapNextSetBit(bitmap, j)) >= 0) { if (j != bits[i++]) - goto error; + return -1; } if (virBitmapNextSetBit(bitmap, j) > 0) - goto error; + return -1; ignore_value(virBitmapSetBit(bitmap, 2)); ignore_value(virBitmapSetBit(bitmap, 15)); if (virBitmapToData(bitmap, &data2, &len2) < 0) - goto error; + return -1; if (len2 != sizeof(data) || data2[0] != 0x05 || @@ -373,20 +352,18 @@ test5(const void *v G_GNUC_UNUSED) data2[2] != 0x00 || data2[3] != 0x00 || data2[4] != 0x04) - goto error; + return -1; if (!(actual1 = virBitmapDataFormat(data, sizeof(data)))) - goto error; + return -1; if (STRNEQ(actual1, "0,9,34")) - goto error; + return -1; if (!(actual2 = virBitmapDataFormat(data2, len2))) - goto error; + return -1; if (STRNEQ(actual2, "0,2,9,15,34")) - goto error; + return -1; - ret = 0; - error: - return ret; + return 0; } @@ -396,30 +373,29 @@ test6(const void *v G_GNUC_UNUSED) { g_autoptr(virBitmap) bitmap = NULL; int size = 64; - int ret = -1; bitmap = virBitmapNew(size); if (!bitmap) - goto error; + return -1; if (checkBitmap(bitmap, "", -1) < 0) - goto error; + return -1; ignore_value(virBitmapSetBit(bitmap, 0)); if (checkBitmap(bitmap, "0", -1) < 0) - goto error; + return -1; ignore_value(virBitmapSetBit(bitmap, 4)); ignore_value(virBitmapSetBit(bitmap, 5)); if (checkBitmap(bitmap, "0,4-5", -1) < 0) - goto error; + return -1; ignore_value(virBitmapSetBit(bitmap, 6)); if (checkBitmap(bitmap, "0,4-6", -1) < 0) - goto error; + return -1; ignore_value(virBitmapSetBit(bitmap, 13)); ignore_value(virBitmapSetBit(bitmap, 14)); @@ -427,17 +403,15 @@ test6(const void *v G_GNUC_UNUSED) ignore_value(virBitmapSetBit(bitmap, 16)); if (checkBitmap(bitmap, "0,4-6,13-16", -1) < 0) - goto error; + return -1; ignore_value(virBitmapSetBit(bitmap, 62)); ignore_value(virBitmapSetBit(bitmap, 63)); if (checkBitmap(bitmap, "0,4-6,13-16,62-63", -1) < 0) - goto error; + return -1; - ret = 0; - error: - return ret; + return 0; } static int @@ -452,28 +426,25 @@ test7(const void *v G_GNUC_UNUSED) for (i = 0; i < nmaxBit; i++) { g_autoptr(virBitmap) bitmap = virBitmapNew(maxBit[i]); if (!bitmap) - goto error; + return -1; if (virBitmapIsAllSet(bitmap)) - goto error; + return -1; ignore_value(virBitmapSetBit(bitmap, 1)); if (virBitmapIsAllSet(bitmap)) - goto error; + return -1; virBitmapSetAll(bitmap); if (!virBitmapIsAllSet(bitmap)) - goto error; + return -1; virBitmapClearAll(bitmap); if (!virBitmapIsAllClear(bitmap)) - goto error; + return -1; } return 0; - - error: - return -1; } static int @@ -481,24 +452,21 @@ test8(const void *v G_GNUC_UNUSED) { g_autoptr(virBitmap) bitmap = NULL; char data[108] = {0x00,}; - int ret = -1; bitmap = virBitmapNewData(data, sizeof(data)); if (!bitmap) - goto cleanup; + return -1; if (!virBitmapIsAllClear(bitmap)) - goto cleanup; + return -1; if (virBitmapSetBit(bitmap, 11) < 0) - goto cleanup; + return -1; if (virBitmapIsAllClear(bitmap)) - goto cleanup; + return -1; - ret = 0; - cleanup: - return ret; + return 0; } @@ -506,37 +474,32 @@ test8(const void *v G_GNUC_UNUSED) static int test9(const void *opaque G_GNUC_UNUSED) { - int ret = -1; g_autoptr(virBitmap) bitmap = NULL; if (virBitmapParse("100000000", &bitmap, 20) != -1) - goto cleanup; + return -1; if (bitmap) - goto cleanup; + return -1; if (virBitmapParse("1-1000000000", &bitmap, 20) != -1) - goto cleanup; + return -1; if (bitmap) - goto cleanup; + return -1; if (virBitmapParse("1-10^10000000000", &bitmap, 20) != -1) - goto cleanup; + return -1; if (bitmap) - goto cleanup; - - ret = 0; - cleanup: - return ret; + return -1; + return 0; } static int test10(const void *opaque G_GNUC_UNUSED) { - int ret = -1; g_autoptr(virBitmap) b1 = NULL; g_autoptr(virBitmap) b2 = NULL; g_autoptr(virBitmap) b3 = NULL; @@ -546,10 +509,10 @@ test10(const void *opaque G_GNUC_UNUSED) virBitmapParse("4,9,10,16-19", &b2, 20) < 0 || virBitmapParse("15", &b3, 20) < 0 || virBitmapParse("0,^0", &b4, 20) < 0) - goto cleanup; + return -1; if (!virBitmapIsAllClear(b4)) - goto cleanup; + return -1; if (virBitmapOverlaps(b1, b2) || virBitmapOverlaps(b1, b4) || @@ -557,11 +520,9 @@ test10(const void *opaque G_GNUC_UNUSED) virBitmapOverlaps(b2, b4) || !virBitmapOverlaps(b1, b3) || virBitmapOverlaps(b3, b4)) - goto cleanup; + return -1; - ret = 0; - cleanup: - return ret; + return 0; } struct testBinaryOpData { @@ -577,12 +538,11 @@ test11(const void *opaque) g_autoptr(virBitmap) amap = NULL; g_autoptr(virBitmap) bmap = NULL; g_autoptr(virBitmap) resmap = NULL; - int ret = -1; if (virBitmapParse(data->a, &amap, 256) < 0 || virBitmapParse(data->b, &bmap, 256) < 0 || virBitmapParse(data->res, &resmap, 256) < 0) - goto cleanup; + return -1; virBitmapIntersect(amap, bmap); @@ -590,13 +550,10 @@ test11(const void *opaque) fprintf(stderr, "\n bitmap intersection failed: intersect('%s','%s') !='%s'\n", data->a, data->b, data->res); - goto cleanup; + return -1; } - ret = 0; - - cleanup: - return ret; + return 0; } @@ -605,27 +562,23 @@ static int test12a(const void *opaque G_GNUC_UNUSED) { g_autoptr(virBitmap) map = virBitmapNewEmpty(); - int ret = -1; if (checkBitmap(map, "", 0) < 0) - goto cleanup; + return -1; if (virBitmapSetBitExpand(map, 128) < 0) - goto cleanup; + return -1; if (checkBitmap(map, "128", 129) < 0) - goto cleanup; + return -1; if (virBitmapClearBitExpand(map, 150) < 0) - goto cleanup; + return -1; if (checkBitmap(map, "128", 151) < 0) - goto cleanup; - - ret = 0; + return -1; - cleanup: - return ret; + return 0; } @@ -633,26 +586,22 @@ static int test12b(const void *opaque G_GNUC_UNUSED) { g_autoptr(virBitmap) map = NULL; - int ret = -1; if (!(map = virBitmapParseUnlimited("34,1023"))) - goto cleanup; + return -1; if (checkBitmap(map, "34,1023", 1024) < 0) - goto cleanup; + return -1; virBitmapShrink(map, 35); if (checkBitmap(map, "34", 35) < 0) - goto cleanup; + return -1; virBitmapShrink(map, 34); if (checkBitmap(map, "", 34) < 0) - goto cleanup; - - ret = 0; + return -1; - cleanup: - return ret; + return 0; } @@ -691,12 +640,11 @@ test14(const void *opaque) g_autoptr(virBitmap) amap = NULL; g_autoptr(virBitmap) bmap = NULL; g_autoptr(virBitmap) resmap = NULL; - int ret = -1; if (virBitmapParse(data->a, &amap, 256) < 0 || virBitmapParse(data->b, &bmap, 256) < 0 || virBitmapParse(data->res, &resmap, 256) < 0) - goto cleanup; + return -1; virBitmapSubtract(amap, bmap); @@ -704,14 +652,10 @@ test14(const void *opaque) fprintf(stderr, "\n bitmap subtraction failed: '%s' - '%s' != '%s'\n", data->a, data->b, data->res); - goto cleanup; + return -1; } - ret = 0; - - cleanup: - - return ret; + return 0; } /* virBitmapUnion() */ -- 2.26.2

On a Monday in 2020, Peter Krempa wrote:
Signed-off-by: Peter Krempa <pkrempa@redhat.com> --- tests/virbitmaptest.c | 270 +++++++++++++++++------------------------- 1 file changed, 107 insertions(+), 163 deletions(-)
Reviewed-by: Ján Tomko <jtomko@redhat.com> Jano
participants (2)
-
Ján Tomko
-
Peter Krempa