##// END OF EJS Templates
hgweb: profile HTTP requests...
hgweb: profile HTTP requests Currently, running `hg serve --profile` doesn't yield anything useful: when the process is terminated the profiling output displays results from the main thread, which typically spends most of its time in select.select(). Furthermore, it has no meaningful results from mercurial.* modules because the threads serving HTTP requests don't actually get profiled. This patch teaches the hgweb wsgi applications to profile individual requests. If profiling is enabled, the profiler kicks in after HTTP/WSGI environment processing but before Mercurial's main request processing. The profile results are printed to the configured profiling output. If running `hg serve` from a shell, they will be printed to stderr, just before the HTTP request line is logged. If profiling to a file, we only write a single profile to the file because the file is not opened in append mode. We could add support for appending to files in a future patch if someone wants it. Per request profiling doesn't work with the statprof profiler because internally that profiler collects samples from the thread that *initially* requested profiling be enabled. I have plans to address this by vendoring Facebook's customized statprof and then improving it.

File last commit:

r29688:30c59bdd default
r29787:80df0426 default
Show More
test-push-hook-lock.t
50 lines | 1.3 KiB | text/troff | Tads3Lexer
/ tests / test-push-hook-lock.t
Adrian Buehlmann
combine tests
r12279 $ hg init 1
$ echo '[ui]' >> 1/.hg/hgrc
$ echo 'timeout = 10' >> 1/.hg/hgrc
$ echo foo > 1/foo
$ hg --cwd 1 ci -A -m foo
adding foo
$ hg clone 1 2
updating to branch default
1 files updated, 0 files merged, 0 files removed, 0 files unresolved
$ hg clone 2 3
updating to branch default
1 files updated, 0 files merged, 0 files removed, 0 files unresolved
Matt Harbison
tests: move a multi-statement debuglocks hook into a shell script for Windows...
r23349 $ cat <<EOF > $TESTTMP/debuglocks-pretxn-hook.sh
> hg debuglocks
> true
> EOF
Adrian Buehlmann
combine tests
r12279 $ echo '[hooks]' >> 2/.hg/hgrc
Matt Harbison
tests: move a multi-statement debuglocks hook into a shell script for Windows...
r23349 $ echo "pretxnchangegroup.a = sh $TESTTMP/debuglocks-pretxn-hook.sh" >> 2/.hg/hgrc
Adrian Buehlmann
combine tests
r12279 $ echo 'changegroup.push = hg push -qf ../1' >> 2/.hg/hgrc
$ echo bar >> 3/foo
$ hg --cwd 3 ci -m bar
Pierre-Yves David
tests: use 'legacy.exchange' option in various mixed tests...
r29687 $ hg --cwd 3 push ../2 --config devel.legacy.exchange=bundle1
Adrian Buehlmann
combine tests
r12279 pushing to ../2
searching for changes
adding changesets
adding manifests
adding file changes
added 1 changesets with 1 changes to 1 files
Matt Mackall
commands: add debuglocks to report/clear lock state
r22559 lock: user *, process * (*s) (glob)
wlock: free
Adrian Buehlmann
combine tests
r12279
Pierre-Yves David
test: test both bundle1 and bundle2 paths in 'test-push-hook-lock.t'...
r25126 $ hg --cwd 1 --config extensions.strip= strip tip -q
$ hg --cwd 2 --config extensions.strip= strip tip -q
Pierre-Yves David
tests: remove all remaining usage of experimental.bundle2-exp...
r29688 $ hg --cwd 3 push ../2 # bundle2+
Pierre-Yves David
test: test both bundle1 and bundle2 paths in 'test-push-hook-lock.t'...
r25126 pushing to ../2
searching for changes
adding changesets
adding manifests
adding file changes
added 1 changesets with 1 changes to 1 files
lock: user *, process * (*s) (glob)
wlock: user *, process * (*s) (glob)