[PATCH 2 of 2] test-chg: add basic tests for server lifecycle

Augie Fackler raf at durin42.com
Sun May 29 17:25:04 EDT 2016


On Sun, May 29, 2016 at 10:40:53PM +0900, Yuya Nishihara wrote:
> # HG changeset patch
> # User Yuya Nishihara <yuya at tcha.org>
> # Date 1463834609 -32400
> #      Sat May 21 21:43:29 2016 +0900
> # Node ID ad80b1f43bf9a6648df57959d47307e67cb88168
> # Parent  f4d797228ecddcebfe86a9f726cdd55df49ef874
> test-chg: add basic tests for server lifecycle

Queued these, thanks!

>
> I'm going to move around the codes in AutoExitMixIn. This test should catch
> a subtle bug of unlinking sockets which I made in draft patches.
>
> diff --git a/tests/test-chg.t b/tests/test-chg.t
> --- a/tests/test-chg.t
> +++ b/tests/test-chg.t
> @@ -1,5 +1,7 @@
>  #require chg
>
> +  $ cp $HGRCPATH $HGRCPATH.orig
> +
>  init repo
>
>    $ chg init foo
> @@ -32,3 +34,73 @@ alias having an environment variable and
>    P1
>    $ A=2 chg printa
>    P2
> +
> +  $ cp $HGRCPATH.orig $HGRCPATH
> +  $ cd ..
> +
> +server lifecycle
> +----------------
> +
> +chg server should be restarted on code change, and old server will shut down
> +automatically. In this test, we use the following time parameters:
> +
> + - "sleep 1" to make mtime different
> + - "sleep 2" to notice mtime change (polling interval is 1 sec)
> +
> +set up repository with an extension:
> +
> +  $ chg init extreload
> +  $ cd extreload
> +  $ touch dummyext.py
> +  $ cat <<EOF >> .hg/hgrc
> +  > [extensions]
> +  > dummyext = dummyext.py
> +  > EOF
> +
> +isolate socket directory for stable result:
> +
> +  $ OLDCHGSOCKNAME=$CHGSOCKNAME
> +  $ mkdir chgsock
> +  $ CHGSOCKNAME=`pwd`/chgsock/server
> +
> +warm up server:
> +
> +  $ CHGDEBUG= chg log 2>&1 | egrep 'instruction|start'
> +  chg: debug: start cmdserver at $TESTTMP/extreload/chgsock/server
> +
> +new server should be started if extension modified:
> +
> +  $ sleep 1
> +  $ touch dummyext.py
> +  $ CHGDEBUG= chg log 2>&1 | egrep 'instruction|start'
> +  chg: debug: instruction: unlink $TESTTMP/extreload/chgsock/server-* (glob)
> +  chg: debug: instruction: reconnect
> +  chg: debug: start cmdserver at $TESTTMP/extreload/chgsock/server
> +
> +old server will shut down, while new server should still be reachable:
> +
> +  $ sleep 2
> +  $ CHGDEBUG= chg log 2>&1 | (egrep 'instruction|start' || true)
> +
> +socket file should never be unlinked by old server:
> +(simulates unowned socket by updating mtime, which makes sure server exits
> +at polling cycle)
> +
> +  $ ls chgsock/server-*
> +  chgsock/server-* (glob)
> +  $ touch chgsock/server-*
> +  $ sleep 2
> +  $ ls chgsock/server-*
> +  chgsock/server-* (glob)
> +
> +since no server is reachable from socket file, new server should be started:
> +(this test makes sure that old server shut down automatically)
> +
> +  $ CHGDEBUG= chg log 2>&1 | egrep 'instruction|start'
> +  chg: debug: start cmdserver at $TESTTMP/extreload/chgsock/server
> +
> +shut down servers and restore environment:
> +
> +  $ rm -R chgsock
> +  $ CHGSOCKNAME=$OLDCHGSOCKNAME
> +  $ cd ..
> _______________________________________________
> Mercurial-devel mailing list
> Mercurial-devel at mercurial-scm.org
> https://www.mercurial-scm.org/mailman/listinfo/mercurial-devel


More information about the Mercurial-devel mailing list