Show More
@@ -1064,6 +1064,16 b' def _dispatch(req):' | |||||
1064 | if req.earlyoptions[b'profile']: |
|
1064 | if req.earlyoptions[b'profile']: | |
1065 | for ui_ in uis: |
|
1065 | for ui_ in uis: | |
1066 | ui_.setconfig(b'profiling', b'enabled', b'true', b'--profile') |
|
1066 | ui_.setconfig(b'profiling', b'enabled', b'true', b'--profile') | |
|
1067 | elif req.earlyoptions[b'profile'] is False: | |||
|
1068 | # Check for it being set already, so that we don't pollute the config | |||
|
1069 | # with this when using chg in the very common case that it's not | |||
|
1070 | # enabled. | |||
|
1071 | if lui.configbool(b'profiling', b'enabled'): | |||
|
1072 | # Only do this on lui so that `chg foo` with a user config setting | |||
|
1073 | # profiling.enabled=1 still shows profiling information (chg will | |||
|
1074 | # specify `--no-profile` when `hg serve` is starting up, we don't | |||
|
1075 | # want that to propagate to every later invocation). | |||
|
1076 | lui.setconfig(b'profiling', b'enabled', b'false', b'--no-profile') | |||
1067 |
|
1077 | |||
1068 | profile = lui.configbool(b'profiling', b'enabled') |
|
1078 | profile = lui.configbool(b'profiling', b'enabled') | |
1069 | with profiling.profile(lui, enabled=profile) as profiler: |
|
1079 | with profiling.profile(lui, enabled=profile) as profiler: |
@@ -468,3 +468,72 b" Test that chg works (sets to the user's " | |||||
468 | LC_ALL= |
|
468 | LC_ALL= | |
469 | LC_CTYPE= |
|
469 | LC_CTYPE= | |
470 | LANG= |
|
470 | LANG= | |
|
471 | ||||
|
472 | Profiling isn't permanently enabled or carried over between chg invocations that | |||
|
473 | share the same server | |||
|
474 | $ cp $HGRCPATH.orig $HGRCPATH | |||
|
475 | $ hg init $TESTTMP/profiling | |||
|
476 | $ cd $TESTTMP/profiling | |||
|
477 | $ filteredchg() { | |||
|
478 | > CHGDEBUG=1 chg "$@" 2>&1 | egrep 'Sample count|start cmdserver' || true | |||
|
479 | > } | |||
|
480 | $ newchg() { | |||
|
481 | > chg --kill-chg-daemon | |||
|
482 | > filteredchg "$@" | egrep -v 'start cmdserver' || true | |||
|
483 | > } | |||
|
484 | (--profile isn't permanently on just because it was specified when chg was | |||
|
485 | started) | |||
|
486 | $ newchg log -r . --profile | |||
|
487 | Sample count: * (glob) | |||
|
488 | $ filteredchg log -r . | |||
|
489 | (enabling profiling via config works, even on the first chg command that starts | |||
|
490 | a cmdserver) | |||
|
491 | $ cat >> $HGRCPATH <<EOF | |||
|
492 | > [profiling] | |||
|
493 | > type=stat | |||
|
494 | > enabled=1 | |||
|
495 | > EOF | |||
|
496 | $ newchg log -r . | |||
|
497 | Sample count: * (glob) | |||
|
498 | $ filteredchg log -r . | |||
|
499 | Sample count: * (glob) | |||
|
500 | (test that we aren't accumulating more and more samples each run) | |||
|
501 | $ cat > $TESTTMP/debugsleep.py <<EOF | |||
|
502 | > import time | |||
|
503 | > from mercurial import registrar | |||
|
504 | > cmdtable = {} | |||
|
505 | > command = registrar.command(cmdtable) | |||
|
506 | > @command(b'debugsleep', [], b'', norepo=True) | |||
|
507 | > def debugsleep(ui): | |||
|
508 | > start = time.time() | |||
|
509 | > x = 0 | |||
|
510 | > while time.time() < start + 0.5: | |||
|
511 | > time.sleep(.1) | |||
|
512 | > x += 1 | |||
|
513 | > ui.status(b'%d debugsleep iterations in %.03fs\n' % (x, time.time() - start)) | |||
|
514 | > EOF | |||
|
515 | $ cat >> $HGRCPATH <<EOF | |||
|
516 | > [extensions] | |||
|
517 | > debugsleep = $TESTTMP/debugsleep.py | |||
|
518 | > EOF | |||
|
519 | $ newchg debugsleep > run_1 | |||
|
520 | $ filteredchg debugsleep > run_2 | |||
|
521 | $ filteredchg debugsleep > run_3 | |||
|
522 | $ filteredchg debugsleep > run_4 | |||
|
523 | FIXME: Run 4 should not be >3x Run 1's number of samples. | |||
|
524 | $ "$PYTHON" <<EOF | |||
|
525 | > r1 = int(open("run_1", "r").read().split()[-1]) | |||
|
526 | > r4 = int(open("run_4", "r").read().split()[-1]) | |||
|
527 | > print("Run 1: %d samples\nRun 4: %d samples\nRun 4 > 3 * Run 1: %s" % | |||
|
528 | > (r1, r4, r4 > (r1 * 3))) | |||
|
529 | > EOF | |||
|
530 | Run 1: * samples (glob) | |||
|
531 | Run 4: * samples (glob) | |||
|
532 | Run 4 > 3 * Run 1: True | |||
|
533 | (Disabling with --no-profile on the commandline still works, but isn't permanent) | |||
|
534 | $ newchg log -r . --no-profile | |||
|
535 | $ filteredchg log -r . | |||
|
536 | Sample count: * (glob) | |||
|
537 | $ filteredchg log -r . --no-profile | |||
|
538 | $ filteredchg log -r . | |||
|
539 | Sample count: * (glob) |
General Comments 0
You need to be logged in to leave comments.
Login now