Mercurial > hg
view tests/test-directaccess.t @ 37212:f09a2eab11cf
server: add an error feedback mechanism for when the daemon fails to launch
There's a recurring problem on Windows where `hg serve -d` will randomly fail to
spawn a detached process. The reason for the failure is completely hidden, and
it takes hours to get a single failure on my laptop. All this does is redirect
stdout/stderr of the child to a file until the lock file is freed, and then the
parent dumps it out if it fails to spawn.
I chose to put the output into the lock file because that is always cleaned up.
There's no way to report errors after that anyway. On Windows, killdaemons.py
is roughly `kill -9`, so this ensures that junk won't pile up.
This may end up being a case of EADDRINUSE. At least that's what I saw spit out
a few times (among other odd errors and missing output on Windows). But I also
managed to get the same thing on Fedora 26 by running test-hgwebdir.t with
--loop -j10 for several hours. Running `netstat` immediately after killing that
run printed a wall of sockets in the TIME_WAIT state, which were gone a couple
seconds later. I couldn't match up ports that failed, because --loop doesn't
print out the message about the port that was used. So maybe the fix is to
rotate the use of HGPORT[12] in the tests. But, let's collect some more data
first.
author | Matt Harbison <matt_harbison@yahoo.com> |
---|---|
date | Wed, 28 Mar 2018 00:11:09 -0400 |
parents | 7f025c9b7865 |
children | dfc51a482031 |
line wrap: on
line source
Tests for access level on hidden commits by various commands on based of their type. Setting the required config to start this $ cat >> $HGRCPATH <<EOF > [experimental] > evolution=createmarkers, allowunstable > directaccess=True > directaccess.revnums=True > [extensions] > amend = > EOF $ hg init repo $ cd repo $ for ch in a b c; do touch $ch; echo "foo" >> $ch; hg ci -Aqm "Added "$ch; done $ hg log -G -T '{rev}:{node} {desc}' --hidden @ 2:28ad74487de9599d00d81085be739c61fc340652 Added c | o 1:29becc82797a4bc11ec8880b58eaecd2ab3e7760 Added b | o 0:18d04c59bb5d2d4090ad9a5b59bd6274adb63add Added a $ echo "bar" >> c $ hg amend $ hg log -G -T '{rev}:{node} {desc}' --hidden @ 3:2443a0e664694756d8b435d06b6ad84f941b6fc0 Added c | | x 2:28ad74487de9599d00d81085be739c61fc340652 Added c |/ o 1:29becc82797a4bc11ec8880b58eaecd2ab3e7760 Added b | o 0:18d04c59bb5d2d4090ad9a5b59bd6274adb63add Added a Testing read only commands on the hidden revision Testing with rev number $ hg exp 2 --config experimental.directaccess.revnums=False abort: hidden revision '2' was rewritten as: 2443a0e66469! (use --hidden to access hidden revisions) [255] $ hg exp 2 # HG changeset patch # User test # Date 0 0 # Thu Jan 01 00:00:00 1970 +0000 # Node ID 28ad74487de9599d00d81085be739c61fc340652 # Parent 29becc82797a4bc11ec8880b58eaecd2ab3e7760 Added c diff -r 29becc82797a -r 28ad74487de9 c --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/c Thu Jan 01 00:00:00 1970 +0000 @@ -0,0 +1,1 @@ +foo $ hg log -r 2 changeset: 2:28ad74487de9 user: test date: Thu Jan 01 00:00:00 1970 +0000 obsolete: rewritten using amend as 3:2443a0e66469 summary: Added c $ hg identify -r 2 28ad74487de9 $ hg status --change 2 A c $ hg status --change 2 --config experimental.directaccess.revnums=False abort: hidden revision '2' was rewritten as: 2443a0e66469! (use --hidden to access hidden revisions) [255] $ hg diff -c 2 diff -r 29becc82797a -r 28ad74487de9 c --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/c Thu Jan 01 00:00:00 1970 +0000 @@ -0,0 +1,1 @@ +foo Testing with hash `hg export` $ hg exp 28ad74 # HG changeset patch # User test # Date 0 0 # Thu Jan 01 00:00:00 1970 +0000 # Node ID 28ad74487de9599d00d81085be739c61fc340652 # Parent 29becc82797a4bc11ec8880b58eaecd2ab3e7760 Added c diff -r 29becc82797a -r 28ad74487de9 c --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/c Thu Jan 01 00:00:00 1970 +0000 @@ -0,0 +1,1 @@ +foo `hg log` $ hg log -r 28ad74 changeset: 2:28ad74487de9 user: test date: Thu Jan 01 00:00:00 1970 +0000 obsolete: rewritten using amend as 3:2443a0e66469 summary: Added c `hg cat` $ hg cat -r 28ad74 c foo `hg diff` $ hg diff -c 28ad74 diff -r 29becc82797a -r 28ad74487de9 c --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/c Thu Jan 01 00:00:00 1970 +0000 @@ -0,0 +1,1 @@ +foo `hg files` $ hg files -r 28ad74 a b c `hg identify` $ hg identify -r 28ad74 28ad74487de9 `hg annotate` $ hg annotate -r 28ad74 a 0: foo `hg status` $ hg status --change 28ad74 A c `hg archive` This should not throw error $ hg archive -r 28ad74 foo `hg update` $ hg up 28ad74 updating to a hidden changeset 28ad74487de9 (hidden revision '28ad74487de9' was rewritten as: 2443a0e66469) 1 files updated, 0 files merged, 0 files removed, 0 files unresolved $ hg up 3 1 files updated, 0 files merged, 0 files removed, 0 files unresolved $ hg up 0 files updated, 0 files merged, 0 files removed, 0 files unresolved `hg revert` $ hg revert -r 28ad74 --all reverting c $ hg diff diff -r 2443a0e66469 c --- a/c Thu Jan 01 00:00:00 1970 +0000 +++ b/c Thu Jan 01 00:00:00 1970 +0000 @@ -1,2 +1,1 @@ foo -bar Test special hash/rev $ hg log -qr 'null:wdir() & 000000000000' -1:000000000000 $ hg log -qr 'null:wdir() & ffffffffffff' 2147483647:ffffffffffff $ hg log -qr 'null:wdir() & rev(-1)' -1:000000000000 $ hg log -qr 'null:wdir() & rev(2147483647)' 2147483647:ffffffffffff $ hg log -qr 'null:wdir() & 2147483647' 2147483647:ffffffffffff Commands with undefined cmdtype should not work right now $ hg phase -r 28ad74 abort: hidden revision '28ad74' was rewritten as: 2443a0e66469! (use --hidden to access hidden revisions) [255] $ hg phase -r 2 abort: hidden revision '2' was rewritten as: 2443a0e66469! (use --hidden to access hidden revisions) [255] Setting a bookmark will make that changeset unhidden, so this should come in end $ hg bookmarks -r 28ad74 book bookmarking hidden changeset 28ad74487de9 (hidden revision '28ad74487de9' was rewritten as: 2443a0e66469) $ hg bookmarks book 2:28ad74487de9