public inbox for binutils@sourceware.org
 help / color / mirror / Atom feed
* [PATCH] gprofng: 30602 [2.41] gprofng test hangs on i686-linux-gnu
@ 2023-07-13 15:37 vladimir.mezentsev
  2023-07-18 16:08 ` Nick Clifton
  0 siblings, 1 reply; 2+ messages in thread
From: vladimir.mezentsev @ 2023-07-13 15:37 UTC (permalink / raw)
  To: binutils; +Cc: Vladimir Mezentsev

From: Vladimir Mezentsev <vladimir.mezentsev@oracle.com>

If there are no rejections, may I cherry-pick this to the [2.41] branch ?




There were several problems in the gprofng testing:
 - we did not catch a timeout for each test.
 - we used exit() to stop a failed test. But this stops all other tests.
 - we used a time_t (long) type in smalltest.c instead of a long long type.

	PR gprofng/30602
	* configure.ac: Launch only native testing.
	* configure: Rebuild.
	* testsuite/config/default.exp: Set TEST_TIMEOUT.
	* testsuite/gprofng.display/setpath_map.exp: Use return instead of exit.
	* testsuite/gprofng.display/gp-archive.exp: Likewise.
	* testsuite/gprofng.display/gp-collect-app_F.exp: Likewise.
	* testsuite/gprofng.display/display.exp: Delete an unnecessary test
	for native testing.
	* testsuite/lib/display-lib.exp (run_native_host_cmd): Add timeout.
	* testsuite/lib/smalltest.c: Use a long long type instead of time_t.
---
 gprofng/configure                             | 28 +++++--------------
 gprofng/configure.ac                          | 11 ++++----
 gprofng/testsuite/config/default.exp          |  2 ++
 gprofng/testsuite/gprofng.display/display.exp |  7 -----
 .../testsuite/gprofng.display/gp-archive.exp  |  8 +++---
 .../gprofng.display/gp-collect-app_F.exp      | 12 ++++++--
 .../testsuite/gprofng.display/setpath_map.exp |  6 ++--
 gprofng/testsuite/lib/display-lib.exp         | 18 ++++++------
 gprofng/testsuite/lib/smalltest.c             | 10 ++++---
 9 files changed, 44 insertions(+), 58 deletions(-)

diff --git a/gprofng/configure b/gprofng/configure
index 7aff0be4d57..c39dc8535f7 100755
--- a/gprofng/configure
+++ b/gprofng/configure
@@ -657,8 +657,6 @@ PTHREAD_CFLAGS
 PTHREAD_LIBS
 PTHREAD_CC
 ax_pthread_config
-RUN_TESTS_FALSE
-RUN_TESTS_TRUE
 subdirs
 BUILD_SRC_FALSE
 BUILD_SRC_TRUE
@@ -12223,7 +12221,7 @@ else
   lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2
   lt_status=$lt_dlunknown
   cat > conftest.$ac_ext <<_LT_EOF
-#line 12226 "configure"
+#line 12224 "configure"
 #include "confdefs.h"
 
 #if HAVE_DLFCN_H
@@ -12329,7 +12327,7 @@ else
   lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2
   lt_status=$lt_dlunknown
   cat > conftest.$ac_ext <<_LT_EOF
-#line 12332 "configure"
+#line 12330 "configure"
 #include "confdefs.h"
 
 #if HAVE_DLFCN_H
@@ -15762,28 +15760,16 @@ else
 fi
 
 
-run_tests=false
 if test x$build_collector = xtrue; then
 
 
 subdirs="$subdirs libcollector"
 
-  if test x${host} = x${target}; then
-    run_tests=true
-  fi
-fi
- if test x$run_tests = xtrue; then
-  RUN_TESTS_TRUE=
-  RUN_TESTS_FALSE='#'
-else
-  RUN_TESTS_TRUE='#'
-  RUN_TESTS_FALSE=
 fi
 
 
 
 
-
 ac_ext=c
 ac_cpp='$CPP $CPPFLAGS'
 ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
@@ -16710,7 +16696,11 @@ fi`
 fi
 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_libctf_tcl_try" >&5
 $as_echo "$ac_cv_libctf_tcl_try" >&6; }
