Esempio n. 1
0
 def __init__(self, file_path):
     """
     Args:
         file_path: is the location of where the filesystem based lockfile should be written to.
     """
     self._fs_lock = defer.DeferredFilesystemLock(file_path)
     self._mutex = defer.DeferredLock()
Esempio n. 2
0
    def test_defaultScheduler(self):
        """
        Test that the default scheduler is set up properly.
        """
        lock = defer.DeferredFilesystemLock(self.mktemp())

        self.assertEquals(lock._scheduler, reactor)
Esempio n. 3
0
    def run(self, f, *arg, **kw):
        lock = defer.DeferredFilesystemLock(self.file_name + '.lock')
        d = lock.deferUntilLocked()

        def unlockAndReturn(r):
            lock.unlock()
            return r

        def execute(_):
            d = defer.maybeDeferred(f, *arg, **kw)
            d.addBoth(unlockAndReturn)
            return d

        d.addCallback(execute)
        return d
Esempio n. 4
0
        def new_method(*args, **kwargs):
            dirname, _ = os.path.split(path)
            mkdir_p(dirname)
            name = path + '.lock'
            # TODO: evaluate the need to replace this for a readers-writer lock
            lock = defer.DeferredFilesystemLock(name)

            def _release(result):
                lock.unlock()
                return result

            d = lock.deferUntilLocked()
            d.addCallback(lambda _: method(*args, **kwargs))
            d.addCallbacks(_release, _release)
            return d
Esempio n. 5
0
 def setUp(self):
     self.clock = Clock()
     self.lock = defer.DeferredFilesystemLock(self.mktemp(),
                                              scheduler=self.clock)
Esempio n. 6
0
 def _lock_for_report_log(self, measurement_id):
     lock_file = self.measurement_dir.child(measurement_id).child(
         "report_log.lock")
     return defer.DeferredFilesystemLock(lock_file.path)