def test_double_attached(self): worker = yield self.createWorker() yield worker.startService() conn = fakeprotocol.FakeConnection(worker) yield worker.attached(conn) conn = fakeprotocol.FakeConnection(worker) with self.assertRaisesRegex( AssertionError, "bot: fake_peer connecting, but we are already connected to: fake_peer" ): yield worker.attached(conn)
def test_attached_workerInfoUpdates(self): # put in stale info: self.master.db.insertTestData([ fakedb.Worker(name='bot', info={ 'admin': 'WrongAdmin', 'host': 'WrongHost', 'access_uri': 'WrongURI', 'version': 'WrongVersion' }) ]) worker = yield self.createWorker() yield worker.startService() conn = fakeprotocol.FakeConnection(worker.master, worker) conn.info = { 'admin': 'TheAdmin', 'host': 'TheHost', 'access_uri': 'TheURI', 'version': 'TheVersion', } yield worker.attached(conn) self.assertEqual(worker.worker_status.getAdmin(), 'TheAdmin') self.assertEqual(worker.worker_status.getHost(), 'TheHost') self.assertEqual(worker.worker_status.getAccessURI(), 'TheURI') self.assertEqual(worker.worker_status.getVersion(), 'TheVersion') # and the db is updated too: db_worker = yield self.master.db.workers.getWorker(name="bot") self.assertEqual(db_worker['workerinfo']['admin'], 'TheAdmin') self.assertEqual(db_worker['workerinfo']['host'], 'TheHost') self.assertEqual(db_worker['workerinfo']['access_uri'], 'TheURI') self.assertEqual(db_worker['workerinfo']['version'], 'TheVersion')
def test_attached_remoteGetWorkerInfo(self): worker = yield self.createWorker() yield worker.startService() ENVIRON = {} COMMANDS = {'cmd1': '1', 'cmd2': '1'} conn = fakeprotocol.FakeConnection(worker.master, worker) conn.info = { 'admin': 'TheAdmin', 'host': 'TheHost', 'access_uri': 'TheURI', 'environ': ENVIRON, 'basedir': 'TheBaseDir', 'system': 'TheWorkerSystem', 'version': 'version', 'worker_commands': COMMANDS, } yield worker.attached(conn) # check the values get set right self.assertEqual(worker.worker_status.getAdmin(), "TheAdmin") self.assertEqual(worker.worker_status.getHost(), "TheHost") self.assertEqual(worker.worker_status.getAccessURI(), "TheURI") self.assertEqual(worker.worker_environ, ENVIRON) self.assertEqual(worker.worker_basedir, 'TheBaseDir') self.assertEqual(worker.worker_system, 'TheWorkerSystem') self.assertEqual(worker.worker_commands, COMMANDS)
def test_attached_remoteGetWorkerInfo(self): worker = yield self.createWorker() yield worker.startService() ENVIRON = {} COMMANDS = {'cmd1': '1', 'cmd2': '1'} conn = fakeprotocol.FakeConnection(worker.master, worker) conn.info = { 'admin': 'TheAdmin', 'host': 'TheHost', 'access_uri': 'TheURI', 'environ': ENVIRON, 'basedir': 'TheBaseDir', 'system': 'TheWorkerSystem', 'version': 'TheVersion', 'worker_commands': COMMANDS, } yield worker.attached(conn) self.assertEqual(worker.info.asDict(), { 'version': ('TheVersion', 'Worker'), 'admin': ('TheAdmin', 'Worker'), 'host': ('TheHost', 'Worker'), 'access_uri': ('TheURI', 'Worker'), 'basedir': ('TheBaseDir', 'Worker'), 'system': ('TheWorkerSystem', 'Worker'), }) self.assertEqual(worker.worker_environ, ENVIRON) self.assertEqual(worker.worker_basedir, 'TheBaseDir') self.assertEqual(worker.worker_system, 'TheWorkerSystem') self.assertEqual(worker.worker_commands, COMMANDS)
def test_attached_workerInfoUpdates(self): # put in stale info: self.master.db.insertTestData( [ fakedb.Worker( name="bot", info={ "admin": "WrongAdmin", "host": "WrongHost", "access_uri": "WrongURI", "version": "WrongVersion", }, ) ] ) worker = self.createWorker() yield worker.startService() conn = fakeprotocol.FakeConnection(worker.master, worker) conn.info = {"admin": "TheAdmin", "host": "TheHost", "access_uri": "TheURI", "version": "TheVersion"} yield worker.attached(conn) self.assertEqual(worker.worker_status.getAdmin(), "TheAdmin") self.assertEqual(worker.worker_status.getHost(), "TheHost") self.assertEqual(worker.worker_status.getAccessURI(), "TheURI") self.assertEqual(worker.worker_status.getVersion(), "TheVersion") # and the db is updated too: db_worker = yield self.master.db.workers.getWorker(name="bot") self.assertEqual(db_worker["workerinfo"]["admin"], "TheAdmin") self.assertEqual(db_worker["workerinfo"]["host"], "TheHost") self.assertEqual(db_worker["workerinfo"]["access_uri"], "TheURI") self.assertEqual(db_worker["workerinfo"]["version"], "TheVersion")
def test_attached_remoteGetWorkerInfo(self): worker = self.createWorker() yield worker.startService() ENVIRON = {} COMMANDS = {"cmd1": "1", "cmd2": "1"} conn = fakeprotocol.FakeConnection(worker.master, worker) conn.info = { "admin": "TheAdmin", "host": "TheHost", "access_uri": "TheURI", "environ": ENVIRON, "basedir": "TheBaseDir", "system": "TheWorkerSystem", "version": "version", "slave_commands": COMMANDS, } yield worker.attached(conn) # check the values get set right self.assertEqual(worker.worker_status.getAdmin(), "TheAdmin") self.assertEqual(worker.worker_status.getHost(), "TheHost") self.assertEqual(worker.worker_status.getAccessURI(), "TheURI") self.assertEqual(worker.worker_environ, ENVIRON) self.assertEqual(worker.worker_basedir, "TheBaseDir") self.assertEqual(worker.worker_system, "TheWorkerSystem") self.assertEqual(worker.worker_commands, COMMANDS)
def test_attached_callsMaybeStartBuildsForWorker(self): worker = yield self.createWorker() yield worker.startService() yield worker.reconfigServiceWithSibling(worker) conn = fakeprotocol.FakeConnection(worker.master, worker) conn.info = {} yield worker.attached(conn) self.assertEqual(self.botmaster.buildsStartedForWorkers, ["bot"])