- if test "${ac_cv_libctf_tcl_try}" = yes; then
+
+# Only native testing and only on supported platforms:
+ if test "${ac_cv_libctf_tcl_try}" = yes \
+	-a "x${build_src}" = xtrue -a "x${build_collector}" = xtrue \
+	-a "x${host}" = "x${target}"; then
   TCL_TRY_TRUE=
   TCL_TRY_FALSE='#'
 else
@@ -17115,10 +17105,6 @@ if test -z "${BUILD_SRC_TRUE}" && test -z "${BUILD_SRC_FALSE}"; then
   as_fn_error $? "conditional \"BUILD_SRC\" was never defined.
 Usually this means the macro was only invoked conditionally." "$LINENO" 5
 fi
-if test -z "${RUN_TESTS_TRUE}" && test -z "${RUN_TESTS_FALSE}"; then
-  as_fn_error $? "conditional \"RUN_TESTS\" was never defined.
-Usually this means the macro was only invoked conditionally." "$LINENO" 5
-fi
 if test -z "${TCL_TRY_TRUE}" && test -z "${TCL_TRY_FALSE}"; then
   as_fn_error $? "conditional \"TCL_TRY\" was never defined.
 Usually this means the macro was only invoked conditionally." "$LINENO" 5
diff --git a/gprofng/configure.ac b/gprofng/configure.ac
index cba3e4487fd..cfca82e3651 100644
--- a/gprofng/configure.ac
+++ b/gprofng/configure.ac
@@ -74,14 +74,9 @@ build_src=
 AM_CONDITIONAL([BUILD_COLLECTOR], [test x$build_collector = xtrue])
 AM_CONDITIONAL([BUILD_SRC], [test x$build_src = xtrue])
 
-run_tests=false
 if test x$build_collector = xtrue; then
   AC_CONFIG_SUBDIRS([libcollector])
-  if test x${host} = x${target}; then
-    run_tests=true
-  fi
 fi
-AM_CONDITIONAL([RUN_TESTS], [test x$run_tests = xtrue])
 AX_PTHREAD
 
 # Specify a location for JDK
