Thanks to visit codestin.com
Credit goes to github.com

Skip to content
This repository was archived by the owner on Mar 13, 2022. It is now read-only.

Commit 1771cd4

Browse files
committed
common thread lock for MockResourceLock
1 parent 1a674df commit 1771cd4

File tree

1 file changed

+9
-6
lines changed

1 file changed

+9
-6
lines changed

leaderelection/leaderelection_test.py

Lines changed: 9 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,8 @@
2323
import time
2424
import pytest
2525

26+
thread_lock = threading.RLock()
27+
2628
class LeaderElectionTest(unittest.TestCase):
2729
def test_simple_leader_election(self):
2830
election_history = []
@@ -38,7 +40,7 @@ def on_update():
3840
def on_change():
3941
election_history.append("change record")
4042

41-
mock_lock = MockResourceLock("mock", "mock_namespace", "mock", on_create, on_update, on_change, None)
43+
mock_lock = MockResourceLock("mock", "mock_namespace", "mock", thread_lock, on_create, on_update, on_change, None)
4244

4345
def on_started_leading():
4446
leadership_history.append("start leading")
@@ -71,7 +73,7 @@ def on_update_A():
7173
def on_change_A():
7274
election_history.append("A gets leadership")
7375

74-
mock_lock_A = MockResourceLock("mock", "mock_namespace", "MockA", on_create_A, on_update_A, on_change_A, None)
76+
mock_lock_A = MockResourceLock("mock", "mock_namespace", "MockA", thread_lock, on_create_A, on_update_A, on_change_A, None)
7577
mock_lock_A.renew_count_max = 3
7678

7779
def on_started_leading_A():
@@ -94,7 +96,7 @@ def on_update_B():
9496
def on_change_B():
9597
leadership_history.append("B gets leadership")
9698

97-
mock_lock_B = MockResourceLock("mock", "mock_namespace", "MockB", on_create_B, on_update_B, on_change_B, None)
99+
mock_lock_B = MockResourceLock("mock", "mock_namespace", "MockB", thread_lock, on_create_B, on_update_B, on_change_B, None)
98100
mock_lock_B.renew_count_max = 4
99101

100102
def on_started_leading_B():
@@ -164,7 +166,7 @@ def on_change():
164166
def on_try_update():
165167
election_history.append("try update record")
166168

167-
mock_lock = MockResourceLock("mock", "mock_namespace", "mock", on_create, on_update, on_change, on_try_update)
169+
mock_lock = MockResourceLock("mock", "mock_namespace", "mock", thread_lock, on_create, on_update, on_change, on_try_update)
168170
mock_lock.renew_count_max = 3
169171

170172
def on_started_leading():
@@ -204,14 +206,15 @@ def assert_history(self, history, expected):
204206

205207

206208
class MockResourceLock:
207-
def __init__(self, name, namespace, identity, on_create=None, on_update=None, on_change=None, on_try_update=None):
209+
def __init__(self, name, namespace, identity, shared_lock, on_create=None, on_update=None, on_change=None, on_try_update=None):
210+
# self.leader_record is shared between two MockResourceLock objects
208211
self.leader_record = []
209212
self.renew_count = 0
210213
self.renew_count_max = 4
211214
self.name = name
212215
self.namespace = namespace
213216
self.identity = str(identity)
214-
self.lock = threading.RLock()
217+
self.lock = shared_lock
215218

216219
self.on_create = on_create
217220
self.on_update = on_update

0 commit comments

Comments
 (0)