Browse Source

start work on timeout, make sure board is locked/reserved during activate/deactivate

main
John-Mark Gurney 3 years ago
parent
commit
b68a5daa51
1 changed files with 20 additions and 2 deletions
  1. +20
    -2
      bitelab/__init__.py

+ 20
- 2
bitelab/__init__.py View File

@@ -103,6 +103,9 @@ async def log_event(tag, board=None, user=None, extra={}):


logging.info(json.dumps(info)) logging.info(json.dumps(info))


class TimeOut(DefROAttribute):
defattername = 'timeout'

class EtherIface(DefROAttribute): class EtherIface(DefROAttribute):
defattrname = 'eiface' defattrname = 'eiface'


@@ -172,10 +175,14 @@ class BoardImpl:
self.attrcache[i] = await self.attrmap[i].getvalue() self.attrcache[i] = await self.attrmap[i].getvalue()


async def activate(self): async def activate(self):
assert self.lock.locked() and self.reserved

for i in self.options: for i in self.options:
await i.activate(self) await i.activate(self)


async def deactivate(self): async def deactivate(self):
assert self.lock.locked() and self.reserved

for i in self.options: for i in self.options:
await i.deactivate(self) await i.deactivate(self)


@@ -1228,7 +1235,9 @@ class TestBoardImpl(unittest.IsolatedAsyncioTestCase):
opt = create_autospec(Attribute) opt = create_autospec(Attribute)
brd = BoardImpl('foo', 'bar', [ opt ]) brd = BoardImpl('foo', 'bar', [ opt ])


await brd.activate()
async with brd.lock:
await brd.reserve()
await brd.activate()


opt.activate.assert_called_with(brd) opt.activate.assert_called_with(brd)


@@ -1237,7 +1246,9 @@ class TestBoardImpl(unittest.IsolatedAsyncioTestCase):
opt = create_autospec(Attribute) opt = create_autospec(Attribute)
brd = BoardImpl('foo', 'bar', [ opt ]) brd = BoardImpl('foo', 'bar', [ opt ])


await brd.deactivate()
async with brd.lock:
await brd.reserve()
await brd.deactivate()


opt.deactivate.assert_called_with(brd) opt.deactivate.assert_called_with(brd)


@@ -1348,3 +1359,10 @@ class TestAttrs(unittest.IsolatedAsyncioTestCase):
wrap_subprocess_exec(cse, retcode=1) wrap_subprocess_exec(cse, retcode=1)
with self.assertRaises(RuntimeError): with self.assertRaises(RuntimeError):
await ei.activate(brd) await ei.activate(brd)

async def test_timeout(self):
# that a TimeOut can be created
to = TimeOut(.1)

# that a board w/ the to
brd = BoardImpl('foo', 'bar', [ to ])

Loading…
Cancel
Save