Build manager cleanup and more logging

This commit is contained in:
Joseph Schorr 2016-07-14 11:49:01 -04:00
parent 65bbdda545
commit 74b87fa813
3 changed files with 82 additions and 14 deletions

View file

@ -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()