[PATCH 2 of 2] profiling: allow logging profile to the blackbox
Augie Fackler
raf at durin42.com
Tue Sep 8 12:01:15 CDT 2015
On Mon, Sep 07, 2015 at 12:11:16PM -0700, Durham Goode wrote:
> # HG changeset patch
> # User Durham Goode <durham at fb.com>
> # Date 1441651256 25200
> # Mon Sep 07 11:40:56 2015 -0700
> # Node ID d72ff051c6c6dee945690b0e5554a0450820e93e
> # Parent 2cd61d6e66c1034c97b7095fdf1d7908dd437b26
> profiling: allow logging profile to the blackbox
queued patch 1, I have a question about this one (which I may fix in
flight depending on the answer, though bonus points for just rolling a
v2 and saving me time)
>
> This allows specifying '--config profiling.output=blackbox' which will log the
> profile output to the blackbox (if enabled). This is useful for doing profiling
> on the server since it allows us to record the command, it's result, any
> exceptions, and it's profile, all in one spot. And we get log rotation for
> free.
>
> diff --git a/mercurial/dispatch.py b/mercurial/dispatch.py
> --- a/mercurial/dispatch.py
> +++ b/mercurial/dispatch.py
> @@ -1021,7 +1021,10 @@ def _runcommand(ui, options, cmd, cmdfun
>
> output = ui.config('profiling', 'output')
>
> - if output:
> + if output == 'blackbox':
> + import StringIO
> + fp = StringIO.StringIO()
> + elif output:
> path = ui.expandpath(output)
> fp = open(path, 'wb')
> else:
> @@ -1036,6 +1039,10 @@ def _runcommand(ui, options, cmd, cmdfun
> return statprofile(ui, checkargs, fp)
> finally:
> if output:
> + if output == 'blackbox':
> + val = "Profile:\n%s" % fp.getvalue()
> + val = val.replace('%', '%%')
This looks funny. At least put a comment here why you have to escape
the %s here?
> + ui.log('profile', val)
> fp.close()
> else:
> return checkargs()
> diff --git a/tests/test-profile.t b/tests/test-profile.t
> --- a/tests/test-profile.t
> +++ b/tests/test-profile.t
> @@ -14,6 +14,9 @@ test --profile
> $ hg --profile --config profiling.output=../out st
> $ grep CallCount ../out > /dev/null || cat ../out
>
> + $ hg --profile --config profiling.output=blackbox --config extensions.blackbox= st
> + $ grep CallCount .hg/blackbox.log > /dev/null || cat .hg/blackbox.log
> +
> $ hg --profile --config profiling.format=text st 2>../out
> $ grep CallCount ../out > /dev/null || cat ../out
>
> _______________________________________________
> Mercurial-devel mailing list
> Mercurial-devel at selenic.com
> https://selenic.com/mailman/listinfo/mercurial-devel
More information about the Mercurial-devel
mailing list