test-worker.t
90 lines
| 2.1 KiB
| text/troff
|
Tads3Lexer
/ tests / test-worker.t
David Soria Parra
|
r31696 | Test UI worker interaction | ||
$ cat > t.py <<EOF | ||||
> from __future__ import absolute_import, print_function | ||||
> from mercurial import ( | ||||
> cmdutil, | ||||
Yuya Nishihara
|
r32041 | > error, | ||
David Soria Parra
|
r31696 | > ui as uimod, | ||
> worker, | ||||
> ) | ||||
Yuya Nishihara
|
r32041 | > def abort(ui, args): | ||
> if args[0] == 0: | ||||
> # by first worker for test stability | ||||
> raise error.Abort('known exception') | ||||
> return runme(ui, []) | ||||
Yuya Nishihara
|
r32043 | > def exc(ui, args): | ||
> if args[0] == 0: | ||||
> # by first worker for test stability | ||||
> raise Exception('unknown exception') | ||||
> return runme(ui, []) | ||||
David Soria Parra
|
r31696 | > def runme(ui, args): | ||
> for arg in args: | ||||
> ui.status('run\n') | ||||
> yield 1, arg | ||||
Yuya Nishihara
|
r32041 | > functable = { | ||
> 'abort': abort, | ||||
Yuya Nishihara
|
r32043 | > 'exc': exc, | ||
Yuya Nishihara
|
r32041 | > 'runme': runme, | ||
> } | ||||
David Soria Parra
|
r31696 | > cmdtable = {} | ||
> command = cmdutil.command(cmdtable) | ||||
Yuya Nishihara
|
r32041 | > @command('test', [], 'hg test [COST] [FUNC]') | ||
> def t(ui, repo, cost=1.0, func='runme'): | ||||
David Soria Parra
|
r31696 | > cost = float(cost) | ||
Yuya Nishihara
|
r32041 | > func = functable[func] | ||
David Soria Parra
|
r31696 | > ui.status('start\n') | ||
Yuya Nishihara
|
r32041 | > runs = worker.worker(ui, cost, func, (ui,), range(8)) | ||
David Soria Parra
|
r31696 | > for n, i in runs: | ||
> pass | ||||
> ui.status('done\n') | ||||
> EOF | ||||
$ abspath=`pwd`/t.py | ||||
$ hg init | ||||
Run tests with worker enable by forcing a heigh cost | ||||
$ hg --config "extensions.t=$abspath" test 100000.0 | ||||
start | ||||
run | ||||
run | ||||
run | ||||
run | ||||
run | ||||
run | ||||
run | ||||
run | ||||
done | ||||
Run tests without worker by forcing a low cost | ||||
$ hg --config "extensions.t=$abspath" test 0.0000001 | ||||
start | ||||
run | ||||
run | ||||
run | ||||
run | ||||
run | ||||
run | ||||
run | ||||
run | ||||
done | ||||
Yuya Nishihara
|
r32041 | |||
Known exception should be caught, but printed if --traceback is enabled | ||||
$ hg --config "extensions.t=$abspath" --config 'worker.numcpus=2' \ | ||||
> test 100000.0 abort | ||||
start | ||||
abort: known exception | ||||
Yuya Nishihara
|
r32042 | [255] | ||
Yuya Nishihara
|
r32041 | |||
$ hg --config "extensions.t=$abspath" --config 'worker.numcpus=2' \ | ||||
> test 100000.0 abort --traceback 2>&1 | grep '^Traceback' | ||||
Traceback (most recent call last): | ||||
Yuya Nishihara
|
r32042 | Traceback (most recent call last): | ||
Yuya Nishihara
|
r32043 | |||
Traceback must be printed for unknown exceptions | ||||
$ hg --config "extensions.t=$abspath" --config 'worker.numcpus=2' \ | ||||
> test 100000.0 exc 2>&1 | grep '^Traceback' | ||||
Traceback (most recent call last): | ||||