Build manager cleanup and more logging
This commit is contained in:
parent
65bbdda545
commit
74b87fa813
3 changed files with 82 additions and 14 deletions
|
@ -8,7 +8,7 @@ from trollius import coroutine, get_event_loop, From, Future, Return
|
|||
from mock import Mock
|
||||
from threading import Event
|
||||
|
||||
from buildman.manager.executor import BuilderExecutor
|
||||
from buildman.manager.executor import BuilderExecutor, ExecutorException
|
||||
from buildman.manager.ephemeral import EphemeralBuilderManager, EXECUTORS
|
||||
|
||||
|
||||
|
@ -34,6 +34,13 @@ class TestExecutor(BuilderExecutor):
|
|||
raise Return(str(uuid.uuid4))
|
||||
|
||||
|
||||
|
||||
class BadExecutor(BuilderExecutor):
|
||||
@coroutine
|
||||
def start_builder(self, realm, token, build_uuid):
|
||||
raise ExecutorException('raised on purpose!')
|
||||
|
||||
|
||||
class TestEphemeral(unittest.TestCase):
|
||||
def __init__(self, *args, **kwargs):
|
||||
self.etcd_client_mock = None
|
||||
|
@ -264,6 +271,46 @@ class TestEphemeral(unittest.TestCase):
|
|||
self.manager.registered_executors[0].job_started = None
|
||||
self.manager.registered_executors[1].job_started = None
|
||||
|
||||
|
||||
@async_test
|
||||
def test_schedule_job_single_executor(self):
|
||||
EXECUTORS['test'] = TestExecutor
|
||||
|
||||
self.manager.initialize({
|
||||
'EXECUTOR': 'test',
|
||||
'EXECUTOR_CONFIG': {},
|
||||
})
|
||||
|
||||
build_job = self._create_build_job(namespace='something', retries=3)
|
||||
result = yield From(self.manager.schedule(build_job))
|
||||
self.assertTrue(result[0])
|
||||
|
||||
self.assertIsNotNone(self.manager.registered_executors[0].job_started)
|
||||
self.manager.registered_executors[0].job_started = None
|
||||
|
||||
|
||||
build_job = self._create_build_job(namespace='something', retries=0)
|
||||
result = yield From(self.manager.schedule(build_job))
|
||||
self.assertTrue(result[0])
|
||||
|
||||
self.assertIsNotNone(self.manager.registered_executors[0].job_started)
|
||||
self.manager.registered_executors[0].job_started = None
|
||||
|
||||
|
||||
@async_test
|
||||
def test_executor_exception(self):
|
||||
EXECUTORS['bad'] = BadExecutor
|
||||
|
||||
self.manager.initialize({
|
||||
'EXECUTOR': 'bad',
|
||||
'EXECUTOR_CONFIG': {},
|
||||
})
|
||||
|
||||
build_job = self._create_build_job(namespace='something', retries=3)
|
||||
result = yield From(self.manager.schedule(build_job))
|
||||
self.assertFalse(result[0])
|
||||
|
||||
|
||||
if __name__ == '__main__':
|
||||
unittest.main()
|
||||
|
||||
|
|
Reference in a new issue