[PATCH 2 of 2] profiling: allow logging profile to the blackbox
Durham Goode
durham at fb.com
Tue Sep 8 18:42:07 UTC 2015
On 9/8/15 10:01 AM, Augie Fackler wrote:
> 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)
V2 sent
>
>> 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