tests/lockdelay.py
author Anton Shestakov <av6@dwimlabs.net>
Thu, 14 Jul 2016 12:33:44 +0800
changeset 29538 df7d8ea90695
parent 28289 d493d64757eb
child 30068 a76d5ba7ac43
permissions -rw-r--r--
hgweb: enumerate lines in loop header, not before Doing this will allow access to the lines in arbitrary order (because the result of enumerate() is an iterator), and that will help calculating rowspan for annotate blocks.

# Dummy extension that adds a delay after acquiring a lock.
#
# This extension can be used to test race conditions between lock acquisition.

from __future__ import absolute_import

import os
import time

from mercurial import (
    lock as lockmod,
)

class delaylock(lockmod.lock):
    def lock(self):
        delay = float(os.environ.get('HGPRELOCKDELAY', '0.0'))
        if delay:
            time.sleep(delay)
        res = super(delaylock, self).lock()
        delay = float(os.environ.get('HGPOSTLOCKDELAY', '0.0'))
        if delay:
            time.sleep(delay)
        return res

def extsetup(ui):
    lockmod.lock = delaylock