oprofile: Add PTEST regression testing to oprofile

The commit changes the oe-core oprofile recipe by adding the PTEST
interface, implementing do_compile_ptest() and do_install_ptest().

The install routine adds several files that only the regression tests
require. Also, a patch is necessary to inhibit executing the tests on
the build host and to point to the correct target directory for the
libutil++ test 'file-manip-tests'.

That test requires the recipe to set SRCDIR in the build environment
instead of determining the value from build-time host paths as for a
self-hosted build.

(From OE-Core rev: ac5a9835075a04726a64dbd669b9c89270b23865)

Signed-off-by: Dave Lerner <dave.lerner@windriver.com>
Signed-off-by: Chong Lu <Chong.Lu@windriver.com>
Signed-off-by: Saul Wold <sgw@linux.intel.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
This commit is contained in:
Chong Lu 2014-06-06 09:25:10 +08:00 committed by Richard Purdie
parent 54f1528f93
commit df956a6dcd
3 changed files with 145 additions and 2 deletions

View File

@ -20,9 +20,11 @@ FILES_${PN}-staticdev += "${libdir}/${BPN}/lib*.a"
SRC_URI = "file://opstart.patch \
file://oprofile-root.patch \
file://acinclude.m4"
file://acinclude.m4 \
file://oprofile-cross-compile-tests.patch \
file://run-ptest"
inherit autotools-brokensep pkgconfig
inherit autotools-brokensep pkgconfig ptest
EXTRA_OECONF = "--with-kernel=${STAGING_KERNEL_DIR} --without-x"
do_configure () {
@ -30,3 +32,28 @@ do_configure () {
cp ${WORKDIR}/acinclude.m4 ${S}/
autotools_do_configure
}
EXTRA_OEMAKE = "SRCDIR=${PTEST_PATH}/libutil++/tests"
do_compile_ptest() {
oe_runmake check
}
do_install_ptest() {
subdirs="libdb/tests libutil++/tests libregex/tests libutil/tests libop/tests libdb/tests "
cd ${S}
for tooltest in ${subdirs}
do
find ${tooltest} -perm /u=x -type f| cpio -pvdu ${D}${PTEST_PATH}
done
# needed by some libop tests
cp -r events ${D}${PTEST_PATH}
# needed by libregex regex_test
cp libregex/stl.pat ${D}${PTEST_PATH}/libregex
cp libregex/tests/mangled-name ${D}${PTEST_PATH}/libregex/tests
# needed by litutil++ file_manip_tests
cp libutil++/tests/file_manip_tests.cpp \
libutil++/tests/file_manip_tests.o ${D}${PTEST_PATH}/libutil++/tests
}

View File

@ -0,0 +1,98 @@
Prevent running check tests on host if cross compiling
This patch enables running the 'make check' tests on the target
in a cross-compiled environment. If not cross-compiling, then 'make
check' builds and executes the tests; no change from this patch.
In a cross-compiling environment, the make variable CROSS_COMPILE is
set which bypasses assiging tests to the makekfile variable TESTS.
Since TESTS is empty, the 'make check' process never tries to run the
tests on the hosts. On the target, the tests must be run manually.
Also, in the libutil++ tests, a makefile variable SRCDIR is passed into
the compilation phase, pointing to the runtime location of the test
'file-manip-tests'. The mechanism used for a host test, based on
'topdir' doesn't work. Instead, if CROSS_COMPILE is set, the
makefile takes the path of SRCDIR from the build environment and not
from an expression based on the host path 'topdir'.
Upstream-Status: Pending
Signed-off-by: Dave Lerner <dave.lerner@windriver.com>
diff --git a/configure.ac b/configure.ac
index 41ece64..ce5a16f 100644
--- a/configure.ac
+++ b/configure.ac
@@ -392,6 +392,7 @@ AC_ARG_ENABLE(account-check,
enable_account_check=$enableval, enable_account_check=yes)
AM_CONDITIONAL(CHECK_ACCOUNT, test "x$enable_account_check" = "xyes")
+AM_CONDITIONAL(CROSS_COMPILE, test "x$cross_compiling" = "xyes")
AC_SUBST(OP_CFLAGS)
AC_SUBST(OP_CXXFLAGS)
diff --git a/libdb/tests/Makefile.am b/libdb/tests/Makefile.am
index 8a69003..d820090 100644
--- a/libdb/tests/Makefile.am
+++ b/libdb/tests/Makefile.am
@@ -13,4 +13,6 @@ check_PROGRAMS = db_test
db_test_SOURCES = db_test.c
db_test_LDADD = ../libodb.a ../../libutil/libutil.a
+if ! CROSS_COMPILE
TESTS = ${check_PROGRAMS}
+endif
diff --git a/libop/tests/Makefile.am b/libop/tests/Makefile.am
index 8a79eb5..6d417c4 100644
--- a/libop/tests/Makefile.am
+++ b/libop/tests/Makefile.am
@@ -33,4 +33,6 @@ load_events_files_tests_LDADD = ${COMMON_LIBS}
mangle_tests_SOURCES = mangle_tests.c
mangle_tests_LDADD = ${COMMON_LIBS}
+if ! CROSS_COMPILE
TESTS = ${check_PROGRAMS} utf8_checker.sh
+endif
diff --git a/libregex/tests/Makefile.am b/libregex/tests/Makefile.am
index 6f19838..1d176f9 100644
--- a/libregex/tests/Makefile.am
+++ b/libregex/tests/Makefile.am
@@ -18,4 +18,6 @@ java_test_LDADD = \
EXTRA_DIST = mangled-name.in
+if ! CROSS_COMPILE
TESTS = ${check_PROGRAMS}
+endif
diff --git a/libutil++/tests/Makefile.am b/libutil++/tests/Makefile.am
index 51af031..a01ea2d 100644
--- a/libutil++/tests/Makefile.am
+++ b/libutil++/tests/Makefile.am
@@ -1,7 +1,9 @@
REALPATH= readlink -f
+if ! CROSS_COMPILE
SRCDIR := $(shell $(REALPATH) $(topdir)/libutil++/tests/ )
+endif
AM_CPPFLAGS = \
-I ${top_srcdir}/libutil++ -D SRCDIR="\"$(SRCDIR)/\"" @OP_CPPFLAGS@
@@ -46,4 +48,6 @@ cached_value_tests_LDADD = ${COMMON_LIBS}
utility_tests_SOURCES = utility_tests.cpp
utility_tests_LDADD = ${COMMON_LIBS}
+if ! CROSS_COMPILE
TESTS = ${check_PROGRAMS}
+endif
diff --git a/libutil/tests/Makefile.am b/libutil/tests/Makefile.am
index dfcd6ec..e8831b5 100644
--- a/libutil/tests/Makefile.am
+++ b/libutil/tests/Makefile.am
@@ -12,4 +12,6 @@ file_tests_LDADD = ../libutil.a
string_tests_SOURCES = string_tests.c
string_tests_LDADD = ../libutil.a
+if ! CROSS_COMPILE
TESTS = ${check_PROGRAMS}
+endif

View File

@ -0,0 +1,18 @@
#!/bin/bash
saved_dir=$PWD
for dir in */tests ; do
cd $dir
for atest in * ; do
if [ \( -x $atest \) -a \( -f $atest \) ] ; then
./$atest > ${atest}.stdout 2> ${atest}.stderr
if [ $? = 0 ] ; then
echo "PASS: $dir $atest"
rm ${atest}.stdout ${atest}.stderr
else
echo "FAIL: ${dir}/${atest}"
fi
fi
done
cd $saved_dir
done