Skip to content

Commit ced951f

Browse files
committed
fix test for cli
1 parent d29c9bc commit ced951f

File tree

1 file changed

+14
-8
lines changed

1 file changed

+14
-8
lines changed

tests/coordination/test_coordination_client.py

Lines changed: 14 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -190,36 +190,42 @@ def test_coordination_lock_describe_full_sync(self, sync_coordination_node):
190190

191191
async def test_coordination_lock_racing_async(self, async_coordination_node):
192192
client, node_path, initial_config = async_coordination_node
193-
small_timeout = 2
193+
timeout = 5 # таймаут для CI/нагрузки
194194

195195
lock = client.lock("test_lock", node_path)
196-
197196
await lock.create(init_limit=1, init_data=b"init-data")
198197

199198
describe_resp: DescribeLockResult = await lock.describe()
200199
assert describe_resp.status == StatusCode.SUCCESS
201200

202201
lock2_started = asyncio.Event()
203202
lock2_acquired = asyncio.Event()
203+
lock2_release = asyncio.Event()
204204

205205
async def second_lock_task():
206206
lock2_started.set()
207207
async with client.lock("test_lock", node_path):
208208
lock2_acquired.set()
209-
await asyncio.sleep(small_timeout)
209+
await lock2_release.wait() # вместо sleep
210210

211211
async with client.lock("test_lock", node_path) as lock1:
212-
213212
resp: DescribeLockResult = await lock1.describe()
214213
assert resp.status == StatusCode.SUCCESS
215214

216215
t2 = asyncio.create_task(second_lock_task())
217-
await lock2_started.wait()
216+
await asyncio.wait_for(lock2_started.wait(), timeout=timeout)
217+
218+
# Даем t2 шанс реально дойти до попытки acquire (не обязательно, но помогает стабильности)
219+
await asyncio.sleep(0)
220+
221+
# lock1 держится до выхода из async with
218222

219-
await asyncio.sleep(small_timeout)
223+
# После освобождения lock1 второй лок обязан захватиться
224+
await asyncio.wait_for(lock2_acquired.wait(), timeout=timeout)
220225

221-
await asyncio.wait_for(lock2_acquired.wait(), timeout=small_timeout)
222-
await asyncio.wait_for(t2, timeout=small_timeout)
226+
# Разрешаем t2 корректно выйти и ждём завершения
227+
lock2_release.set()
228+
await asyncio.wait_for(t2, timeout=timeout)
223229

224230
delete_resp = await lock.delete()
225231
assert delete_resp.status == StatusCode.SUCCESS

0 commit comments

Comments
 (0)