[PATCH 1/2] test: delay watchdog checks in emacs.
david at tethera.net writes: > From: David Bremner > > Instead of checking immediately for the watched process, delay a > minute, or in the case that process-attributes returns nil, for two > minutes. This is intended to cope with the case that > process-attributes is unimplimented, and returns always returns nil. > In this case, the watchdog check is the same as the two minute limit > imposed by timeout. > --- It seems there are still lingering problems with this. On a Debian Hurd system, the following consistently dies after running for two minutes. It seems like our test harness can't cope with the emacs server dying as well as it ought to. I'm not sure what the right answer is. A crude workaround would be to increase the hardcoded timeout. Alternatively, maybe test_emacs should make some effort to restart the server if it is no longer running. #!/usr/bin/env bash test_description="emacs fcc" . ./test-lib.sh for ((count=1; count<=1000; count++)); do id=fub.$count subject=meh echo attempting $count emacs_fcc_message \ "$subject" \ 'This is a test message with inline attachment with a filename' \ "(mml-attach-file \"$TEST_DIRECTORY/README\" nil nil \"inline\") (message-goto-eoh) (insert \"Message-ID: <$id>\n\")" delivered=$(find $MAIL_DIR/sent -type f | wc -l) if [[ $delivered != $count ]]; then GIT_EXIT_OK=1 echo FATAL: $count attempted $delivered delivered exit 1; fi done test_done
Re: [PATCH 1/2] test: delay watchdog checks in emacs.
da...@tethera.net writes: > From: David Bremner > > Instead of checking immediately for the watched process, delay a > minute, or in the case that process-attributes returns nil, for two > minutes. This is intended to cope with the case that > process-attributes is unimplimented, and returns always returns nil. > In this case, the watchdog check is the same as the two minute limit > imposed by timeout. > --- It seems there are still lingering problems with this. On a Debian Hurd system, the following consistently dies after running for two minutes. It seems like our test harness can't cope with the emacs server dying as well as it ought to. I'm not sure what the right answer is. A crude workaround would be to increase the hardcoded timeout. Alternatively, maybe test_emacs should make some effort to restart the server if it is no longer running. #!/usr/bin/env bash test_description="emacs fcc" . ./test-lib.sh for ((count=1; count<=1000; count++)); do id=fub.$count subject=meh echo attempting $count emacs_fcc_message \ "$subject" \ 'This is a test message with inline attachment with a filename' \ "(mml-attach-file \"$TEST_DIRECTORY/README\" nil nil \"inline\") (message-goto-eoh) (insert \"Message-ID: <$id>\n\")" delivered=$(find $MAIL_DIR/sent -type f | wc -l) if [[ $delivered != $count ]]; then GIT_EXIT_OK=1 echo FATAL: $count attempted $delivered delivered exit 1; fi done test_done ___ notmuch mailing list notmuch@notmuchmail.org http://notmuchmail.org/mailman/listinfo/notmuch
[PATCH 1/2] test: delay watchdog checks in emacs.
From: David Bremner Instead of checking immediately for the watched process, delay a minute, or in the case that process-attributes returns nil, for two minutes. This is intended to cope with the case that process-attributes is unimplimented, and returns always returns nil. In this case, the watchdog check is the same as the two minute limit imposed by timeout. --- test/test-lib.el | 13 ++--- 1 file changed, 10 insertions(+), 3 deletions(-) diff --git a/test/test-lib.el b/test/test-lib.el index dece811..d26b49f 100644 --- a/test/test-lib.el +++ b/test/test-lib.el @@ -77,12 +77,19 @@ invisible text." (setq start next-pos))) str)) -(defun orphan-watchdog (pid) +(defun orphan-watchdog-check (pid) "Periodically check that the process with id PID is still running, quit if it terminated." (if (not (process-attributes pid)) - (kill-emacs) -(run-at-time "1 min" nil 'orphan-watchdog pid))) + (kill-emacs))) + +(defun orphan-watchdog (pid) + "Initiate orphan watchdog check." + ; If process-attributes returns nil right away, that probably means + ; it is unimplimented. So we delay two minutes before killing emacs. + (if (process-attributes pid) + (run-at-time 60 60 'orphan-watchdog-check pid) +(run-at-time 120 60 'orphan-watchdog-check pid))) (defun hook-counter (hook) "Count how many times a hook is called. Increments -- 1.7.10.4
[PATCH 1/2] test: delay watchdog checks in emacs.
From: David Bremner Instead of checking immediately for the watched process, delay a minute, or in the case that process-attributes returns nil, for two minutes. This is intended to cope with the case that process-attributes is unimplimented, and returns always returns nil. In this case, the watchdog check is the same as the two minute limit imposed by timeout. --- test/test-lib.el | 13 ++--- 1 file changed, 10 insertions(+), 3 deletions(-) diff --git a/test/test-lib.el b/test/test-lib.el index dece811..d26b49f 100644 --- a/test/test-lib.el +++ b/test/test-lib.el @@ -77,12 +77,19 @@ invisible text." (setq start next-pos))) str)) -(defun orphan-watchdog (pid) +(defun orphan-watchdog-check (pid) "Periodically check that the process with id PID is still running, quit if it terminated." (if (not (process-attributes pid)) - (kill-emacs) -(run-at-time "1 min" nil 'orphan-watchdog pid))) + (kill-emacs))) + +(defun orphan-watchdog (pid) + "Initiate orphan watchdog check." + ; If process-attributes returns nil right away, that probably means + ; it is unimplimented. So we delay two minutes before killing emacs. + (if (process-attributes pid) + (run-at-time 60 60 'orphan-watchdog-check pid) +(run-at-time 120 60 'orphan-watchdog-check pid))) (defun hook-counter (hook) "Count how many times a hook is called. Increments -- 1.7.10.4 ___ notmuch mailing list notmuch@notmuchmail.org http://notmuchmail.org/mailman/listinfo/notmuch