def test_lando_client_and_router(self): """ Test to verify that messages sent from LandoClient through rabbit make it to Lando """ queue_name = "lando" lando_client = LandoClient(self.config, queue_name) fake_lando = FakeLando() router = MessageRouter.make_lando_router(self.config, fake_lando, queue_name) fake_lando.router = router # Messages sent to lando from a user # Send message to fake_lando to start job 1 lando_client.start_job(job_id=1) # Send message to fake_lando to cancel job 2 lando_client.cancel_job(job_id=2) # Send message to fake_lando to restart job 33 lando_client.restart_job(job_id=33) # Send message to fake_lando that the worker VM has finished launching lando_client.worker_started("test") # Messages sent to lando from a lando_worker after receiving a message from lando stage_job_payload = StageJobPayload(credentials=None, job_details=FakeJobDetails(3), input_files=[], vm_instance_name='test') # Send message to fake_lando that some stage job is complete lando_client.job_step_complete(stage_job_payload) # Send message to fake_lando that some stage job had an error lando_client.job_step_error(stage_job_payload, "Oops1") run_job_payload = RunJobPayload(job_details=FakeJobDetails(4), workflow=FakeWorkflow(), vm_instance_name='test') # Send message to fake_lando that a job has been run lando_client.job_step_complete(run_job_payload) # Send message to fake_lando that a job failed while running lando_client.job_step_error(run_job_payload, "Oops2") store_job_output_payload = StoreJobOutputPayload(None, FakeJobDetails(5), vm_instance_name='test') # Send message to fake_lando that we finished storing output lando_client.job_step_store_output_complete(store_job_output_payload, output_project_info='project_id') # Send message to fake_lando that we had an error while storing output lando_client.job_step_error(store_job_output_payload, "Oops3") router.run() self.assertEqual(fake_lando.start_job_payload.job_id, 1) self.assertEqual(fake_lando.cancel_job_payload.job_id, 2) self.assertEqual(fake_lando.restart_job_payload.job_id, 33) self.assertEqual(fake_lando.stage_job_complete_payload.job_id, 3) self.assertEqual(fake_lando.stage_job_error_payload.message, "Oops1") self.assertEqual(fake_lando.run_job_complete_payload.job_id, 4) self.assertEqual(fake_lando.run_job_error_payload.message, "Oops2") self.assertEqual(fake_lando.store_job_output_complete_payload.job_id, 5) self.assertEqual(fake_lando.store_job_output_complete_payload.output_project_info, 'project_id') self.assertEqual(fake_lando.store_job_output_error_payload.message, "Oops3")
def _make_router(self): work_queue_config = self.config.work_queue_config return MessageRouter.make_lando_router(self.config, self, work_queue_config.listen_queue)