From c3a1997ea20bfa7023fa5034530b9bd7965a6561 Mon Sep 17 00:00:00 2001 From: Antoine Busque Date: Mon, 28 Sep 2015 06:01:52 -0400 Subject: [PATCH 1/1] Tests: add unit tests for bt_dwarf MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit Signed-off-by: Antoine Busque Signed-off-by: Jérémie Galarneau --- .gitignore | 1 + tests/Makefile.am | 6 ++ tests/debuginfo-data/libhello.so | Bin 0 -> 40456 bytes tests/lib/Makefile.am | 11 ++++ tests/lib/test_dwarf.c | 107 +++++++++++++++++++++++++++++++ tests/lib/test_dwarf_complete | 22 +++++++ tests/tests_debuginfo | 1 + 7 files changed, 148 insertions(+) create mode 100644 tests/debuginfo-data/libhello.so create mode 100644 tests/lib/test_dwarf.c create mode 100755 tests/lib/test_dwarf_complete create mode 100644 tests/tests_debuginfo diff --git a/.gitignore b/.gitignore index 29680b76..94f6f3e2 100644 --- a/.gitignore +++ b/.gitignore @@ -5,6 +5,7 @@ /tests/lib/test_bitfield /tests/lib/test_seek /tests/lib/test_ctf_writer +/tests/lib/test_durin *.o *.a *.la diff --git a/tests/Makefile.am b/tests/Makefile.am index 507b1ba4..56e93c11 100644 --- a/tests/Makefile.am +++ b/tests/Makefile.am @@ -1,6 +1,9 @@ SUBDIRS = utils bin lib EXTRA_DIST = $(srcdir)/ctf-traces/** tests +if ENABLE_DEBUGINFO +EXTRA_DIST += $(srcdir)/debuginfo-data/** tests_debuginfo +endif SCRIPT_LIST = run.sh @@ -22,3 +25,6 @@ clean-local: check-am: ./run.sh $(srcdir)/tests +if ENABLE_DEBUGINFO + ./run.sh $(srcdir)/tests_debuginfo +endif diff --git a/tests/debuginfo-data/libhello.so b/tests/debuginfo-data/libhello.so new file mode 100644 index 0000000000000000000000000000000000000000..f0a93e5acf0965f5b5018e3fc7a1709bcb534288 GIT binary patch literal 40456 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 QS{fK|RnnkoyPWy|AA{drVE_OC literal 0 HcmV?d00001 diff --git a/tests/lib/Makefile.am b/tests/lib/Makefile.am index 8c46acb5..6a58cb8d 100644 --- a/tests/lib/Makefile.am +++ b/tests/lib/Makefile.am @@ -30,6 +30,17 @@ SCRIPT_LIST = test_seek_big_trace \ test_seek_empty_packet \ test_ctf_writer_complete +if ENABLE_DEBUGINFO +test_dwarf_LDFLAGS = -static +test_dwarf_LDADD = $(LIBTAP) \ + $(top_builddir)/lib/libbabeltrace.la \ + $(top_builddir)/lib/libdebuginfo.la +test_dwarf_SOURCES = test_dwarf.c + +noinst_PROGRAMS += test_dwarf +SCRIPT_LIST += test_dwarf_complete +endif + dist_noinst_SCRIPTS = $(SCRIPT_LIST) all-local: diff --git a/tests/lib/test_dwarf.c b/tests/lib/test_dwarf.c new file mode 100644 index 00000000..cee2d446 --- /dev/null +++ b/tests/lib/test_dwarf.c @@ -0,0 +1,107 @@ +/* + * test_dwarf.c + * + * Babeltrace bt_dwarf (DWARF utilities) tests + * + * Copyright (c) 2015 EfficiOS Inc. and Linux Foundation + * Copyright (c) 2015 Antoine Busque + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; under version 2 of the License. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License along + * with this program; if not, write to the Free Software Foundation, Inc., + * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. + */ + +#include +#include +#include +#include +#include +#include +#include "tap/tap.h" + +#define NR_TESTS 15 + +static +void test_bt_dwarf(const char *data_dir) +{ + int fd, ret, tag; + char path[PATH_MAX]; + char *die_name = NULL; + struct bt_dwarf_cu *cu = NULL; + struct bt_dwarf_die *die = NULL; + Dwarf *dwarf_info = NULL; + + snprintf(path, PATH_MAX, "%s/libhello.so", data_dir); + + fd = open(path, O_RDONLY); + ok(fd >= 0, "Open DWARF file %s", path); + dwarf_info = dwarf_begin(fd, DWARF_C_READ); + ok(dwarf_info != NULL, "dwarf_begin successful"); + cu = bt_dwarf_cu_create(dwarf_info); + ok(cu != NULL, "bt_dwarf_cu_create successful"); + ret = bt_dwarf_cu_next(cu); + ok(ret == 0, "bt_dwarf_cu_next successful"); + die = bt_dwarf_die_create(cu); + ok(die != NULL, "bt_dwarf_die_create successful"); + /* + * Test bt_dwarf_die_next twice, as the code path is different + * for DIEs at depth 0 (just created) and other depths. + */ + ret = bt_dwarf_die_next(die); + ok(ret == 0, "bt_dwarf_die_next from root DIE successful"); + ok(die->depth == 1, + "bt_dwarf_die_next from root DIE - correct depth value"); + ret = bt_dwarf_die_next(die); + ok(ret == 0, + "bt_dwarf_die_next from non-root DIE successful"); + ok(die->depth == 1, + "bt_dwarf_die_next from non-root DIE - correct depth value"); + + /* Reset DIE to test dwarf_child */ + bt_dwarf_die_destroy(die); + die = bt_dwarf_die_create(cu); + + ret = bt_dwarf_die_child(die); + ok(ret == 0, "bt_dwarf_die_child successful"); + ok(die->depth == 1, "bt_dwarf_die_child - correct depth value"); + + ret = bt_dwarf_die_get_tag(die, &tag); + ok(ret == 0, "bt_dwarf_die_get_tag successful"); + ok(tag == DW_TAG_typedef, "bt_dwarf_die_get_tag - correct tag value"); + ret = bt_dwarf_die_get_name(die, &die_name); + ok(ret == 0, "bt_dwarf_die_get_name successful"); + ok(strcmp(die_name, "size_t") == 0, + "bt_dwarf_die_get_name - correct name value"); + + bt_dwarf_die_destroy(die); + bt_dwarf_cu_destroy(cu); + dwarf_end(dwarf_info); + free(die_name); + close(fd); +} + +int main(int argc, char **argv) +{ + const char *data_dir; + + plan_tests(NR_TESTS); + + if (argc != 2) { + return EXIT_FAILURE; + } else { + data_dir = argv[1]; + } + + test_bt_dwarf(data_dir); + + return EXIT_SUCCESS; +} diff --git a/tests/lib/test_dwarf_complete b/tests/lib/test_dwarf_complete new file mode 100755 index 00000000..c6330160 --- /dev/null +++ b/tests/lib/test_dwarf_complete @@ -0,0 +1,22 @@ +#!/bin/sh +# +# Copyright (C) 2015 - Antoine Busque +# +# This program is free software; you can redistribute it and/or +# modify it under the terms of the GNU General Public License +# as published by the Free Software Foundation; only version 2 +# of the License. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. +# +CURDIR=$(dirname $0)/ +ROOTDIR=$CURDIR../.. + +$CURDIR/test_dwarf $ROOTDIR/tests/debuginfo-data diff --git a/tests/tests_debuginfo b/tests/tests_debuginfo new file mode 100644 index 00000000..e7f774cd --- /dev/null +++ b/tests/tests_debuginfo @@ -0,0 +1 @@ +lib/test_dwarf_complete \ No newline at end of file -- 2.34.1