244 lines
7.1 KiB
Text
244 lines
7.1 KiB
Text
README for ltrace testsuite
|
|
18, October, 2005 by Yao Qi <qiyao@cn.ibm.com>
|
|
|
|
This is the README file for ltrace testsuite.
|
|
|
|
Quick Overview
|
|
==============
|
|
|
|
This testsuite is based on the dejagnu framework, which is again
|
|
dependent on Expect and Tcl. So all these three package (tcl, expect
|
|
and dejagnu) should be installed on your system before running these
|
|
tests.
|
|
|
|
After unpacking file ltrace-0.3.36.tar.gz:
|
|
|
|
tar -zxvfm ltrace-0.3.36.tar.gz
|
|
|
|
you'll find a directory named ltrace-0.3.36, which contains:
|
|
|
|
debian etc testsuite sysdeps
|
|
|
|
you can first build this package, then run the testsuite in the
|
|
following steps:
|
|
|
|
1 cd ltrace-0.3.36
|
|
|
|
2 Confiugre ltrace for 32-bit mode or 64-bit mode.
|
|
./configure
|
|
OR CC='gcc -m64' ./configure
|
|
|
|
3 Build ltace
|
|
make
|
|
|
|
4 Run all the test in default mode.
|
|
make check
|
|
|
|
The default is to test the ltrace just built, using the default
|
|
compiler options. You can control this by adding a symbol to 'make check':
|
|
|
|
To test the shipped ltrace tool (as opposed to the just built by "make")
|
|
|
|
--tool_exec=/usr/bin/ltrace
|
|
|
|
To change compiler switches for the target test cases
|
|
|
|
CFLAGS_FOR_TARGET=-m64
|
|
|
|
To change the target compiler (instead of shipped gcc)
|
|
|
|
CC_FOR_TARGET=/opt/gcc-4.0/bin/gcc
|
|
|
|
|
|
You can run all the tests in different mode respectively as follows,
|
|
|
|
(1) ./run-my-tests.sh -m32
|
|
OR make check
|
|
|
|
(test ltrace in build tree and compile test cases in 32-bit mode)
|
|
|
|
(2) ./run-my-tests.sh -m64
|
|
OR make check RUNTESTFLAGS="CFLAGS_FOR_TARGET=-m64"
|
|
|
|
(test ltrace in build tree and compile test cases in 64-bit mode)
|
|
|
|
(3) ./run-my-tests.sh -m32 /usr/bin/ltrace
|
|
OR make check RUNTESTFLAGS="--tool_exec=/usr/bin/ltrace"
|
|
|
|
(test shipped ltrace and compile test cases in 32-bit mode)
|
|
|
|
(4) ./run-my-tests.sh -m64 /usr/bin/ltrace
|
|
OR make check RUNTESTFLAGS="--tool_exec=/usr/bin/ltrace CFLAGS_FOR_TARGET=-m64"
|
|
|
|
(run shipped ltrace and compile test cases in 64-bit mode)
|
|
|
|
(5) cd testsuite; make test
|
|
|
|
(run ltrace in build tree and compile test cases same as ltrace itself)
|
|
|
|
|
|
(6) make check RUNTESTFLAGS="--tool_exec=/usr/bin/ltrace CFLAGS_FOR_TARGET=-m64 CC_FOR_TARGET=/opt/gcc-4.0/bin/gcc"
|
|
|
|
(run shipped ltrace and compile test cases in 64 bit mode by /opt/gcc-4.0/bin/gcc)
|
|
Ltrace Testsuite
|
|
================
|
|
|
|
This testsuite for ltrace is a DejaGNU based testsuite that can
|
|
either be used to test your newly built ltrace, or for regression
|
|
testing a ltrace with local modifications.
|
|
|
|
Running the testsuite requires the prior installation of DejaGNU.
|
|
The directory ftp://sources.redhat.com/pub/dejagnu/ will contain a
|
|
recent snapshot. Once DejaGNU is installed or built and add the
|
|
location of runtest into $PATH, you can run the tests in one of the
|
|
four ways it mentioned in Quick Overview. The DejaGNU framework could
|
|
be built in following steps:
|
|
|
|
1 Uppack these three packages.
|
|
tar zxvf dejagnu-1.4.4.tar.gz
|
|
tar zxvf tcl8.4.9-src.tar.gz
|
|
tar zxvf expect-5.43.0.tar.gz
|
|
|
|
2 Build them and install.
|
|
cd dejagnu-1.4.4
|
|
./configure
|
|
make
|
|
make install
|
|
cd ..
|
|
|
|
cd tcl8.4.9/unix
|
|
./configure
|
|
make
|
|
make install
|
|
cd ..
|
|
|
|
cd expect-5.43
|
|
./configure
|
|
make
|
|
make install
|
|
cd ..
|
|
|
|
See the DejaGNU documentation and dejagnu-1.4.4/README for further
|
|
details.
|
|
|
|
|
|
Componets in ltrace testsuite
|
|
=============================
|
|
|
|
This testsuite include all the source code you need for ltrace
|
|
test in a single directory, which is "ltrace-0.3.36/testsuite".
|
|
This directory includes the following files and sub-directories:
|
|
|
|
`config/unix.exp`
|
|
configuration file for dejagnu-based test.
|
|
|
|
`lib/ltrace.exp`
|
|
some basic functions used in all the test cases.
|
|
|
|
`ltrace.main/`
|
|
some basic tests for major fetures of ltrace.
|
|
|
|
(1) ltrace.main/main.exp does tests on tracing a function
|
|
implemented in a shared library.
|
|
|
|
(2) ltrace.main/main-internal.exp does tests on tracing a function
|
|
implemented in main executable.
|
|
|
|
(3) ltrace.main/signals.exp do test on tracing user-defined signals
|
|
sent by program to itself.
|
|
|
|
(4) ltrace.main/system_calls.exp do test on tracing all the system
|
|
calls in program.
|
|
|
|
`ltrace.minor/`
|
|
some tests for minor fetures of ltrace.
|
|
|
|
(1) ltrace.minor/attach-process.exp do test on attching a process.
|
|
|
|
(2) ltrace.minor/count-record.exp do test on counting time and
|
|
calls.
|
|
|
|
(3) ltrace.minor/demangle.exp do test on demangling the C++ symbols.
|
|
|
|
(4) ltrace.minor/time-record-T.exp do test on showing the time spent
|
|
inside each call.
|
|
|
|
(5) ltrace.minor/time-record-tt.exp
|
|
(6) ltrace.minor/time-record-ttt.exp do test on printing absolute
|
|
timestamps in different format.
|
|
|
|
(7) ltrace.minor/trace-clone.exp do test on following clone to child
|
|
process.
|
|
|
|
(8) ltrace.minor/trace-fork.exp do test on following fork to child
|
|
process.
|
|
|
|
`ltrace.torture/`
|
|
some tests in extreme condations.
|
|
|
|
(1) ltrace.torture/signals.exp do test on tracing flooded signals
|
|
send to program itself.
|
|
|
|
Trouble shootings
|
|
=================
|
|
|
|
(1) Running ltrace with -u option requires the superuser privilege.
|
|
You must make sure you are root or have already got root's password.
|
|
|
|
(2) Check the *.ltrace files in each ltrace.* directories if there are
|
|
some FAILs in the output. They are informative.
|
|
|
|
(3) Add --verbose option in RUNTESTFLAGS when 'make check' if you want
|
|
to see more details of these tests.
|
|
|
|
Test case extension
|
|
===================
|
|
|
|
Current testsuite is quite basic. The framework of testsuite is
|
|
extendable and scalealbe, so you can add new testcases into it easily.
|
|
I will describe how to do that in different ways.
|
|
|
|
(1) Add new test case in an existed testcase directory.
|
|
|
|
It is simple. Just add a foo.exp script and a relevant foo.c if
|
|
necessary. The dejagnu framework can run that script automatically when
|
|
you run "make check". The executable and object file would be generate
|
|
in the test, please add them in 'clean' entry in Makefile.in to ensure
|
|
that they could be cleaned up automatically when run 'make clean'.
|
|
|
|
(2) Add new test case in a new testcase directory.
|
|
|
|
It is a little complicated. Fisrt create a new directory in
|
|
testsuite/ with the same pattern as others, for example ltrace.bar,
|
|
and then create a Makefile.in, an Expect script foo.exp, and relative
|
|
foo.c if necessary. Then modify the configure.ac in ltrace-0.3.36/,
|
|
and add "testsuite/ltrace.bar/Makefile" into macro AC_OUTPUT,
|
|
testsuite/ltrace.bar/Makefile will be generated when you configure
|
|
this package.
|
|
|
|
Adding Makefile.in in the new directroy is just to remove
|
|
intermediate files and log files automatically later, such as foo.ltrace,
|
|
object files and executables. For example, if you want to remove A.ltrace,
|
|
B.ltrace, A and B at the time of cleanup, you can write Makefile.in
|
|
like this:
|
|
|
|
clean:
|
|
-rm -f A B
|
|
-rm -f *.o
|
|
-rm -f *.ltrace
|
|
distclean: clean
|
|
-rm -f Makefile
|
|
|
|
At last add the new directory 'ltrace.bar' into the macro SUBDIRS
|
|
in testsuite/Makefile.in.
|
|
|
|
Rerun the autoconf and ./configure in ./ltrace-0.3.36, the Makefile
|
|
will be updated.
|
|
|
|
|
|
|
|
^L
|
|
(this is for editing this file with GNU emacs)
|
|
Local Variables:
|
|
mode: text
|
|
End:
|