def test_job_create_singlenode(self): """ Test the creation of a LavaTestJob within the dispatcher to identify issues before the job has started to run. """ factory = DispatcherFactory() target = factory.create_qemu_target(self.name, {}) self.assertEqual(target.config.hostname, self.name) json_str = factory.singlenode_jobdata() self.assertNotEqual(json_str, None) jobdata = json.loads(json_str) self.assertEqual(jobdata['health_check'], False) validate_job_data(jobdata) # single node self.assertNotIn('target_group', jobdata) self.assertNotIn('is_vmhost', jobdata) job = LavaTestJob(json_str, sys.stderr, get_config(), None) self.assertEqual(job.target, target.config.hostname) self.assertIsNotNone(get_all_cmds()) # FIXME: would be useful to not have the metadata population only accessible via LavaTestJob.run() job.run() self.assertEqual(job.context.test_data.metadata['target'], self.name) self.assertEqual(job.context.test_data.metadata['target.hostname'], self.name) self.assertNotIn('is_vmhost', job.context.test_data.metadata) self.assertNotIn('host_ip', job.context.test_data.metadata) self.assertNotIn('target_group', job.context.test_data.metadata) self.assertNotIn('vm_group', job.context.test_data.metadata)
def run_legacy_job(job_data, oob_file, config, output_dir, validate): if os.getuid() != 0: logging.error("lava dispatch has to be run as root") exit(1) json_job_data = json.dumps(job_data) job = LavaTestJob(json_job_data, oob_file, config, output_dir) # FIXME Return status if validate: try: validate_job_data(job.job_data) except ValidationError as e: print(e) else: job.run()
def run_legacy_job(job_data, oob_file, config, output_dir, validate): if os.getuid() != 0: logging.error("lava dispatch has to be run as root") exit(1) json_job_data = json.dumps(job_data) job = LavaTestJob(json_job_data, oob_file, config, output_dir) # FIXME Return status if validate: try: validate_job_data(job.job_data) except ValidationError as e: print e else: job.run()
def test_job_create_vmgroup(self): factory = DispatcherFactory() vmhost = factory.create_qemu_target(self.host, {}) self.assertEqual(vmhost.config.hostname, self.host) json_str = factory.multinode_jobdata(2) self.assertNotEqual(json_str, None) jobdata = json.loads(json_str) self.assertEqual(jobdata['health_check'], False) validate_job_data(jobdata) self.assertIn('target_group', jobdata) self.assertNotIn('is_vmhost', jobdata) json_str = factory.vmhost_jobdata(jobdata['target_group']) self.assertNotEqual(json_str, None) jobdata = json.loads(json_str) self.assertEqual(jobdata['health_check'], False) validate_job_data(jobdata) self.assertIn('target_group', jobdata) self.assertIn('is_vmhost', jobdata) self.assertTrue(jobdata['is_vmhost']) vmguest = factory.create_vm_target(self.vm_name, {}) self.assertEqual(vmguest.config.hostname, self.vm_name) json_str = factory.vmguest_jobdata(jobdata['target_group']) self.assertNotEqual(json_str, None) jobdata = json.loads(json_str) self.assertEqual(jobdata['health_check'], False) validate_job_data(jobdata) self.assertIn('target_group', jobdata) self.assertIn('is_vmhost', jobdata) self.assertFalse(jobdata['is_vmhost'])
def test_job_create_multinode(self): """ Test the creation of a MultiNode LavaTestJob within the dispatcher to identify issues before the job has started to run and without needing to talk to the lava-coordinator. This job is only one part of a MultiNode job - it cannot be expected to run as-is. """ factory = DispatcherFactory() for name in self.device_names: target = factory.create_qemu_target(name, {}) json_str = factory.multinode_jobdata(len(self.device_names)) self.assertEqual(target.config.hostname, name) self.assertNotEqual(json_str, None) jobdata = json.loads(json_str) self.assertEqual(jobdata['health_check'], False) validate_job_data(jobdata) # multi node self.assertIn('target_group', jobdata) self.assertNotIn('is_vmhost', jobdata) job = LavaTestJob(json_str, sys.stderr, get_config(), None) self.assertEqual(job.target, target.config.hostname)