@@ -204,7 +199,11 @@ if @<:@llength @<:@info commands try@:>@@:>@ then { puts yes } else { puts no }
 EOF
 fi`
 ])
-AM_CONDITIONAL(TCL_TRY, test "${ac_cv_libctf_tcl_try}" = yes)
+
+# Only native testing and only on supported platforms:
+AM_CONDITIONAL(TCL_TRY, [test "${ac_cv_libctf_tcl_try}" = yes \
+	-a "x${build_src}" = xtrue -a "x${build_collector}" = xtrue \
+	-a "x${host}" = "x${target}"])
 
 AM_ZLIB
 
diff --git a/gprofng/testsuite/config/default.exp b/gprofng/testsuite/config/default.exp
index f76047e2a34..1c862d54592 100644
--- a/gprofng/testsuite/config/default.exp
+++ b/gprofng/testsuite/config/default.exp
@@ -38,6 +38,8 @@ if { "$CHECK_TARGET" == "check-install" } {
     set ::env(GPROFNG) "$BUILDDIR/src/gprofng"
 }
 
+set TEST_TIMEOUT 300
+
 # Create directories where gprofng can find libraries and binaries:
 remote_exec host "sh -c \"rm -rf tmpdir; mkdir -p tmpdir\""
 remote_exec host "sh -c \"mkdir -p lib; rm -f lib/gprofng; ln -s ../libcollector/.libs lib/gprofng\""
diff --git a/gprofng/testsuite/gprofng.display/display.exp b/gprofng/testsuite/gprofng.display/display.exp
index 4698795288f..b0219104f32 100644
--- a/gprofng/testsuite/gprofng.display/display.exp
+++ b/gprofng/testsuite/gprofng.display/display.exp
@@ -24,13 +24,6 @@ if {[info exists env(LC_ALL)]} {
 set env(LC_ALL) "C"
 
 set pltf [exec uname -i]
-
-# Native testing only for now.
-if { ![istarget $pltf-*-*]
-     && (![string match i?86 $pltf] || ![istarget i?86-*-*]) } then {
-    return
-}
-
 if { "$pltf" == "aarch64" } {
 # Use a filter for not leaf functions due to the unwind problem in libgp-collector.so
     set ::env(ACCT_FILTER) [join { "|egrep -vw 'gpf|tailcallopt|"
diff --git a/gprofng/testsuite/gprofng.display/gp-archive.exp b/gprofng/testsuite/gprofng.display/gp-archive.exp
index 04871f91682..0dd6196a927 100644
--- a/gprofng/testsuite/gprofng.display/gp-archive.exp
+++ b/gprofng/testsuite/gprofng.display/gp-archive.exp
@@ -32,7 +32,7 @@ proc check_gp_archive { a_opt } {
     set out [lindex $output 1]
     send_log "'$cmd' failed\n"
     fail $tdir
-    exit 1
+    return -code break
   }
 
   run_native_host_cmd "mv $tdir/t.c $tdir/t.c.1"
@@ -42,7 +42,7 @@ proc check_gp_archive { a_opt } {
     set out [lindex $output 1]
     send_log "CORRECTSOURCE is not found aafter '$cmd'\n"
     fail $tdir
-    exit 1
+    return -code break
   }
 }
 
@@ -58,7 +58,7 @@ if { [lindex $output 0] != 0 } then {
   set out [lindex $output 1]
   send_log "Experiment is not created in $tdir\n"
   fail $tdir
-  exit 1
+  return
 }
 
 
@@ -67,4 +67,4 @@ check_gp_archive src
 run_native_host_cmd "rm -rf $tdir/exp.er/archives/*; mv $tdir/t.c.1 $tdir/t.c"
 check_gp_archive usedsrc
 
-pass $dir
+pass $tdir
diff --git a/gprofng/testsuite/gprofng.display/gp-collect-app_F.exp b/gprofng/testsuite/gprofng.display/gp-collect-app_F.exp
index f4aa764642f..f791b0f7a95 100644
--- a/gprofng/testsuite/gprofng.display/gp-collect-app_F.exp
+++ b/gprofng/testsuite/gprofng.display/gp-collect-app_F.exp
@@ -37,7 +37,13 @@ proc run_gp_collect_app { subExpCnt F_opt } {
     set out [lindex $output 1]
     send_log "Experiment is not created in $tdir\n"
     fail $tdir
-    exit 1
+    return -code break
+  }
+  if {[regexp "ERROR:.*LD_PRELOAD" [lindex $output 1] match]} {
+    set out [lindex $output 1]
+    send_log "Experiment is not created in $tdir\n"
+    xfail $tdir
+    return -code break
   }
 
   set output [run_native_host_cmd "find $tdir -name '*x1.er' | wc -l"]
@@ -46,7 +52,7 @@ proc run_gp_collect_app { subExpCnt F_opt } {
     set out [lindex $output 1]
     send_log "Test failed for -F $F_opt. subExp=$subExp. Shold be $subExpCnt\n"
     fail $tdir
-    exit 1
+    return -code break
   }
   return $output
 }
@@ -58,5 +64,5 @@ run_gp_collect_app 3 "on"
 run_gp_collect_app 1 "=mkd.r"
 run_gp_collect_app 2 "=mkdir|touch"
 
-pass $dir
+pass $tdir
 
diff --git a/gprofng/testsuite/gprofng.display/setpath_map.exp b/gprofng/testsuite/gprofng.display/setpath_map.exp
index 698076d7c9e..fd0c00b2f03 100644
--- a/gprofng/testsuite/gprofng.display/setpath_map.exp
+++ b/gprofng/testsuite/gprofng.display/setpath_map.exp
@@ -36,7 +36,7 @@ if { [lindex $output 0] != 0 } then {
   set out [lindex $output 1]
   send_log "Experiment is not created in $tdir\n"
   fail $tdir
-  exit 1
+  return
 }
 
 # Copy the "good" file to $tdir/src. Mark old file as "wrong":
@@ -49,7 +49,7 @@ if { [string first "CORRECTSOURCE" [lindex $output 1]] < 0 } then {
   set out [lindex $output 1]
   send_log "CORRECTSOURCE is not found in $gprofng display text -setpath $tdir/src -source main $tdir/exp.er\n"
   fail $tdir
-  exit 1
+  return
 }
 
 # Test -pathmap:
@@ -59,7 +59,7 @@ if { [string first "CORRECTSOURCE" [lindex $output 1]] < 0 } then {
   set out [lindex $output 1]
   send_log "CORRECTSOURCE is not found in $gprofng display text -pathmap $tdir $tdir/src -source main $tdir/exp.er\n"
   fail $tdir
-  exit 1
+  return
 }
 
 pass $dir
diff --git a/gprofng/testsuite/lib/display-lib.exp b/gprofng/testsuite/lib/display-lib.exp
index 0ad81b09bf0..50db4d5055a 100644
--- a/gprofng/testsuite/lib/display-lib.exp
+++ b/gprofng/testsuite/lib/display-lib.exp
@@ -21,28 +21,26 @@
 # Run the COMMAND on the host and return a list of the form
 # { exit-status OUTPUT }.
 proc run_native_host_cmd { command } {
-    global link_output
-    global ld
+    global TEST_TIMEOUT
 
     verbose -log "$command"
     set run_output ""
     try {
-	set run_output [exec "sh" "-c" "$command" "2>@1"]
+	send_log "% timeout $TEST_TIMEOUT sh -c '$command' 2>&1\n"
+	set run_output [exec "timeout" $TEST_TIMEOUT "sh" "-c" "$command" "2>&1"]
 	set status 0
     } trap CHILDSTATUS {results options} {
 	set status [lindex [dict get $options -errorcode] 2]
-	set run_output $results
+	set run_output "$results"
+	if { $status == 124 ||  $status == 133 } {
+	    send_log "  ERROR: TIMEOUT($TEST_TIMEOUT sec.)\n"
+	}
     }
     regsub "\n$" $run_output "" run_output
     if { [lindex $status 0] != 0 && [string match "" $run_output] } then {
 	append run_output "child process exited abnormally"
     }
-
-    if [string match "" $run_output] then {
-	return ""
-    }
-
-    return [list [lindex $status 0] $run_output]
+    return [list [lindex $status 0] "$run_output"]
 }
 
 # Run a display test in DIR.
diff --git a/gprofng/testsuite/lib/smalltest.c b/gprofng/testsuite/lib/smalltest.c
index 49bd3957c45..fe6531e1651 100644
--- a/gprofng/testsuite/lib/smalltest.c
+++ b/gprofng/testsuite/lib/smalltest.c
@@ -1,11 +1,13 @@
 #include <stdio.h>
 #include <time.h>
 
-time_t
+typedef long long hrtime_t;
+
+hrtime_t
 gethrtime (void)
 {
   struct timespec tp;
-  time_t rc = 0;
+  hrtime_t rc = 0;
 #ifdef CLOCK_MONOTONIC_RAW
   int r = clock_gettime (CLOCK_MONOTONIC_RAW, &tp);
 #else
@@ -13,7 +15,7 @@ gethrtime (void)
 #endif
 
   if (r == 0)
-    rc = ((time_t) tp.tv_sec) * 1e9 + (time_t) tp.tv_nsec;
+    rc = ((hrtime_t) tp.tv_sec) * 1e9 + (hrtime_t) tp.tv_nsec;
   return rc;
 }
 
@@ -23,7 +25,7 @@ int
 main (int argc, char **argv)
 {
   long long count = 0;
-  time_t start = gethrtime ();
+  hrtime_t start = gethrtime ();
 
   do
     {
-- 
2.31.1


^ permalink raw reply	[flat|nested] 2+ messages in thread

* Re: [PATCH] gprofng: 30602 [2.41] gprofng test hangs on i686-linux-gnu
  2023-07-13 15:37 [PATCH] gprofng: 30602 [2.41] gprofng test hangs on i686-linux-gnu vladimir.mezentsev
@ 2023-07-18 16:08 ` Nick Clifton
  0 siblings, 0 replies; 2+ messages in thread
From: Nick Clifton @ 2023-07-18 16:08 UTC (permalink / raw)
  To: vladimir.mezentsev, binutils

Hi Vladimir,

> If there are no rejections, may I cherry-pick this to the [2.41] branch ?

You may.

Cheers
   Nick



^ permalink raw reply	[flat|nested] 2+ messages in thread

end of thread, other threads:[~2023-07-18 16:09 UTC | newest]

Thread overview: 2+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2023-07-13 15:37 [PATCH] gprofng: 30602 [2.41] gprofng test hangs on i686-linux-gnu vladimir.mezentsev
2023-07-18 16:08 ` Nick Clifton

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).