[lttng-dev] [PATCH babeltrace 2/2] Convert the unit tests to the TAP format
Jérémie Galarneau
jeremie.galarneau at efficios.com
Thu Feb 7 17:56:15 EST 2013
Yes, I'll change the test to print more diagnostic info when an error occurs.
On Thu, Feb 7, 2013 at 5:34 PM, Mathieu Desnoyers
<mathieu.desnoyers at efficios.com> wrote:
> * Jérémie Galarneau (jeremie.galarneau at efficios.com) wrote:
>>
>> Signed-off-by: Jérémie Galarneau <jeremie.galarneau at efficios.com>
>> ---
>> tests/lib/Makefile.am | 2 +
>> tests/lib/test-bitfield.c | 242 +++++++++++++++++++---------------------------
>> tests/runall.sh | 88 +++++++----------
>> 3 files changed, 139 insertions(+), 193 deletions(-)
>>
>> diff --git a/tests/lib/Makefile.am b/tests/lib/Makefile.am
>> index 0613beb..01831de 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 3bf7568..9b8e737 100644
>> --- a/tests/lib/test-bitfield.c
>> +++ b/tests/lib/test-bitfield.c
>> @@ -25,6 +25,8 @@
>> #include <stdlib.h>
>> #include <stdio.h>
>>
>> +#include "tap.h"
>> +
>> unsigned int glob;
>>
>> /*
>> @@ -130,8 +132,6 @@ int run_test_unsigned(void)
>> unsigned int s, l;
>> int err = 0;
>>
>> - printf("Running unsigned test with 0x%X\n", srcrand);
>> -
>> src = srcrand;
>> nrbits = fls(src);
>>
>> @@ -140,58 +140,38 @@ 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);
>
> we seem to be losing a lot of information with this change. Is it
> possible to keep this info with the transition to TAP when an error is
> detected ?
>
> Thanks,
>
> Mathieu
>
>> - err = 1;
>> - }
>> + err = readval != src ? 1 : err;
>>
>> 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;
>> - }
>> + err = readval != src ? 1 : err;
>>
>> 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;
>> - }
>> + err = readval != src ? 1 : err;
>>
>> 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;
>> - }
>> + err = readval != src ? 1 : err;
>>
>> 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;
>> + err = readval != src ? 1 : err;
>> +
>> + if (err) {
>> + goto end;
>> }
>> }
>> }
>> - if (!err)
>> - printf("Success!\n");
>> - else
>> - printf("Failed!\n");
>> +end:
>> + ok(err == 0, "Writing and reading back 0x%X, unsigned", src);
>> + if (err) {
>> + printf("# Failed with start=%i and length=%i\n", s, l);
>> + }
>> return err;
>> }
>>
>> @@ -209,163 +189,141 @@ int run_test_signed(void)
>> unsigned int s, l;
>> int err = 0;
>>
>> - printf("Running signed test with 0x%X\n", srcrand);
>> -
>> src = srcrand;
>> if (src & 0x80000000U)
>> nrbits = fls(~src) + 1; /* Find least significant bit conveying sign */
>> 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;
>> - }
>> + err = readval != src ? 1 : err;
>>
>> 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;
>> - }
>> + err = readval != src ? 1 : err;
>>
>> 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;
>> - }
>> + err = readval != src ? 1 : err;
>>
>> 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;
>> - }
>> + err = readval != src ? 1 : err;
>>
>> 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;
>> + err = readval != src ? 1 : err;
>> +
>> + if (err) {
>> + goto end;
>> }
>> }
>> }
>> - if (!err)
>> - printf("Success!\n");
>> - else
>> - printf("Failed!\n");
>> +end:
>> + ok(err == 0, "Writing and reading back 0x%X, signed", src);
>> + if (err) {
>> + printf("#Failed with start=%i and length=%i\n", s, l);
>> + }
>> return err;
>> }
>>
>> -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)
>> {
>> - unsigned long src;
>> - unsigned int shift, len;
>> - int ret;
>> - union {
>> - unsigned char c[8];
>> - unsigned short s[4];
>> - unsigned int i[2];
>> - unsigned long l[2];
>> - unsigned long long ll[1];
>> - } target;
>> - unsigned long long readval;
>> + if (argc > 1) {
>> + /* Run interactive tests */
>> + unsigned long src;
>> + unsigned int shift, len;
>> + union {
>> + unsigned char c[8];
>> + unsigned short s[4];
>> + unsigned int i[2];
>> + unsigned long l[2];
>> + unsigned long long ll[1];
>> + } 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;
>> - 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;
>> - 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;
>> - 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;
>> - 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;
>> - 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);
>> -
>> - ret = run_test();
>> -
>> - return ret;
>> + if (argc > 2)
>> + shift = atoi(argv[2]);
>> + else
>> + shift = 12;
>> + if (argc > 3)
>> + len = atoi(argv[3]);
>> + else
>> + len = 40;
>> +
>> + 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);
>> +
>> + 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);
>> +
>> + 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);
>> +
>> + 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);
>> +
>> + 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);
>> +
>> + return 0;
>> + }
>> +
>> + /* Run tap-formated tests */
>> + run_test();
>> + return exit_status();
>> }
>> diff --git a/tests/runall.sh b/tests/runall.sh
>> index 9e0bdca..c10e88a 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
>> --
>> 1.8.1.1
>>
>>
>> _______________________________________________
>> lttng-dev mailing list
>> lttng-dev at lists.lttng.org
>> http://lists.lttng.org/cgi-bin/mailman/listinfo/lttng-dev
>
> --
> Mathieu Desnoyers
> EfficiOS Inc.
> http://www.efficios.com
More information about the lttng-dev
mailing list