D1427: logtoprocess: add a test to show pager and ltp bad interaction

2018-10-01 Thread lothiraldan (Boris Feld)
lothiraldan abandoned this revision.
lothiraldan added a comment.


  Replaced by https://phab.mercurial-scm.org/D4815

REPOSITORY
  rHG Mercurial

REVISION DETAIL
  https://phab.mercurial-scm.org/D1427

To: lothiraldan, #hg-reviewers, yuja
Cc: yuja, durin42, quark, mercurial-devel
___
Mercurial-devel mailing list
Mercurial-devel@mercurial-scm.org
https://www.mercurial-scm.org/mailman/listinfo/mercurial-devel


D1427: logtoprocess: add a test to show pager and ltp bad interaction

2017-12-15 Thread yuja (Yuya Nishihara)
yuja added inline comments.

INLINE COMMENTS

> lothiraldan wrote in test-logtoprocess.t:33
> I tried making the file path unique for each call (by adding `\$(date +%s)`) 
> but it doesn't seems to change anything in the stability unfortunately :(

Can't we just append to the log file and sort the content?

REPOSITORY
  rHG Mercurial

REVISION DETAIL
  https://phab.mercurial-scm.org/D1427

To: lothiraldan, #hg-reviewers, yuja
Cc: yuja, durin42, quark, mercurial-devel
___
Mercurial-devel mailing list
Mercurial-devel@mercurial-scm.org
https://www.mercurial-scm.org/mailman/listinfo/mercurial-devel


D1427: logtoprocess: add a test to show pager and ltp bad interaction

2017-12-15 Thread lothiraldan (Boris Feld)
lothiraldan added inline comments.

INLINE COMMENTS

> yuja wrote in test-logtoprocess.t:33
> This file may be overwritten asynchronously by more than one
> logging processes. That's probably why the test result is unstable
> especially with chg.

I tried making the file path unique for each call (by adding `\$(date +%s)`) 
but it doesn't seems to change anything in the stability unfortunately :(

REPOSITORY
  rHG Mercurial

REVISION DETAIL
  https://phab.mercurial-scm.org/D1427

To: lothiraldan, #hg-reviewers, yuja
Cc: yuja, durin42, quark, mercurial-devel
___
Mercurial-devel mailing list
Mercurial-devel@mercurial-scm.org
https://www.mercurial-scm.org/mailman/listinfo/mercurial-devel


D1427: logtoprocess: add a test to show pager and ltp bad interaction

2017-11-29 Thread yuja (Yuya Nishihara)
yuja requested changes to this revision.
yuja added inline comments.
This revision now requires changes to proceed.

INLINE COMMENTS

