|
|
@@ -234,11 +234,8 @@ class TimeOut(Attribute): |
|
|
|
|
|
|
|
@_tbprinter |
|
|
|
async def timeout_coro(self): |
|
|
|
print('tc1') |
|
|
|
async with self._brd.lock: |
|
|
|
print('tc2') |
|
|
|
await self._brd.release() |
|
|
|
print('tc3') |
|
|
|
|
|
|
|
def timeout_callback(self): |
|
|
|
self._task = asyncio.create_task(self.timeout_coro()) |
|
|
@@ -276,6 +273,13 @@ class SerialConsole(DefROAttribute): |
|
|
|
raise RuntimeError('activate failed: %d' % ret) |
|
|
|
|
|
|
|
class BoardImpl: |
|
|
|
''' |
|
|
|
This implements the interface for a board. The lock, inst.lock, |
|
|
|
needs to be locked before most method calls. This is to ensure |
|
|
|
that the board is in a stable state, such as the jail will not |
|
|
|
be destroyed before the operation completes. |
|
|
|
''' |
|
|
|
|
|
|
|
def __init__(self, name, brdclass, options): |
|
|
|
self.name = name |
|
|
|
self.brdclass = brdclass |
|
|
@@ -1641,7 +1645,6 @@ class TestAttrs(unittest.IsolatedAsyncioTestCase): |
|
|
|
|
|
|
|
# that the expiration is no longer there |
|
|
|
self.assertIsNone(to._exp) |
|
|
|
print('z') |
|
|
|
|
|
|
|
# and the timeout passes |
|
|
|
evt = asyncio.Event() |
|
|
@@ -1649,33 +1652,26 @@ class TestAttrs(unittest.IsolatedAsyncioTestCase): |
|
|
|
loop.call_at(exp + epsilon, evt.set) |
|
|
|
await evt.wait() |
|
|
|
|
|
|
|
print('a') |
|
|
|
# that when reserved/activated |
|
|
|
async with brd.lock: |
|
|
|
await brd.reserve() |
|
|
|
await brd.activate() |
|
|
|
|
|
|
|
print('b') |
|
|
|
# but the board is locked for some reason |
|
|
|
await brd.lock.acquire() |
|
|
|
|
|
|
|
print('c') |
|
|
|
# and the callback is called |
|
|
|
await asyncio.sleep(.02) |
|
|
|
|
|
|
|
print('d') |
|
|
|
# that the task has been scheduled |
|
|
|
self.assertIsNotNone(to._task) |
|
|
|
|
|
|
|
print('e') |
|
|
|
# that it can be deactivated |
|
|
|
await brd.deactivate() |
|
|
|
|
|
|
|
print('f') |
|
|
|
# and when the board lock is released |
|
|
|
brd.lock.release() |
|
|
|
|
|
|
|
print('g') |
|
|
|
# that the board was not released |
|
|
|
self.assertTrue(brd.reserved) |
|
|
|
|