From: Joshua Watt <jpewhacker@gmail.com>
To: yocto@lists.yoctoproject.org
Cc: Joshua Watt <JPEWhacker@gmail.com>
Subject: [ptest-runner][PATCH 1/5] Revert "Change test timeout to be total elapsed time"
Date: Tue, 18 Jul 2023 11:26:10 -0600 [thread overview]
Message-ID: <20230718172614.469304-2-JPEWhacker@gmail.com> (raw)
In-Reply-To: <20230718172614.469304-1-JPEWhacker@gmail.com>
This reverts commit e50f2175d9c6b8aeb8b0bf687e5cca64a0f6e61a.
The timeout is actually the amount of time to wait until there is no
output from the test, not the total test time.
Signed-off-by: Joshua Watt <JPEWhacker@gmail.com>
---
tests/data/hang/ptest/run-ptest | 1 -
tests/utils.c | 2 +-
utils.c | 23 +++++++++++------------
3 files changed, 12 insertions(+), 14 deletions(-)
diff --git a/tests/data/hang/ptest/run-ptest b/tests/data/hang/ptest/run-ptest
index 9031be3..738041d 100755
--- a/tests/data/hang/ptest/run-ptest
+++ b/tests/data/hang/ptest/run-ptest
@@ -3,6 +3,5 @@
echo "hang" 1>&2
echo "hang"
while true; do
- echo "hang"
sleep 1
done
diff --git a/tests/utils.c b/tests/utils.c
index 849a412..d82b90e 100644
--- a/tests/utils.c
+++ b/tests/utils.c
@@ -224,7 +224,7 @@ search_for_timeout_and_duration(const int rp, FILE *fp_stdout)
START_TEST(test_run_timeout_duration_ptest)
{
struct ptest_list *head = get_available_ptests(opts_directory);
- unsigned int timeout = 3;
+ unsigned int timeout = 1;
test_ptest_expected_failure(head, timeout, "hang", search_for_timeout_and_duration);
diff --git a/utils.c b/utils.c
index 353d6dc..34ca2f0 100644
--- a/utils.c
+++ b/utils.c
@@ -403,8 +403,7 @@ run_ptests(struct ptest_list *head, const struct ptest_options opts,
pid_t child;
int pipefd_stdout[2] = {-1, -1};
int pipefd_stderr[2] = {-1, -1};
- time_t sttime, entime, now;
- time_t timeout_deadline;
+ time_t sttime, entime;
time_t duration;
int slave;
int pgid = -1;
@@ -490,7 +489,6 @@ run_ptests(struct ptest_list *head, const struct ptest_options opts,
}
sttime = time(NULL);
- timeout_deadline = sttime + opts.timeout;
fprintf(fp, "%s\n", get_stime(stime, GET_STIME_BUF_SIZE, sttime));
fprintf(fp, "BEGIN: %s\n", ptest_dir);
@@ -521,17 +519,18 @@ run_ptests(struct ptest_list *head, const struct ptest_options opts,
if (done) {
break;
}
- now = time(NULL);
- if (now >= timeout_deadline) {
- kill(-child, SIGKILL);
- _child_reader.timeouted = 1;
- break;
- }
- int ret = poll(pfds, 2, (timeout_deadline - now) * 1000);
+ int ret = poll(pfds, 2, _child_reader.timeout*1000);
- if (ret == 0) {
- continue;
+ if (ret == 0 && !_child_reader.timeouted) {
+ /* kill the child if we haven't
+ * already. Note that we
+ * continue to read data from
+ * the pipes until EOF to make
+ * sure we get all the output
+ */
+ kill(-child, SIGKILL);
+ _child_reader.timeouted = 1;
}
for (int i = 0; i < 2; i++) {
--
2.33.0
next prev parent reply other threads:[~2023-07-18 17:26 UTC|newest]
Thread overview: 6+ messages / expand[flat|nested] mbox.gz Atom feed top
2023-07-18 17:26 [ptest-runner][PATCH 0/5] Fix ptest timeout errors Joshua Watt
2023-07-18 17:26 ` Joshua Watt [this message]
2023-07-18 17:26 ` [ptest-runner][PATCH 2/5] Only collect system state on timeout Joshua Watt
2023-07-18 17:26 ` [ptest-runner][PATCH 3/5] Report test failure " Joshua Watt
2023-07-18 17:26 ` [ptest-runner][PATCH 4/5] Remove _child_reader singleton Joshua Watt
2023-07-18 17:26 ` [ptest-runner][PATCH 5/5] Flush stdout and stderr after test Joshua Watt
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20230718172614.469304-2-JPEWhacker@gmail.com \
--to=jpewhacker@gmail.com \
--cc=yocto@lists.yoctoproject.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox