From 9e8e57d0b2a5043703e6f3624e1de3c665210a03 Mon Sep 17 00:00:00 2001 From: =?utf8?q?J=C3=A9r=C3=A9mie=20Galarneau?= Date: Wed, 13 Feb 2013 14:41:28 -0500 Subject: [PATCH] Convert the unit tests to the TAP format MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit [ Mathieu Desnoyers: minor style edits. ] Signed-off-by: Jérémie Galarneau Signed-off-by: Mathieu Desnoyers --- tests/lib/Makefile.am | 2 + tests/lib/test-bitfield.c | 212 ++++++++++++++++++-------------------- tests/runall.sh | 88 +++++++--------- 3 files changed, 141 insertions(+), 161 deletions(-) diff --git a/tests/lib/Makefile.am b/tests/lib/Makefile.am index 0613bebd..01831de3 100644 --- a/tests/lib/Makefile.am +++ b/tests/lib/Makefile.am @@ -8,6 +8,8 @@ test_seeks_LDADD = libtestcommon.a \ $(top_builddir)/lib/libbabeltrace.la \ $(top_builddir)/formats/ctf/libbabeltrace-ctf.la +test_bitfield_LDADD = libtestcommon.a + noinst_PROGRAMS = test-seeks test-bitfield test_seeks_SOURCES = test-seeks.c diff --git a/tests/lib/test-bitfield.c b/tests/lib/test-bitfield.c index 3bf75682..2cb7a74c 100644 --- a/tests/lib/test-bitfield.c +++ b/tests/lib/test-bitfield.c @@ -25,6 +25,8 @@ #include #include +#include "tap.h" + unsigned int glob; /* @@ -39,6 +41,10 @@ void fct(void) /* Test array size, in bytes */ #define TEST_LEN 128 #define NR_TESTS 10 +#define SIGNED_TEST_DESC_FMT_STR "Writing and reading back 0x%X, signed" +#define UNSIGNED_TEST_DESC_FMT_STR "Writing and reading back 0x%X, unsigned" +#define DIAG_FMT_STR "Failed reading value written \"%s\"-wise, with start=%i" \ + " and length=%i. Read %llX" unsigned int srcrand; @@ -116,7 +122,19 @@ do { \ (c)[i] = (val); \ } while (0) -int run_test_unsigned(void) +#define check_result(ref, val, buffer, typename, start, len, \ + desc_fmt_str) \ +({ \ + if ((val) != (ref)) { \ + fail(desc_fmt_str, ref); \ + diag(DIAG_FMT_STR, #typename, start, len, val); \ + printf("# "); \ + print_byte_array(buffer, TEST_LEN); \ + } \ + (val) != (ref); \ +}) + +void run_test_unsigned(void) { unsigned int src, nrbits; union { @@ -128,9 +146,6 @@ int run_test_unsigned(void) } target; unsigned long long readval; unsigned int s, l; - int err = 0; - - printf("Running unsigned test with 0x%X\n", srcrand); src = srcrand; nrbits = fls(src); @@ -140,62 +155,49 @@ int run_test_unsigned(void) init_byte_array(target.c, TEST_LEN, 0xFF); bt_bitfield_write(target.c, unsigned char, s, l, src); bt_bitfield_read(target.c, unsigned char, s, l, &readval); - if (readval != src) { - printf("Error (bytewise) src %X read %llX shift %d len %d\n", - src, readval, s, l); - print_byte_array(target.c, TEST_LEN); - err = 1; + if (check_result(src, readval, target.c, unsigned char, + s, l, UNSIGNED_TEST_DESC_FMT_STR)) { + return; } init_byte_array(target.c, TEST_LEN, 0xFF); bt_bitfield_write(target.s, unsigned short, s, l, src); bt_bitfield_read(target.c, unsigned char, s, l, &readval); - if (readval != src) { - printf("Error (shortwise) src %X read %llX shift %d len %d\n", - src, readval, s, l); - print_byte_array(target.c, TEST_LEN); - err = 1; + if (check_result(src, readval, target.c, unsigned short, + s, l, UNSIGNED_TEST_DESC_FMT_STR)) { + return; } init_byte_array(target.c, TEST_LEN, 0xFF); bt_bitfield_write(target.i, unsigned int, s, l, src); bt_bitfield_read(target.c, unsigned char, s, l, &readval); - if (readval != src) { - printf("Error (intwise) src %X read %llX shift %d len %d\n", - src, readval, s, l); - print_byte_array(target.c, TEST_LEN); - err = 1; + if (check_result(src, readval, target.c, unsigned int, + s, l, UNSIGNED_TEST_DESC_FMT_STR)) { + return; } init_byte_array(target.c, TEST_LEN, 0xFF); bt_bitfield_write(target.l, unsigned long, s, l, src); bt_bitfield_read(target.c, unsigned char, s, l, &readval); - if (readval != src) { - printf("Error (longwise) src %X read %llX shift %d len %d\n", - src, readval, s, l); - print_byte_array(target.c, TEST_LEN); - err = 1; + if (check_result(src, readval, target.c, unsigned long, + s, l, UNSIGNED_TEST_DESC_FMT_STR)) { + return; } init_byte_array(target.c, TEST_LEN, 0xFF); bt_bitfield_write(target.ll, unsigned long long, s, l, src); bt_bitfield_read(target.c, unsigned char, s, l, &readval); - if (readval != src) { - printf("Error (longlongwise) src %X read %llX shift %d len %d\n", - src, readval, s, l); - print_byte_array(target.c, TEST_LEN); - err = 1; + if (check_result(src, readval, target.c, unsigned long long, + s, l, UNSIGNED_TEST_DESC_FMT_STR)) { + return; } } } - if (!err) - printf("Success!\n"); - else - printf("Failed!\n"); - return err; + + pass(UNSIGNED_TEST_DESC_FMT_STR, src); } -int run_test_signed(void) +void run_test_signed(void) { int src, nrbits; union { @@ -207,9 +209,6 @@ int run_test_signed(void) } target; long long readval; unsigned int s, l; - int err = 0; - - printf("Running signed test with 0x%X\n", srcrand); src = srcrand; if (src & 0x80000000U) @@ -217,99 +216,87 @@ int run_test_signed(void) else nrbits = fls(src) + 1; /* Keep sign at 0 */ - for (s = 0; s < 8 * TEST_LEN; s++) { - for (l = nrbits; l < (8 * TEST_LEN) - s; l++) { + for (s = 0; s < CHAR_BIT * TEST_LEN; s++) { + for (l = nrbits; l < (CHAR_BIT * TEST_LEN) - s; l++) { init_byte_array(target.c, TEST_LEN, 0x0); bt_bitfield_write(target.c, signed char, s, l, src); bt_bitfield_read(target.c, signed char, s, l, &readval); - if (readval != src) { - printf("Error (bytewise) src %X read %llX shift %d len %d\n", - src, readval, s, l); - print_byte_array(target.c, TEST_LEN); - err = 1; + if (check_result(src, readval, target.c, signed char, + s, l, SIGNED_TEST_DESC_FMT_STR)) { + return; } init_byte_array(target.c, TEST_LEN, 0x0); bt_bitfield_write(target.s, short, s, l, src); bt_bitfield_read(target.c, signed char, s, l, &readval); - if (readval != src) { - printf("Error (shortwise) src %X read %llX shift %d len %d\n", - src, readval, s, l); - print_byte_array(target.c, TEST_LEN); - err = 1; + if (check_result(src, readval, target.c, short, + s, l, SIGNED_TEST_DESC_FMT_STR)) { + return; } init_byte_array(target.c, TEST_LEN, 0x0); bt_bitfield_write(target.i, int, s, l, src); bt_bitfield_read(target.c, signed char, s, l, &readval); - if (readval != src) { - printf("Error (intwise) src %X read %llX shift %d len %d\n", - src, readval, s, l); - print_byte_array(target.c, TEST_LEN); - err = 1; + if (check_result(src, readval, target.c, int, + s, l, SIGNED_TEST_DESC_FMT_STR)) { + return; } init_byte_array(target.c, TEST_LEN, 0x0); bt_bitfield_write(target.l, long, s, l, src); bt_bitfield_read(target.c, signed char, s, l, &readval); - if (readval != src) { - printf("Error (longwise) src %X read %llX shift %d len %d\n", - src, readval, s, l); - print_byte_array(target.c, TEST_LEN); - err = 1; + if (check_result(src, readval, target.c, long, + s, l, SIGNED_TEST_DESC_FMT_STR)) { + return; } init_byte_array(target.c, TEST_LEN, 0x0); bt_bitfield_write(target.ll, long long, s, l, src); bt_bitfield_read(target.c, signed char, s, l, &readval); - if (readval != src) { - printf("Error (longlongwise) src %X read %llX shift %d len %d\n", - src, readval, s, l); - print_byte_array(target.c, TEST_LEN); - err = 1; + if (check_result(src, readval, target.c, long long, + s, l, SIGNED_TEST_DESC_FMT_STR)) { + return; } } } - if (!err) - printf("Success!\n"); - else - printf("Failed!\n"); - return err; + + pass(SIGNED_TEST_DESC_FMT_STR, src); } -int run_test(void) +void run_test(void) { - int err = 0; int i; + plan_tests(NR_TESTS * 2 + 6); srand(time(NULL)); srcrand = 0; - err |= run_test_unsigned(); + run_test_unsigned(); srcrand = 0; - err |= run_test_signed(); + run_test_signed(); + srcrand = 1; - err |= run_test_unsigned(); + run_test_unsigned(); + srcrand = ~0U; - err |= run_test_unsigned(); + run_test_unsigned(); + srcrand = -1; - err |= run_test_signed(); + run_test_signed(); + srcrand = (int)0x80000000U; - err |= run_test_signed(); + run_test_signed(); for (i = 0; i < NR_TESTS; i++) { srcrand = rand(); - err |= run_test_unsigned(); - err |= run_test_signed(); + run_test_unsigned(); + run_test_signed(); } - return err; } -int main(int argc, char **argv) +static +int print_encodings(unsigned long src, unsigned int shift, unsigned int len) { - unsigned long src; - unsigned int shift, len; - int ret; union { unsigned char c[8]; unsigned short s[4]; @@ -319,53 +306,58 @@ int main(int argc, char **argv) } target; unsigned long long readval; - if (argc > 1) - src = atoi(argv[1]); - else - src = 0x12345678; - if (argc > 2) - shift = atoi(argv[2]); - else - shift = 12; - if (argc > 3) - len = atoi(argv[3]); - else - len = 40; - - target.i[0] = 0xFFFFFFFF; - target.i[1] = 0xFFFFFFFF; + init_byte_array(target.c, 8, 0xFF); bt_bitfield_write(target.c, unsigned char, shift, len, src); printf("bytewise\n"); print_byte_array(target.c, 8); - target.i[0] = 0xFFFFFFFF; - target.i[1] = 0xFFFFFFFF; + init_byte_array(target.c, 8, 0xFF); bt_bitfield_write(target.s, unsigned short, shift, len, src); printf("shortwise\n"); print_byte_array(target.c, 8); - target.i[0] = 0xFFFFFFFF; - target.i[1] = 0xFFFFFFFF; + init_byte_array(target.c, 8, 0xFF); bt_bitfield_write(target.i, unsigned int, shift, len, src); printf("intwise\n"); print_byte_array(target.c, 8); - target.i[0] = 0xFFFFFFFF; - target.i[1] = 0xFFFFFFFF; + init_byte_array(target.c, 8, 0xFF); bt_bitfield_write(target.l, unsigned long, shift, len, src); printf("longwise\n"); print_byte_array(target.c, 8); - target.i[0] = 0xFFFFFFFF; - target.i[1] = 0xFFFFFFFF; + init_byte_array(target.c, 8, 0xFF); bt_bitfield_write(target.ll, unsigned long long, shift, len, src); printf("lluwise\n"); print_byte_array(target.c, 8); bt_bitfield_read(target.c, unsigned char, shift, len, &readval); printf("read: %llX\n", readval); + print_byte_array(target.c, 8); - ret = run_test(); + return 0; +} + +int main(int argc, char **argv) +{ + if (argc > 1) { + /* Print encodings */ + unsigned long src; + unsigned int shift, len; + + src = atoi(argv[1]); + if (argc > 2) + shift = atoi(argv[2]); + else + shift = 12; + if (argc > 3) + len = atoi(argv[3]); + else + len = 40; + return print_encodings(src, shift, len); + } - return ret; + /* Run tap-formated tests */ + run_test(); + return exit_status(); } diff --git a/tests/runall.sh b/tests/runall.sh index 9e0bdca5..c10e88ab 100755 --- a/tests/runall.sh +++ b/tests/runall.sh @@ -5,44 +5,20 @@ DIR=$(readlink -f ${TESTDIR}) BABELTRACE_BIN=${DIR}/../converter/babeltrace CTF_TRACES=${DIR}/ctf-traces -function print_ok () -{ - # Check if we are a terminal - if [ -t 1 ]; then - echo -e "\e[1;32mOK\e[0m" - else - echo -e "OK" - fi -} - -function print_fail () -{ - # Check if we are a terminal - if [ -t 1 ]; then - echo -e "\e[1;31mFAIL\e[0m" - else - echo -e "FAIL" - fi -} - -function test_check () +function test_check_success () { if [ $? -ne 0 ] ; then - print_fail return 1 else - print_ok return 0 fi } function test_check_fail () { - if [ $? -ne 1 ] ; then - print_fail + if [ $? -eq 0 ] ; then return 1 else - print_ok return 0 fi } @@ -53,38 +29,48 @@ function run_babeltrace () return $? } -#run babeltrace expects success -echo -e "Running babeltrace without argument..." -run_babeltrace -test_check -if [ $? -ne 0 ]; then - exit 1 -fi - -for a in ${CTF_TRACES}/succeed/*; do - echo -e "Running babeltrace for trace ${a}..." - run_babeltrace ${a} - test_check - if [ $? -ne 0 ]; then +function print_test_result () +{ + if [ $# -ne 3 ] ; then + echo "Invalid arguments provided" exit 1 fi -done -#run babeltrace expects failure -echo -e "Running babeltrace with bogus argument..." + if [ ${2} -eq 0 ] ; then + echo -n "ok" + else + echo -n "not ok" + fi + echo -e " "${1}" - "${3} +} + +successTraces=(${CTF_TRACES}/succeed/*) +failTraces=(${CTF_TRACES}/fail/*) +testCount=$((2 + ${#successTraces[@]} + ${#failTraces[@]})) + +currentTestIndex=1 +echo -e 1..${testCount} + +#run babeltrace, expects success +run_babeltrace +test_check_success +print_test_result $((currentTestIndex++)) $? "Running babeltrace without arguments" + +#run babeltrace with a bogus argument, expects failure run_babeltrace --bogusarg test_check_fail -if [ $? -ne 0 ]; then - exit 1 -fi +print_test_result $((currentTestIndex++)) $? "Running babeltrace with a bogus argument" + +for tracePath in ${successTraces[@]}; do + run_babeltrace ${tracePath} + test_check_success + print_test_result $((currentTestIndex++)) $? "Running babeltrace with trace ${tracePath}" +done -for a in ${CTF_TRACES}/fail/*; do - echo -e "Running babeltrace for trace ${a}..." - run_babeltrace ${a} +for tracePath in ${failTraces[@]}; do + run_babeltrace ${tracePath} test_check_fail - if [ $? -ne 0 ]; then - exit 1 - fi + print_test_result $((currentTestIndex++)) $? "Running babeltrace with trace ${tracePath}" done exit 0 -- 2.34.1