> test-logtoprocess.t:33
>> echo "\$MSG1";
> -  > echo "\$MSG2"
> -  > commandfinish=echo 'logtoprocess commandfinish output:';
> +  > echo "\$MSG2") > $TESTTMP/command.log
> +  > commandfinish=(echo 'logtoprocess commandfinish output:';

This file may be overwritten asynchronously by more than one
logging processes. That's probably why the test result is unstable
especially with chg.

REPOSITORY
  rHG Mercurial

REVISION DETAIL
  https://phab.mercurial-scm.org/D1427

To: lothiraldan, #hg-reviewers, yuja
Cc: yuja, durin42, quark, mercurial-devel
___
Mercurial-devel mailing list
Mercurial-devel@mercurial-scm.org
https://www.mercurial-scm.org/mailman/listinfo/mercurial-devel


D1427: logtoprocess: add a test to show pager and ltp bad interaction

2017-11-28 Thread lothiraldan (Boris Feld)
lothiraldan updated this revision to Diff 3916.

REPOSITORY
  rHG Mercurial

CHANGES SINCE LAST UPDATE
  https://phab.mercurial-scm.org/D1427?vs=3529=3916

REVISION DETAIL
  https://phab.mercurial-scm.org/D1427

AFFECTED FILES
  tests/test-logtoprocess.t

CHANGE DETAILS

diff --git a/tests/test-logtoprocess.t b/tests/test-logtoprocess.t
--- a/tests/test-logtoprocess.t
+++ b/tests/test-logtoprocess.t
@@ -27,59 +27,99 @@
   > logtoprocess=
   > foocommand=$TESTTMP/foocommand.py
   > [logtoprocess]
-  > command=echo 'logtoprocess command output:';
+  > command=(echo 'logtoprocess command output:';
   > echo "\$EVENT";
   > echo "\$MSG1";
-  > echo "\$MSG2"
-  > commandfinish=echo 'logtoprocess commandfinish output:';
+  > echo "\$MSG2") > $TESTTMP/command.log
+  > commandfinish=(echo 'logtoprocess commandfinish output:';
   > echo "\$EVENT";
   > echo "\$MSG1";
   > echo "\$MSG2";
-  > echo "\$MSG3"
-  > foo=echo 'logtoprocess foo output:';
+  > echo "\$MSG3") > $TESTTMP/commandfinish.log
+  > foo=(echo 'logtoprocess foo output:';
   > echo "\$EVENT";
   > echo "\$MSG1";
-  > echo "\$OPT_BAR"
+  > echo "\$OPT_BAR") > $TESTTMP/foo.log
   > EOF
 
 Running a command triggers both a ui.log('command') and a
 ui.log('commandfinish') call. The foo command also uses ui.log.
 
 Use sort to avoid ordering issues between the various processes we spawn:
-  $ hg foo | cat | sort
-  
-  
+  $ hg foo
+  $ cat $TESTTMP/command.log | sort
   
-   (chg !)
+  command
+  foo (no-chg !)
+  foo (no-chg !)
+  logtoprocess command output:
+  serve --cmdserver chgunix * (glob) (chg !)
+  serve --cmdserver chgunix * (glob) (chg !)
+
+#if no-chg
+  $ cat $TESTTMP/commandfinish.log | sort
+  
   0
-  a message: spam
-  command
-  command (chg !)
   commandfinish
   foo
-  foo
-  foo
+  foo exited 0 after * seconds (glob)
+  logtoprocess commandfinish output:
+  $ cat $TESTTMP/foo.log | sort
+  
+  a message: spam
   foo
-  foo exited 0 after * seconds (glob)
-  logtoprocess command output:
-  logtoprocess command output: (chg !)
-  logtoprocess commandfinish output:
   logtoprocess foo output:
-  serve --cmdserver chgunix * (glob) (chg !)
-  serve --cmdserver chgunix * (glob) (chg !)
   spam
+#endif
 
 Confirm that logging blocked time catches stdio properly:
   $ cp $HGRCPATH.bak $HGRCPATH
   $ cat >> $HGRCPATH << EOF
   > [extensions]
   > logtoprocess=
   > pager=
   > [logtoprocess]
-  > uiblocked=echo "\$EVENT stdio \$OPT_STDIO_BLOCKED ms command 
\$OPT_COMMAND_DURATION ms"
+  > uiblocked=echo "\$EVENT stdio \$OPT_STDIO_BLOCKED ms command 
\$OPT_COMMAND_DURATION ms" > $TESTTMP/uiblocked.log
   > [ui]
   > logblockedtimes=True
   > EOF
 
-  $ hg log | cat
+  $ hg log
+  $ sleep 0.2
+  $ cat $TESTTMP/uiblocked.log
   uiblocked stdio [0-9]+.[0-9]* ms command [0-9]+.[0-9]* ms (re)
+
+Try to confirm that pager wait on logtoprocess:
+
+Add a script that wait on a file to appears for 5 seconds, if it sees it touch
+another file or die after 5 seconds. If the scripts is awaited by hg, the
+script will die after the timeout before we could touch the file and the
+resulting file will not exists. If not, we will touch the file and see it.
+
+  $ cat > $TESTTMP/wait-output.sh << EOF
+  > #!/bin/sh
+  > for i in \`$TESTDIR/seq.py 50\`; do
+  >   if [ -f "$TESTTMP/wait-for-touched" ];
+  >   then
+  > touch "$TESTTMP/touched";
+  > break;
+  >   else
+  > sleep 0.1;
+  >   fi
+  > done
+  > EOF
+  $ chmod +x $TESTTMP/wait-output.sh
+
+  $ cat >> $HGRCPATH << EOF
+  > [extensions]
+  > logtoprocess=
+  > pager=
+  > [logtoprocess]
+  > commandfinish=$TESTTMP/wait-output.sh
+  > EOF
+  $ hg version -q --pager=always
+  Mercurial Distributed SCM (version *) (glob)
+  $ touch $TESTTMP/wait-for-touched
+  $ sleep 0.2
+  $ test -f $TESTTMP/touched && echo "SUCCESS Pager is waiting on ltp" || echo 
"FAIL Pager is waiting on ltp"
+  FAIL Pager is waiting on ltp



To: lothiraldan, #hg-reviewers
Cc: durin42, quark, mercurial-devel
___
Mercurial-devel mailing list
Mercurial-devel@mercurial-scm.org
https://www.mercurial-scm.org/mailman/listinfo/mercurial-devel


D1427: logtoprocess: add a test to show pager and ltp bad interaction

2017-11-28 Thread lothiraldan (Boris Feld)
lothiraldan added a comment.


  Could someone with chg experience give me a hand or a pointer why this test 
might be flaky with chg?

REPOSITORY
  rHG Mercurial

REVISION DETAIL
  https://phab.mercurial-scm.org/D1427

To: lothiraldan, #hg-reviewers
Cc: durin42, quark, mercurial-devel
___
Mercurial-devel mailing list
Mercurial-devel@mercurial-scm.org
https://www.mercurial-scm.org/mailman/listinfo/mercurial-devel


D1427: logtoprocess: add a test to show pager and ltp bad interaction

2017-11-17 Thread durin42 (Augie Fackler)
durin42 added a comment.


  Jun, any idea why this might be chg-broken?

REPOSITORY
  rHG Mercurial

REVISION DETAIL
  https://phab.mercurial-scm.org/D1427

To: lothiraldan, #hg-reviewers
Cc: durin42, quark, mercurial-devel
___
Mercurial-devel mailing list
Mercurial-devel@mercurial-scm.org
https://www.mercurial-scm.org/mailman/listinfo/mercurial-devel


D1427: logtoprocess: add a test to show pager and ltp bad interaction

2017-11-15 Thread lothiraldan (Boris Feld)
lothiraldan created this revision.
Herald added a subscriber: mercurial-devel.
Herald added a reviewer: hg-reviewers.

REVISION SUMMARY
  The next changeset will fix the bad interaction between the pager and log-to-
  process. Add a test first to make the next changeset easier to understand.
  
  XXX-REVIEW: I tried making the test file compatible with chg but it seems
  flaky. The output is different when running only this test without parallelism
  (rt test-logtoprocess.t) vs running all tests with parallelism (rt -j 4).
  Could someone with more chg experience gives me a hand stabilizing this
  test file?

REPOSITORY
  rHG Mercurial

REVISION DETAIL
  https://phab.mercurial-scm.org/D1427

AFFECTED FILES
  tests/test-logtoprocess.t

CHANGE DETAILS

diff --git a/tests/test-logtoprocess.t b/tests/test-logtoprocess.t
--- a/tests/test-logtoprocess.t
+++ b/tests/test-logtoprocess.t
@@ -27,59 +27,99 @@
   > logtoprocess=
   > foocommand=$TESTTMP/foocommand.py
   > [logtoprocess]
-  > command=echo 'logtoprocess command output:';
+  > command=(echo 'logtoprocess command output:';
   > echo "\$EVENT";
   > echo "\$MSG1";
-  > echo "\$MSG2"
-  > commandfinish=echo 'logtoprocess commandfinish output:';
+  > echo "\$MSG2") > $TESTTMP/command.log
+  > commandfinish=(echo 'logtoprocess commandfinish output:';
   > echo "\$EVENT";
   > echo "\$MSG1";
   > echo "\$MSG2";
-  > echo "\$MSG3"
-  > foo=echo 'logtoprocess foo output:';
+  > echo "\$MSG3") > $TESTTMP/commandfinish.log
+  > foo=(echo 'logtoprocess foo output:';
   > echo "\$EVENT";
   > echo "\$MSG1";
-  > echo "\$OPT_BAR"
+  > echo "\$OPT_BAR") > $TESTTMP/foo.log
   > EOF
 
 Running a command triggers both a ui.log('command') and a
 ui.log('commandfinish') call. The foo command also uses ui.log.
 
 Use sort to avoid ordering issues between the various processes we spawn:
-  $ hg foo | cat | sort
-  
-  
+  $ hg foo
+  $ cat $TESTTMP/command.log | sort
   
-   (chg !)
+  command
+  foo (no-chg !)
+  foo (no-chg !)
+  logtoprocess command output:
+  serve --cmdserver chgunix * (glob) (chg !)
+  serve --cmdserver chgunix * (glob) (chg !)
+
+#if no-chg
+  $ cat $TESTTMP/commandfinish.log | sort
+  
   0
-  a message: spam
-  command
-  command (chg !)
   commandfinish
   foo
-  foo
-  foo
+  foo exited 0 after * seconds (glob)
+  logtoprocess commandfinish output:
+  $ cat $TESTTMP/foo.log | sort
+  
+  a message: spam
   foo
-  foo exited 0 after * seconds (glob)
-  logtoprocess command output:
-  logtoprocess command output: (chg !)
-  logtoprocess commandfinish output:
   logtoprocess foo output:
-  serve --cmdserver chgunix * (glob) (chg !)
-  serve --cmdserver chgunix * (glob) (chg !)
   spam
+#endif
 
 Confirm that logging blocked time catches stdio properly:
   $ cp $HGRCPATH.bak $HGRCPATH
   $ cat >> $HGRCPATH << EOF
   > [extensions]
   > logtoprocess=
   > pager=
   > [logtoprocess]
-  > uiblocked=echo "\$EVENT stdio \$OPT_STDIO_BLOCKED ms command 
\$OPT_COMMAND_DURATION ms"
+  > uiblocked=echo "\$EVENT stdio \$OPT_STDIO_BLOCKED ms command 
\$OPT_COMMAND_DURATION ms" > $TESTTMP/uiblocked.log
   > [ui]
   > logblockedtimes=True
   > EOF
 
-  $ hg log | cat
+  $ hg log
+  $ sleep 0.2
+  $ cat $TESTTMP/uiblocked.log
   uiblocked stdio [0-9]+.[0-9]* ms command [0-9]+.[0-9]* ms (re)
+
+Try to confirm that pager wait on logtoprocess:
+
+Add a script that wait on a file to appears for 5 seconds, if it sees it touch
+another file or die after 5 seconds. If the scripts is awaited by hg, the
+script will die after the timeout before we could touch the file and the
+resulting file will not exists. If not, we will touch the file and see it.
+
+  $ cat > $TESTTMP/wait-output.sh << EOF
+  > #!/bin/sh
+  > for i in \`$TESTDIR/seq.py 50\`; do
+  >   if [ -f "$TESTTMP/wait-for-touched" ];
+  >   then
+  > touch "$TESTTMP/touched";
+  > break;
+  >   else
+  > sleep 0.1;
+  >   fi
+  > done
+  > EOF
+  $ chmod +x $TESTTMP/wait-output.sh
+
+  $ cat >> $HGRCPATH << EOF
+  > [extensions]
+  > logtoprocess=
+  > pager=
+  > [logtoprocess]
+  > commandfinish=$TESTTMP/wait-output.sh
+  > EOF
+  $ hg version -q --pager=always
+  Mercurial Distributed SCM (version *) (glob)
+  $ touch $TESTTMP/wait-for-touched
+  $ sleep 0.2
+  $ test -f $TESTTMP/touched && echo "SUCCESS Pager is waiting on ltp" || echo 
"FAIL Pager is waiting on ltp"
+  FAIL Pager is waiting on ltp



To: lothiraldan, #hg-reviewers
Cc: mercurial-devel
___
Mercurial-devel mailing list
Mercurial-devel@mercurial-scm.org
https://www.mercurial-scm.org/mailman/listinfo/mercurial-devel