| @@ -50,6 +50,7 @@ import orm | |||
| import os | |||
| import socket | |||
| import sqlite3 | |||
| import subprocess | |||
| import sys | |||
| import tempfile | |||
| import unittest | |||
| @@ -316,7 +317,8 @@ async def reserve_board(board_id_or_class, user: str = Depends(lookup_user), | |||
| # Initialize board | |||
| try: | |||
| sub = await asyncio.create_subprocess_exec( | |||
| settings.setup_script, 'reserve', brd.name, user) | |||
| settings.setup_script, 'reserve', brd.name, user, | |||
| stdout=subprocess.PIPE, stderr=subprocess.PIPE) | |||
| stdout, stderr = await sub.communicate() | |||
| if sub.returncode: | |||
| raise RuntimeError(sub.returncode, stderr) | |||
| @@ -360,11 +362,13 @@ async def release_board(board_id, user: str = Depends(lookup_user), | |||
| except orm.exceptions.NoMatch: | |||
| raise BITEError( | |||
| status_code=HTTP_400_BAD_REQUEST, | |||
| errobj=Error(error='Board not reserved.', board=Board.from_orm(brd)), | |||
| errobj=Error(error='Board not reserved.', | |||
| board=Board.from_orm(brd)), | |||
| ) | |||
| sub = await asyncio.create_subprocess_exec( | |||
| settings.setup_script, 'release', brd.name, user) | |||
| settings.setup_script, 'release', brd.name, user, | |||
| stdout=subprocess.PIPE, stderr=subprocess.PIPE) | |||
| stdout, stderr = await sub.communicate() | |||
| if sub.returncode: | |||
| raise RuntimeError(sub.returncode, stderr) | |||
| @@ -621,7 +625,8 @@ class TestBiteLab(unittest.IsolatedAsyncioTestCase): | |||
| self.assertEqual(res.json(), info) | |||
| # and that it called the start script | |||
| cse.assert_called_with(self.settings.setup_script, 'reserve', 'cora-1', 'foo') | |||
| cse.assert_called_with(self.settings.setup_script, 'reserve', | |||
| 'cora-1', 'foo', stdout=subprocess.PIPE, stderr=subprocess.PIPE) | |||
| # that when the setup script returns | |||
| self._wrap_subprocess_exec(cse, json.dumps(dict(ip='192.0.2.10'))) | |||
| @@ -644,7 +649,8 @@ class TestBiteLab(unittest.IsolatedAsyncioTestCase): | |||
| self.assertEqual(res.json(), brdinfo) | |||
| # and that it called the start script | |||
| cse.assert_called_with(self.settings.setup_script, 'reserve', 'cora-1', 'foo') | |||
| cse.assert_called_with(self.settings.setup_script, 'reserve', | |||
| 'cora-1', 'foo', stdout=subprocess.PIPE, stderr=subprocess.PIPE) | |||
| # that another user reserving the board | |||
| res = await self.client.post('/board/cora-1/reserve', | |||
| @@ -691,7 +697,8 @@ class TestBiteLab(unittest.IsolatedAsyncioTestCase): | |||
| self.assertEqual(res.json(), info) | |||
| # and that it called the release script | |||
| cse.assert_called_with(self.settings.setup_script, 'release', 'cora-1', 'foo') | |||
| cse.assert_called_with(self.settings.setup_script, 'release', | |||
| 'cora-1', 'foo', stdout=subprocess.PIPE, stderr=subprocess.PIPE) | |||
| # that it can be reserved by a different user | |||
| res = await self.client.post('/board/cora-1/reserve', | |||