[PATCH] test: use dtach(1) instead of screen(1) in emacs tests.

Tomi Ollila tomi.ollila at iki.fi
Fri Nov 11 00:09:17 PST 2011


On Fri, 11 Nov 2011 01:17:37 +0100, Pieter Praet <pieter at praet.org> wrote:
> On Thu, 10 Nov 2011 14:22:17 -0800, Jameson Graef Rollins <jrollins at finestructure.net> wrote:
> > From: Tomi Ollila <tomi.ollila at iki.fi>
> > 
> > dtach is lighter than screen and is not setuid/setgid program so
> > TMPDIR does not get reset by dynamic loader when executed.
> > 
> 
> `dtach' may be lighter than `screen', but contrary to my expectations,
> it appears to be far less efficient:
> 
> |      | original [1] | w/ screen [2] | w/ dtach [3] |
> |------+--------------+---------------+--------------|
> | real |    0m17.570s |     0m20.132s |    0m28.567s |
> | user |     0m2.453s |      0m2.593s |     0m2.753s |
> | sys  |     0m1.700s |      0m1.577s |     0m1.753s |

This sounds interesting; how were these runs measured?
Just using shell builtin time command ?

Does time measure the time of the process and it's subprocesses
or just the process. In any way 20 vs 28 second 'real' time difference
could indicate that there are more other processes running and
the context switch time affects user and system time.

Or, dtach does some stupid io things. Or screen does some advanced
optimizations. Or emacs works more effectively when TERM=screen.
Or the 'virtual' window size emacs sees is unsuitable...


> 
> > Signed-off-by: Jameson Graef Rollins <jrollins at finestructure.net>
> > ---
> > This tweaks the original patch slightly by removing the no-longer needed
> > screenrc variables.
> > 
> >  test/test-lib.sh |    5 ++---
> >  1 files changed, 2 insertions(+), 3 deletions(-)
> > 
> > diff --git a/test/test-lib.sh b/test/test-lib.sh
> > index c81c709..c0fe037 100755
> > --- a/test/test-lib.sh
> > +++ b/test/test-lib.sh
> > @@ -50,8 +50,6 @@ TZ=UTC
> >  TERM=dumb
> >  export LANG LC_ALL PAGER TERM TZ
> >  GIT_TEST_CMP=${GIT_TEST_CMP:-diff -u}
> > -export SCREENRC=/dev/null
> > -export SYSSCREENRC=/dev/null
> >  
> >  # Protect ourselves from common misconfiguration to export
> >  # CDPATH into the environment
> > @@ -844,7 +842,8 @@ test_emacs () {
> >  	if [ -z "$EMACS_SERVER" ]; then
> >  		EMACS_SERVER="notmuch-test-suite-$$"
> >  		# start a detached screen session with an emacs server
> > -		screen -S "$EMACS_SERVER" -d -m "$TMP_DIRECTORY/run_emacs" \
> > +		TERM=xterm dtach -n "$TMP_DIRECTORY/dtach-emacs-socket-$$" \
> 
> It's worth noting that $TERM is only set to "xterm" to deceive `dtach',
> so thankfully, xterm (and all its deps) aren't actually required to run
> the tests.

Actually, emacs SIGSEGVs if there is unsuitable TERM in use. I don't know
what it originally was.

> 
> > +			"$TMP_DIRECTORY/run_emacs" \
> >  			--no-window-system \
> >  			--eval "(setq server-name \"$EMACS_SERVER\")" \
> >  			--eval '(server-start)' \
> > -- 
> > 1.7.7.1
> > 
> > _______________________________________________
> > notmuch mailing list
> > notmuch at notmuchmail.org
> > http://notmuchmail.org/mailman/listinfo/notmuch
> 
> 
> Peace
> 
> -- 
> Pieter
> 
> [1] @ commit 749abb74
> [2] @ commit 760b311b
> [3] @ commit 760b311b + id:"1320963737-1666-1-git-send-email-jrollins at finestructure.net"
> _______________________________________________
> notmuch mailing list
> notmuch at notmuchmail.org
> http://notmuchmail.org/mailman/listinfo/notmuch
> 

Tomi


More information about the notmuch mailing list