Mercurial > hg
annotate tests/lockdelay.py @ 37627:cfb32979abcd
setup: add packages for concurrent.futures
We conceivably don't need to distribute this package on Python 3
since we will use the version in the standard library. However,
we want installs to be usable of multiple versions of Python. So
it is best to always have it.
Differential Revision: https://phab.mercurial-scm.org/D3265
author | Gregory Szorc <gregory.szorc@gmail.com> |
---|---|
date | Mon, 09 Apr 2018 12:27:52 -0700 |
parents | a76d5ba7ac43 |
children | 2372284d9457 |
rev | line source |
---|---|
28289
d493d64757eb
hg: obtain lock when creating share from pooled repo (issue5104)
Gregory Szorc <gregory.szorc@gmail.com>
parents:
diff
changeset
|
1 # Dummy extension that adds a delay after acquiring a lock. |
d493d64757eb
hg: obtain lock when creating share from pooled repo (issue5104)
Gregory Szorc <gregory.szorc@gmail.com>
parents:
diff
changeset
|
2 # |
d493d64757eb
hg: obtain lock when creating share from pooled repo (issue5104)
Gregory Szorc <gregory.szorc@gmail.com>
parents:
diff
changeset
|
3 # This extension can be used to test race conditions between lock acquisition. |
d493d64757eb
hg: obtain lock when creating share from pooled repo (issue5104)
Gregory Szorc <gregory.szorc@gmail.com>
parents:
diff
changeset
|
4 |
d493d64757eb
hg: obtain lock when creating share from pooled repo (issue5104)
Gregory Szorc <gregory.szorc@gmail.com>
parents:
diff
changeset
|
5 from __future__ import absolute_import |
d493d64757eb
hg: obtain lock when creating share from pooled repo (issue5104)
Gregory Szorc <gregory.szorc@gmail.com>
parents:
diff
changeset
|
6 |
d493d64757eb
hg: obtain lock when creating share from pooled repo (issue5104)
Gregory Szorc <gregory.szorc@gmail.com>
parents:
diff
changeset
|
7 import os |
d493d64757eb
hg: obtain lock when creating share from pooled repo (issue5104)
Gregory Szorc <gregory.szorc@gmail.com>
parents:
diff
changeset
|
8 import time |
d493d64757eb
hg: obtain lock when creating share from pooled repo (issue5104)
Gregory Szorc <gregory.szorc@gmail.com>
parents:
diff
changeset
|
9 |
30068
a76d5ba7ac43
pull: grab wlock during pull
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
28289
diff
changeset
|
10 def reposetup(ui, repo): |
28289
d493d64757eb
hg: obtain lock when creating share from pooled repo (issue5104)
Gregory Szorc <gregory.szorc@gmail.com>
parents:
diff
changeset
|
11 |
30068
a76d5ba7ac43
pull: grab wlock during pull
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
28289
diff
changeset
|
12 class delayedlockrepo(repo.__class__): |
a76d5ba7ac43
pull: grab wlock during pull
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
28289
diff
changeset
|
13 def lock(self): |
a76d5ba7ac43
pull: grab wlock during pull
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
28289
diff
changeset
|
14 delay = float(os.environ.get('HGPRELOCKDELAY', '0.0')) |
a76d5ba7ac43
pull: grab wlock during pull
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
28289
diff
changeset
|
15 if delay: |
a76d5ba7ac43
pull: grab wlock during pull
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
28289
diff
changeset
|
16 time.sleep(delay) |
a76d5ba7ac43
pull: grab wlock during pull
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
28289
diff
changeset
|
17 res = super(delayedlockrepo, self).lock() |
a76d5ba7ac43
pull: grab wlock during pull
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
28289
diff
changeset
|
18 delay = float(os.environ.get('HGPOSTLOCKDELAY', '0.0')) |
a76d5ba7ac43
pull: grab wlock during pull
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
28289
diff
changeset
|
19 if delay: |
a76d5ba7ac43
pull: grab wlock during pull
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
28289
diff
changeset
|
20 time.sleep(delay) |
a76d5ba7ac43
pull: grab wlock during pull
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
28289
diff
changeset
|
21 return res |
a76d5ba7ac43
pull: grab wlock during pull
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
28289
diff
changeset
|
22 repo.__class__ = delayedlockrepo |