[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