From patchwork Fri Aug 2 06:39:14 2019 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Tom de Vries X-Patchwork-Id: 33916 Received: (qmail 115707 invoked by alias); 2 Aug 2019 06:39:20 -0000 Mailing-List: contact gdb-patches-help@sourceware.org; run by ezmlm Precedence: bulk List-Id: List-Unsubscribe: List-Subscribe: List-Archive: List-Post: List-Help: , Sender: gdb-patches-owner@sourceware.org Delivered-To: mailing list gdb-patches@sourceware.org Received: (qmail 115693 invoked by uid 89); 2 Aug 2019 06:39:20 -0000 Authentication-Results: sourceware.org; auth=none X-Spam-SWARE-Status: No, score=-26.2 required=5.0 tests=AWL, BAYES_00, GIT_PATCH_0, GIT_PATCH_1, GIT_PATCH_2, GIT_PATCH_3, SPF_PASS autolearn=ham version=3.3.1 spammy= X-HELO: mx1.suse.de Received: from mx2.suse.de (HELO mx1.suse.de) (195.135.220.15) by sourceware.org (qpsmtpd/0.93/v0.84-503-g423c35a) with ESMTP; Fri, 02 Aug 2019 06:39:17 +0000 Received: from relay2.suse.de (unknown [195.135.220.254]) by mx1.suse.de (Postfix) with ESMTP id 743B9AE74; Fri, 2 Aug 2019 06:39:15 +0000 (UTC) Subject: Re: [PATCH] Increase timeout in gdb.mi/list-thread-groups-available.exp To: Simon Marchi , Tom Tromey Cc: gdb-patches@sourceware.org References: <20190801143855.1640-1-simon.marchi@efficios.com> <87ftmkagwi.fsf@tromey.com> <9cc09b45-ba14-3299-6f99-b738c349ed94@efficios.com> From: Tom de Vries Openpgp: preference=signencrypt Message-ID: Date: Fri, 2 Aug 2019 08:39:14 +0200 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:60.0) Gecko/20100101 Thunderbird/60.8.0 MIME-Version: 1.0 In-Reply-To: <9cc09b45-ba14-3299-6f99-b738c349ed94@efficios.com> X-IsSubscribed: yes On 01-08-19 21:16, Simon Marchi wrote: > On 2019-08-01 2:18 p.m., Tom Tromey wrote: >>>>>>> "Simon" == Simon Marchi writes: >> >> Simon> PR gdb/24863 >> Simon> * gdb.mi/list-thread-groups-available.exp: Increase timeout for >> Simon> -list-thread-groups --available test. >> >> Simon> +save_vars { timeout } { >> Simon> + # Increase the timeout: when running with `make check-read1`, this can take >> Simon> + # a bit of time, as there is a lot of output generated, hence a lot of read >> Simon> + # syscalls. >> Simon> + set timeout [expr $timeout * 10] >> >> Maybe this should use with_timeout_factor. > > Ah, totally, I forgot about its existence. Here's a version using that. > > From d55b3eb5acd69b87495c9eeb57f96e4228911dbc Mon Sep 17 00:00:00 2001 > From: Simon Marchi > Date: Thu, 1 Aug 2019 10:28:52 -0400 > Subject: [PATCH] Increase timeout in gdb.mi/list-thread-groups-available.exp > > Running > > make check-read1 TESTS="gdb.mi/list-thread-groups-available.exp" > > on my machine results in timeout failures. Running it while having > `tail -F testsuite/gdb.log` on the side shows that the test is never > really blocked, it is just slow at consuming the large output generated > by `-list-thread-groups --available` (which lists all the processes on > the system). > > If I increase the timeout to a large value, the test passes in ~30 > seconds (compared to under 1 second normally). > > Increase the timeout for the particular mi_gdb_test that is long to > execute under read1. The new timeout value is a bit arbitrary. The > default timeout is 10 seconds, so I set the new timeout to be > "old-timeout * 10", so 100 seconds in the typical case. > > gdb/testsuite/ChangeLog: > > PR gdb/24863 > * gdb.mi/list-thread-groups-available.exp: Increase timeout for > -list-thread-groups --available test. > --- Hi, for me, both tests fail with a timeout. And if we're increasing the timeout, how about we only do that if check-read1 is used? Thanks, - Tom [gdb/testsuite] Increase timeout in gdb.mi/list-thread-groups-available.exp Running make check-read1 TESTS="gdb.mi/list-thread-groups-available.exp" on my machine results in timeout failures. Running it while having `tail -F testsuite/gdb.log` on the side shows that the test is never really blocked, it is just slow at consuming the large output generated by `-list-thread-groups --available` (which lists all the processes on the system). If I increase the timeout to a large value, the test passes in ~30 seconds (compared to under 1 second normally). Increase the timeout for the particular mi_gdb_test that is long to execute under read1. The new timeout value is a bit arbitrary. The default timeout is 10 seconds, so I set the new timeout to be "old-timeout * 10", so 100 seconds in the typical case. gdb/testsuite/ChangeLog: PR gdb/24863 * lib/gdb.exp (with_timeout_factor): Add and handle body_uplevel parameter. (with_read1_timeout_factor): New proc. * gdb.mi/list-thread-groups-available.exp: Increase timeout for -list-thread-groups --available tests. --- .../gdb.mi/list-thread-groups-available.exp | 20 ++++++++++++-------- gdb/testsuite/lib/gdb.exp | 20 ++++++++++++++++---- 2 files changed, 28 insertions(+), 12 deletions(-) diff --git a/gdb/testsuite/gdb.mi/list-thread-groups-available.exp b/gdb/testsuite/gdb.mi/list-thread-groups-available.exp index 792c3bac89..79b8d4d327 100644 --- a/gdb/testsuite/gdb.mi/list-thread-groups-available.exp +++ b/gdb/testsuite/gdb.mi/list-thread-groups-available.exp @@ -54,10 +54,12 @@ set cores_re "cores=\\\[(\"$decimal\"(,\"$decimal\")*)?\\\]" # List all available processes. set process_entry_re "{${id_re},${type_re}(,$description_re)?(,$user_re)?(,$cores_re)?}" -mi_gdb_test \ - "-list-thread-groups --available" \ - "\\^done,groups=\\\[${process_entry_re}(,$process_entry_re)*\\\]" \ - "list available thread groups" +with_read1_timeout_factor 10 { + mi_gdb_test \ + "-list-thread-groups --available" \ + "\\^done,groups=\\\[${process_entry_re}(,$process_entry_re)*\\\]" \ + "list available thread groups" +} # List specific processes, make sure there are two entries. set spawn_id_1 [remote_spawn target $binfile] @@ -79,10 +81,12 @@ set process_entry_re_2 "{${id_re_2},${type_re}(,$description_re)?(,$user_re)?(,$ set process_list_re "(${process_entry_re_1},${process_entry_re_2}|${process_entry_re_2},${process_entry_re_1})" -mi_gdb_test \ - "-list-thread-groups --available i${pid_1} i${pid_2}" \ - "\\^done,groups=\\\[${process_list_re}\\\]" \ - "list available thread groups with filter" +with_read1_timeout_factor 10 { + mi_gdb_test \ + "-list-thread-groups --available i${pid_1} i${pid_2}" \ + "\\^done,groups=\\\[${process_list_re}\\\]" \ + "list available thread groups with filter" +} kill_wait_spawned_process $spawn_id_1 kill_wait_spawned_process $spawn_id_2 diff --git a/gdb/testsuite/lib/gdb.exp b/gdb/testsuite/lib/gdb.exp index 9ca34d8b15..b645100fc0 100644 --- a/gdb/testsuite/lib/gdb.exp +++ b/gdb/testsuite/lib/gdb.exp @@ -2338,16 +2338,16 @@ proc get_largest_timeout {} { return $tmt } -# Run tests in BODY with timeout increased by factor of FACTOR. When -# BODY is finished, restore timeout. +# Run tests in BODY with BODY_UPLEVEL and with timeout increased by factor of +# FACTOR. When BODY is finished, restore timeout. -proc with_timeout_factor { factor body } { +proc with_timeout_factor { factor body {body_uplevel 1}} { global timeout set savedtimeout $timeout set timeout [expr [get_largest_timeout] * $factor] - set code [catch {uplevel 1 $body} result] + set code [catch {uplevel $body_uplevel $body} result] set timeout $savedtimeout if {$code == 1} { @@ -2358,6 +2358,18 @@ proc with_timeout_factor { factor body } { } } +# Run BODY with timeout factor FACTOR if check-read1 is used. + +proc with_read1_timeout_factor { factor body } { + if { [info exists ::env(READ1)] == 1 && $::env(READ1) == 1 } { + # Use timeout factor + } else { + # Reset timeout factor + set factor 1 + } + return [with_timeout_factor $factor $body 2] +} + # Return 1 if _Complex types are supported, otherwise, return 0. gdb_caching_proc support_complex_tests {