Skip to content

Commit

Permalink
Merge pull request glasslion#21 from alanjds/locked-method
Browse files Browse the repository at this point in the history
Implement RedLock.locked() check, as threading.Lock does
  • Loading branch information
glasslion committed Jul 11, 2018
2 parents 061fe90 + fb5c702 commit 067035b
Show file tree
Hide file tree
Showing 2 changed files with 37 additions and 0 deletions.
6 changes: 6 additions & 0 deletions redlock/lock.py
Original file line number Diff line number Diff line change
Expand Up @@ -129,6 +129,12 @@ def _total_ms(self, delta):
delta_seconds = delta.seconds + delta.days * 24 * 3600
return (delta.microseconds + delta_seconds * 10**6) / 10**3

def locked(self):
for node in self.redis_nodes:
if node.get(self.resource):
return True
return False

def acquire_node(self, node):
"""
acquire a single redis node
Expand Down
31 changes: 31 additions & 0 deletions tests/test_lock.py
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,8 @@
import time
import unittest

import pytest


def test_default_connection_details_value():
"""
Expand All @@ -23,6 +25,35 @@ def test_simple_lock():
assert locked == True


def test_lock_is_locked():
lock = RedLock("test_lock_is_locked")
# Clear possible initial states
[node.delete(lock.resource) for node in lock.redis_nodes]

assert lock.locked() is False

lock.acquire()
assert lock.locked() is True

lock.release()
assert lock.locked() is False


def test_locked_span_lock_instances():
lock1 = RedLock("test_locked_span_lock_instances")
lock2 = RedLock("test_locked_span_lock_instances")
# Clear possible initial states
[node.delete(lock1.resource) for node in lock1.redis_nodes]

assert lock1.locked() == lock2.locked() == False
lock1.acquire()

assert lock1.locked() == lock2.locked() == True

lock1.release()
assert lock1.locked() == lock2.locked() == False


def test_lock_with_validity():
"""
Test a RedLock can be acquired and the lock validity is also retruned.
Expand Down

0 comments on commit 067035b

Please sign in to comment.