summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJiri Olsa <Jiri Olsa jolsa@redhat.com>2011-06-15 23:20:25 +0200
committerJiri Olsa <Jiri Olsa jolsa@redhat.com>2011-06-17 12:08:26 +0200
commit73ae529a915c6445d5cf0a43f8cba140d7d79e83 (patch)
treef9154c63353bd04e0a73f6d086f867525b1d349c
parent23916445a712b64e34735a7d06bc69bfcfa4b3b6 (diff)
downloadlatrace-73ae529a915c6445d5cf0a43f8cba140d7d79e83.tar.gz
latrace-73ae529a915c6445d5cf0a43f8cba140d7d79e83.tar.xz
latrace-73ae529a915c6445d5cf0a43f8cba140d7d79e83.zip
test: Add tests for LIBS*/SYM* options
Added automated tests for most of the LIBS*/SYM* options. Missing tests for options: LIBS_TO, LIBS_FROM, SYM_BELOW, SYM_NOEXIT
-rw-r--r--ChangeLog1
-rw-r--r--test/Makefile43
-rw-r--r--test/lib-test-libsym1.c3
-rw-r--r--test/lib-test-libsym2.c3
-rw-r--r--test/lib-test-libsym3.c3
-rw-r--r--test/script/test_libsym.sh141
-rw-r--r--test/test-args.h15
-rw-r--r--test/test-lib.c2
-rw-r--r--test/test-lib.h15
-rw-r--r--test/test-libsym.c283
-rwxr-xr-xtest/test.sh1
11 files changed, 488 insertions, 22 deletions
diff --git a/ChangeLog b/ChangeLog
index 4fc640b..8d77775 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -4,6 +4,7 @@
* move all tests to scripts
* added following options
LIBS, LIBS_TO, LIBS_FROM, SYM, SYM_OMIT, SYM_BELOW, SYM_NOEXIT
+ * automated tests for LIBS*/SYM*
2011-06-02 Jiri Olsa <olsajiri@gmail.com>
* adding large file support
diff --git a/test/Makefile b/test/Makefile
index 30de2a1..418760e 100644
--- a/test/Makefile
+++ b/test/Makefile
@@ -7,6 +7,15 @@ lib-test-common.so: test/lib-test-common.o
lib-test-args.so: test/lib-test-args.o
$(QUIET_LD)$(CC) $(CFLAGS) -fPIC -shared $(LDFLAGS) -o $@ $^
+lib-test-libsym1.so: test/lib-test-libsym1.o
+ $(QUIET_LD)$(CC) $(CFLAGS) -fPIC -shared $(LDFLAGS) -o $@ $^
+
+lib-test-libsym2.so: test/lib-test-libsym2.o
+ $(QUIET_LD)$(CC) $(CFLAGS) -fPIC -shared $(LDFLAGS) -o $@ $^
+
+lib-test-libsym3.so: test/lib-test-libsym3.o
+ $(QUIET_LD)$(CC) $(CFLAGS) -fPIC -shared $(LDFLAGS) -o $@ $^
+
test-common: test/test-lib.o test/test-common.o
$(QUIET_LD)$(CC) $(CFLAGS) $(LDFLAGS) -o $@ $^ lib-test-common.so
@@ -16,17 +25,37 @@ test-args: test/test-lib.o test/test-args.o test/sysdeps/$(CONFIG_SYSDEP_DIR)/te
test-kill: test/test-kill.o
$(QUIET_LD)$(CC) $(CFLAGS) $(LDFLAGS) -o $@ $^
+test-libsym: test/test-libsym.o test/test-lib.o
+ $(QUIET_LD)$(CC) $(CFLAGS) $(LDFLAGS) -o $@ $^ lib-test-libsym1.so lib-test-libsym2.so lib-test-libsym3.so
+
OBJS+=test/test-lib.o
-PROGRAMS+=lib-test-args.so test-args
-OBJS+=test/lib-test-args.o \
+PROGRAMS+=\
+ lib-test-args.so \
+ test-args
+OBJS+=\
+ test/lib-test-args.o \
test/test-args.o \
test/sysdeps/$(CONFIG_SYSDEP_DIR)/test-args.o
-
-PROGRAMS+=lib-test-common.so test-common
-OBJS+=test/lib-test-common.o \
+PROGRAMS+=\
+ lib-test-common.so \
+ test-common
+OBJS+=\
+ test/lib-test-common.o \
test/test-common.o
-PROGRAMS+=test-kill
-OBJS+= test/test-kill.o
+PROGRAMS+=\
+ lib-test-libsym1.so \
+ lib-test-libsym2.so \
+ lib-test-libsym3.so \
+ test-libsym
+OBJS+=\
+ test/test-libsym.o \
+ test/lib-test-libsym1.o
+
+PROGRAMS+=\
+ test-kill
+OBJS+=\
+ test/test-kill.o
+
diff --git a/test/lib-test-libsym1.c b/test/lib-test-libsym1.c
new file mode 100644
index 0000000..2f5dd4c
--- /dev/null
+++ b/test/lib-test-libsym1.c
@@ -0,0 +1,3 @@
+void test_libsym1_1(void) { }
+void test_libsym1_2(void) { }
+void test_libsym1_3(void) { }
diff --git a/test/lib-test-libsym2.c b/test/lib-test-libsym2.c
new file mode 100644
index 0000000..49505fa
--- /dev/null
+++ b/test/lib-test-libsym2.c
@@ -0,0 +1,3 @@
+void test_libsym2_1(void) { }
+void test_libsym2_2(void) { }
+void test_libsym2_3(void) { }
diff --git a/test/lib-test-libsym3.c b/test/lib-test-libsym3.c
new file mode 100644
index 0000000..61bf329
--- /dev/null
+++ b/test/lib-test-libsym3.c
@@ -0,0 +1,3 @@
+void test_libsym3_1(void) { }
+void test_libsym3_2(void) { }
+void test_libsym3_3(void) { }
diff --git a/test/script/test_libsym.sh b/test/script/test_libsym.sh
new file mode 100644
index 0000000..0e8ad8a
--- /dev/null
+++ b/test/script/test_libsym.sh
@@ -0,0 +1,141 @@
+. $PWD/test/script/functions.sh
+
+function tls_cleanup
+{
+ rm -f /tmp/tls_latrace.conf
+}
+
+function test_libsym_all
+{
+ LD_LIBRARY_PATH=$PWD ./latrace -qR $PWD/test-libsym all > /dev/null
+ CHECK_RET
+}
+
+function test_libsym_lib1
+{
+ cat > /tmp/tls_latrace.conf <<EOF
+OPTIONS {
+ LIBS=*lib-test-libsym1
+}
+EOF
+ LD_LIBRARY_PATH=$PWD ./latrace -qR -N /tmp/tls_latrace.conf $PWD/test-libsym lib1 > /dev/null
+ CHECK_RET
+}
+
+function test_libsym_lib2
+{
+ cat > /tmp/tls_latrace.conf <<EOF
+OPTIONS {
+ LIBS=*lib-test-libsym2
+}
+EOF
+ LD_LIBRARY_PATH=$PWD ./latrace -qR -N /tmp/tls_latrace.conf $PWD/test-libsym lib2 > /dev/null
+ CHECK_RET
+}
+
+function test_libsym_lib3
+{
+ cat > /tmp/tls_latrace.conf <<EOF
+OPTIONS {
+ LIBS=*lib-test-libsym3
+}
+EOF
+ LD_LIBRARY_PATH=$PWD ./latrace -qR -N /tmp/tls_latrace.conf $PWD/test-libsym lib3 > /dev/null
+ CHECK_RET
+}
+
+function test_libsym_lib1lib2
+{
+ cat > /tmp/tls_latrace.conf <<EOF
+OPTIONS {
+ LIBS=*lib-test-libsym1,*lib-test-libsym2
+}
+EOF
+ LD_LIBRARY_PATH=$PWD ./latrace -qR -N /tmp/tls_latrace.conf $PWD/test-libsym lib1lib2 > /dev/null
+ CHECK_RET
+}
+
+function test_libsym_lib2lib3
+{
+ cat > /tmp/tls_latrace.conf <<EOF
+OPTIONS {
+ LIBS=*lib-test-libsym2,*lib-test-libsym3
+}
+EOF
+ LD_LIBRARY_PATH=$PWD ./latrace -qR -N /tmp/tls_latrace.conf $PWD/test-libsym lib2lib3 > /dev/null
+ CHECK_RET
+}
+
+function test_libsym_lib1lib2lib3
+{
+ cat > /tmp/tls_latrace.conf <<EOF
+OPTIONS {
+ LIBS=*lib-test-libsym1,*lib-test-libsym2,*lib-test-libsym3
+}
+EOF
+ LD_LIBRARY_PATH=$PWD ./latrace -qR -N /tmp/tls_latrace.conf $PWD/test-libsym lib1lib2lib3 > /dev/null
+ CHECK_RET
+}
+
+function test_libsym_sym1
+{
+ cat > /tmp/tls_latrace.conf <<EOF
+OPTIONS {
+ SYM=test_libsym1_1
+}
+EOF
+ LD_LIBRARY_PATH=$PWD ./latrace -qR -N /tmp/tls_latrace.conf $PWD/test-libsym sym1 > /dev/null
+ CHECK_RET
+}
+
+function test_libsym_sym2sym3
+{
+ cat > /tmp/tls_latrace.conf <<EOF
+OPTIONS {
+ SYM=test_libsym2_2,test_libsym3_3
+}
+EOF
+ LD_LIBRARY_PATH=$PWD ./latrace -qR -N /tmp/tls_latrace.conf $PWD/test-libsym sym2sym3 > /dev/null
+ CHECK_RET
+}
+
+function test_libsym_omit_sym1
+{
+ cat > /tmp/tls_latrace.conf <<EOF
+OPTIONS {
+ SYM_OMIT=test_libsym1_1
+}
+EOF
+ LD_LIBRARY_PATH=$PWD ./latrace -qR -N /tmp/tls_latrace.conf $PWD/test-libsym omit_sym1 > /dev/null
+ CHECK_RET
+}
+
+function test_libsym_omit_sym2sym3
+{
+ cat > /tmp/tls_latrace.conf <<EOF
+OPTIONS {
+ SYM_OMIT=test_libsym2_3,test_libsym3_2
+}
+EOF
+ LD_LIBRARY_PATH=$PWD ./latrace -qR -N /tmp/tls_latrace.conf $PWD/test-libsym omit_sym2sym3 > /dev/null
+ CHECK_RET
+}
+
+function test_libsym
+{
+ test_libsym_all
+ test_libsym_lib1
+ test_libsym_lib2
+ test_libsym_lib3
+ test_libsym_lib1lib2
+ test_libsym_lib2lib3
+ test_libsym_lib1lib2lib3
+ test_libsym_sym1
+ test_libsym_sym2sym3
+ test_libsym_omit_sym1
+ test_libsym_omit_sym2sym3
+
+# TODO tests for LIBS_TO, LIBS_FROM, SYM_BELOW, SYM_NOEXIT
+
+ tls_cleanup
+}
diff --git a/test/test-args.h b/test/test-args.h
index d116382..b25fbb9 100644
--- a/test/test-args.h
+++ b/test/test-args.h
@@ -13,19 +13,4 @@ do { \
sh->hide_tid = 1; \
} while(0)
-#define LOCAL_TEST(data, cnt, test) \
-do { \
- char buf[BUFSIZE]; \
- int ret; \
- TEST_START(); \
- test; \
- TEST_STOP(); \
- ret = fout_read(sh, buf, BUFSIZE); \
- if (!ret) \
- return -1; \
- ret = re_test(buf, data, cnt); \
- if (RE_TEST_OK != ret) \
- FAILED("test %i, pattern '%s'\n", ret, data[ret].pat); \
-} while(0)
-
#endif /* TEST_ARGS_H */
diff --git a/test/test-lib.c b/test/test-lib.c
index a9e9706..9edc960 100644
--- a/test/test-lib.c
+++ b/test/test-lib.c
@@ -187,6 +187,8 @@ int re_test(char *line, struct re_test_data *data, int cnt)
return i;
break;
}
+
+ /* TODO ??? line += m[0].rm_eo; */
}
return RE_TEST_OK;
diff --git a/test/test-lib.h b/test/test-lib.h
index 54c1472..de9c10f 100644
--- a/test/test-lib.h
+++ b/test/test-lib.h
@@ -62,4 +62,19 @@ do { \
#define BUFSIZE 1000
+#define LOCAL_TEST(data, cnt, test) \
+do { \
+ char buf[BUFSIZE]; \
+ int ret; \
+ TEST_START(); \
+ test; \
+ TEST_STOP(); \
+ ret = fout_read(sh, buf, BUFSIZE); \
+ if (!ret) \
+ return -1; \
+ ret = re_test(buf, data, cnt); \
+ if (RE_TEST_OK != ret) \
+ FAILED("test %i, pattern '%s'\n", ret, data[ret].pat); \
+} while(0)
+
#endif
diff --git a/test/test-libsym.c b/test/test-libsym.c
new file mode 100644
index 0000000..0a3af76
--- /dev/null
+++ b/test/test-libsym.c
@@ -0,0 +1,283 @@
+
+#include <config.h>
+#include <test/test-lib.h>
+#include <string.h>
+
+void test_libsym1_1(void);
+void test_libsym1_2(void);
+void test_libsym1_3(void);
+void test_libsym2_1(void);
+void test_libsym2_2(void);
+void test_libsym2_3(void);
+void test_libsym3_1(void);
+void test_libsym3_2(void);
+void test_libsym3_3(void);
+
+static void test_libsym(void)
+{
+ test_libsym1_1();
+ test_libsym1_2();
+ test_libsym1_3();
+ test_libsym2_1();
+ test_libsym2_2();
+ test_libsym2_3();
+ test_libsym3_1();
+ test_libsym3_2();
+ test_libsym3_3();
+}
+
+/* TODO
+ * so far following tests check for displayed output.. need
+ * some intelligent regex to check unwanted output is really
+ * not displayed */
+
+static int test_all(struct lt_config_shared *sh)
+{
+ struct re_test_data data1[] = {
+ { RE_TEST_TYPE_STR, 0, -1, "test_libsym1_1 \\[[^]]+lib-test-libsym1.so\\]" },
+ { RE_TEST_TYPE_STR, -1, -1, "test_libsym1_2 \\[[^]]+lib-test-libsym1.so\\]" },
+ { RE_TEST_TYPE_STR, -1, -1, "test_libsym1_3 \\[[^]]+lib-test-libsym1.so\\]" },
+ { RE_TEST_TYPE_STR, -1, -1, "test_libsym2_1 \\[[^]]+lib-test-libsym2.so\\]" },
+ { RE_TEST_TYPE_STR, -1, -1, "test_libsym2_2 \\[[^]]+lib-test-libsym2.so\\]" },
+ { RE_TEST_TYPE_STR, -1, -1, "test_libsym2_3 \\[[^]]+lib-test-libsym2.so\\]" },
+ { RE_TEST_TYPE_STR, -1, -1, "test_libsym3_1 \\[[^]]+lib-test-libsym3.so\\]" },
+ { RE_TEST_TYPE_STR, -1, -1, "test_libsym3_2 \\[[^]]+lib-test-libsym3.so\\]" },
+ { RE_TEST_TYPE_STR, -1, -1, "test_libsym3_3 \\[[^]]+lib-test-libsym3.so\\]" },
+ };
+ #define DATA_CNT(num) (sizeof(data ## num)/sizeof(struct re_test_data))
+
+ config_clear(sh);
+ sh->hide_tid = 1;
+
+ LOCAL_TEST(data1, DATA_CNT(1), test_libsym());
+ PASSED();
+ return 0;
+}
+
+static int test_lib1(struct lt_config_shared *sh)
+{
+ struct re_test_data data1[] = {
+ { RE_TEST_TYPE_STR, 0, -1, "test_libsym1_1 \\[[^]]+lib-test-libsym1.so\\]" },
+ { RE_TEST_TYPE_STR, -1, -1, "test_libsym1_2 \\[[^]]+lib-test-libsym1.so\\]" },
+ { RE_TEST_TYPE_STR, -1, -1, "test_libsym1_3 \\[[^]]+lib-test-libsym1.so\\]" },
+ };
+ #define DATA_CNT(num) (sizeof(data ## num)/sizeof(struct re_test_data))
+
+ config_clear(sh);
+ sh->hide_tid = 1;
+
+ LOCAL_TEST(data1, DATA_CNT(1), test_libsym());
+ PASSED();
+ return 0;
+}
+
+static int test_lib2(struct lt_config_shared *sh)
+{
+ struct re_test_data data1[] = {
+ { RE_TEST_TYPE_STR, 0, -1, "test_libsym2_1 \\[[^]]+lib-test-libsym2.so\\]" },
+ { RE_TEST_TYPE_STR, -1, -1, "test_libsym2_2 \\[[^]]+lib-test-libsym2.so\\]" },
+ { RE_TEST_TYPE_STR, -1, -1, "test_libsym2_3 \\[[^]]+lib-test-libsym2.so\\]" },
+ };
+ #define DATA_CNT(num) (sizeof(data ## num)/sizeof(struct re_test_data))
+
+ config_clear(sh);
+ sh->hide_tid = 1;
+
+ LOCAL_TEST(data1, DATA_CNT(1), test_libsym());
+ PASSED();
+ return 0;
+}
+
+static int test_lib3(struct lt_config_shared *sh)
+{
+ struct re_test_data data1[] = {
+ { RE_TEST_TYPE_STR, 0, -1, "test_libsym3_1 \\[[^]]+lib-test-libsym3.so\\]" },
+ { RE_TEST_TYPE_STR, -1, -1, "test_libsym3_2 \\[[^]]+lib-test-libsym3.so\\]" },
+ { RE_TEST_TYPE_STR, -1, -1, "test_libsym3_3 \\[[^]]+lib-test-libsym3.so\\]" },
+ };
+ #define DATA_CNT(num) (sizeof(data ## num)/sizeof(struct re_test_data))
+
+ config_clear(sh);
+ sh->hide_tid = 1;
+
+ LOCAL_TEST(data1, DATA_CNT(1), test_libsym());
+ PASSED();
+ return 0;
+}
+
+static int test_lib1lib2(struct lt_config_shared *sh)
+{
+ struct re_test_data data1[] = {
+ { RE_TEST_TYPE_STR, 0, -1, "test_libsym1_1 \\[[^]]+lib-test-libsym1.so\\]" },
+ { RE_TEST_TYPE_STR, -1, -1, "test_libsym1_2 \\[[^]]+lib-test-libsym1.so\\]" },
+ { RE_TEST_TYPE_STR, -1, -1, "test_libsym1_3 \\[[^]]+lib-test-libsym1.so\\]" },
+ { RE_TEST_TYPE_STR, -1, -1, "test_libsym2_1 \\[[^]]+lib-test-libsym2.so\\]" },
+ { RE_TEST_TYPE_STR, -1, -1, "test_libsym2_2 \\[[^]]+lib-test-libsym2.so\\]" },
+ { RE_TEST_TYPE_STR, -1, -1, "test_libsym2_3 \\[[^]]+lib-test-libsym2.so\\]" },
+ };
+ #define DATA_CNT(num) (sizeof(data ## num)/sizeof(struct re_test_data))
+
+ config_clear(sh);
+ sh->hide_tid = 1;
+
+ LOCAL_TEST(data1, DATA_CNT(1), test_libsym());
+ PASSED();
+ return 0;
+}
+
+static int test_lib2lib3(struct lt_config_shared *sh)
+{
+ struct re_test_data data1[] = {
+ { RE_TEST_TYPE_STR, 0, -1, "test_libsym2_1 \\[[^]]+lib-test-libsym2.so\\]" },
+ { RE_TEST_TYPE_STR, -1, -1, "test_libsym2_2 \\[[^]]+lib-test-libsym2.so\\]" },
+ { RE_TEST_TYPE_STR, -1, -1, "test_libsym2_3 \\[[^]]+lib-test-libsym2.so\\]" },
+ { RE_TEST_TYPE_STR, -1, -1, "test_libsym3_1 \\[[^]]+lib-test-libsym3.so\\]" },
+ { RE_TEST_TYPE_STR, -1, -1, "test_libsym3_2 \\[[^]]+lib-test-libsym3.so\\]" },
+ { RE_TEST_TYPE_STR, -1, -1, "test_libsym3_3 \\[[^]]+lib-test-libsym3.so\\]" },
+ };
+ #define DATA_CNT(num) (sizeof(data ## num)/sizeof(struct re_test_data))
+
+ config_clear(sh);
+ sh->hide_tid = 1;
+
+ LOCAL_TEST(data1, DATA_CNT(1), test_libsym());
+ PASSED();
+ return 0;
+}
+
+static int test_lib1lib2lib3(struct lt_config_shared *sh)
+{
+ struct re_test_data data1[] = {
+ { RE_TEST_TYPE_STR, 0, -1, "test_libsym1_1 \\[[^]]+lib-test-libsym1.so\\]" },
+ { RE_TEST_TYPE_STR, -1, -1, "test_libsym1_2 \\[[^]]+lib-test-libsym1.so\\]" },
+ { RE_TEST_TYPE_STR, -1, -1, "test_libsym1_3 \\[[^]]+lib-test-libsym1.so\\]" },
+ { RE_TEST_TYPE_STR, -1, -1, "test_libsym2_1 \\[[^]]+lib-test-libsym2.so\\]" },
+ { RE_TEST_TYPE_STR, -1, -1, "test_libsym2_2 \\[[^]]+lib-test-libsym2.so\\]" },
+ { RE_TEST_TYPE_STR, -1, -1, "test_libsym2_3 \\[[^]]+lib-test-libsym2.so\\]" },
+ { RE_TEST_TYPE_STR, -1, -1, "test_libsym3_1 \\[[^]]+lib-test-libsym3.so\\]" },
+ { RE_TEST_TYPE_STR, -1, -1, "test_libsym3_2 \\[[^]]+lib-test-libsym3.so\\]" },
+ { RE_TEST_TYPE_STR, -1, -1, "test_libsym3_3 \\[[^]]+lib-test-libsym3.so\\]" },
+ };
+ #define DATA_CNT(num) (sizeof(data ## num)/sizeof(struct re_test_data))
+
+ config_clear(sh);
+ sh->hide_tid = 1;
+
+ LOCAL_TEST(data1, DATA_CNT(1), test_libsym());
+ PASSED();
+ return 0;
+}
+
+static int test_sym1(struct lt_config_shared *sh)
+{
+ struct re_test_data data1[] = {
+ { RE_TEST_TYPE_STR, -1, -1, "test_libsym1_1 \\[[^]]+lib-test-libsym1.so\\]" },
+ };
+ #define DATA_CNT(num) (sizeof(data ## num)/sizeof(struct re_test_data))
+
+ config_clear(sh);
+ sh->hide_tid = 1;
+
+ LOCAL_TEST(data1, DATA_CNT(1), test_libsym());
+ PASSED();
+ return 0;
+}
+
+static int test_sym2sym3(struct lt_config_shared *sh)
+{
+ struct re_test_data data1[] = {
+ { RE_TEST_TYPE_STR, 0, -1, "test_libsym2_2 \\[[^]]+lib-test-libsym2.so\\]" },
+ { RE_TEST_TYPE_STR, -1, -1, "test_libsym3_3 \\[[^]]+lib-test-libsym3.so\\]" },
+ };
+ #define DATA_CNT(num) (sizeof(data ## num)/sizeof(struct re_test_data))
+
+ config_clear(sh);
+ sh->hide_tid = 1;
+
+ LOCAL_TEST(data1, DATA_CNT(1), test_libsym());
+ PASSED();
+ return 0;
+}
+
+static int test_omit_sym1(struct lt_config_shared *sh)
+{
+ struct re_test_data data1[] = {
+ { RE_TEST_TYPE_STR, -1, -1, "test_libsym1_2 \\[[^]]+lib-test-libsym1.so\\]" },
+ { RE_TEST_TYPE_STR, -1, -1, "test_libsym1_3 \\[[^]]+lib-test-libsym1.so\\]" },
+ { RE_TEST_TYPE_STR, -1, -1, "test_libsym2_1 \\[[^]]+lib-test-libsym2.so\\]" },
+ { RE_TEST_TYPE_STR, -1, -1, "test_libsym2_2 \\[[^]]+lib-test-libsym2.so\\]" },
+ { RE_TEST_TYPE_STR, -1, -1, "test_libsym2_3 \\[[^]]+lib-test-libsym2.so\\]" },
+ { RE_TEST_TYPE_STR, -1, -1, "test_libsym3_1 \\[[^]]+lib-test-libsym3.so\\]" },
+ { RE_TEST_TYPE_STR, -1, -1, "test_libsym3_2 \\[[^]]+lib-test-libsym3.so\\]" },
+ { RE_TEST_TYPE_STR, -1, -1, "test_libsym3_3 \\[[^]]+lib-test-libsym3.so\\]" },
+ };
+ #define DATA_CNT(num) (sizeof(data ## num)/sizeof(struct re_test_data))
+
+ config_clear(sh);
+ sh->hide_tid = 1;
+
+ LOCAL_TEST(data1, DATA_CNT(1), test_libsym());
+ PASSED();
+ return 0;
+}
+
+static int test_omit_sym2sym3(struct lt_config_shared *sh)
+{
+ struct re_test_data data1[] = {
+ { RE_TEST_TYPE_STR, 0, -1, "test_libsym1_1 \\[[^]]+lib-test-libsym1.so\\]" },
+ { RE_TEST_TYPE_STR, -1, -1, "test_libsym1_2 \\[[^]]+lib-test-libsym1.so\\]" },
+ { RE_TEST_TYPE_STR, -1, -1, "test_libsym1_3 \\[[^]]+lib-test-libsym1.so\\]" },
+ { RE_TEST_TYPE_STR, -1, -1, "test_libsym2_1 \\[[^]]+lib-test-libsym2.so\\]" },
+ { RE_TEST_TYPE_STR, -1, -1, "test_libsym2_2 \\[[^]]+lib-test-libsym2.so\\]" },
+ { RE_TEST_TYPE_STR, -1, -1, "test_libsym3_1 \\[[^]]+lib-test-libsym3.so\\]" },
+ { RE_TEST_TYPE_STR, -1, -1, "test_libsym3_3 \\[[^]]+lib-test-libsym3.so\\]" },
+ };
+ #define DATA_CNT(num) (sizeof(data ## num)/sizeof(struct re_test_data))
+
+ config_clear(sh);
+ sh->hide_tid = 1;
+
+ LOCAL_TEST(data1, DATA_CNT(1), test_libsym());
+ PASSED();
+ return 0;
+}
+
+int main(int argc, char **argv)
+{
+ struct lt_config_shared *sh;
+ char *test;
+
+ if (argc != 2)
+ return -1;
+
+ test = argv[1];
+
+ sh = config_init();
+ if (!sh)
+ return -1;
+
+ if (!strcmp(test, "all"))
+ TEST(test_all);
+ else if (!strcmp(test, "lib1"))
+ TEST(test_lib1);
+ else if (!strcmp(test, "lib2"))
+ TEST(test_lib2);
+ else if (!strcmp(test, "lib3"))
+ TEST(test_lib3);
+ else if (!strcmp(test, "lib1lib2"))
+ TEST(test_lib1lib2);
+ else if (!strcmp(test, "lib2lib3"))
+ TEST(test_lib2lib3);
+ else if (!strcmp(test, "lib1lib2lib3"))
+ TEST(test_lib1lib2lib3);
+ else if (!strcmp(test, "sym1"))
+ TEST(test_sym1);
+ else if (!strcmp(test, "sym2sym3"))
+ TEST(test_sym2sym3);
+ else if (!strcmp(test, "omit_sym1"))
+ TEST(test_omit_sym1);
+ else if (!strcmp(test, "omit_sym2sym3"))
+ TEST(test_omit_sym2sym3);
+
+ return 0;
+}
diff --git a/test/test.sh b/test/test.sh
index 46f8cf8..b6de16b 100755
--- a/test/test.sh
+++ b/test/test.sh
@@ -9,3 +9,4 @@ TEST test_args
TEST test_common
TEST test_tty_output
TEST test_kill
+TEST test_libsym