def test_match_devices_without_map(self): """ Without a map, there is no support for knowing which interfaces to put onto a VLAN, so these devices cannot be assigned to a VLAN testjob See http://localhost/static/docs/v2/vland.html#vland-and-interface-tags-in-lava """ devices = Device.objects.filter( status=Device.IDLE).order_by('is_public') self.factory.ensure_tag('usb-eth') self.factory.ensure_tag('sata') self.factory.bbb1.tags = Tag.objects.filter(name='usb-eth') self.factory.bbb1.save() self.factory.cubie1.tags = Tag.objects.filter(name='sata') self.factory.cubie1.save() device_dict = DeviceDictionary(hostname=self.factory.bbb1.hostname) self.assertIsNone(device_dict.to_dict()['parameters']) device_dict = DeviceDictionary(hostname=self.factory.cubie1.hostname) self.assertIsNone(device_dict.to_dict()['parameters']) user = self.factory.make_user() sample_job_file = os.path.join(os.path.dirname(__file__), 'sample_jobs', 'bbb-cubie-vlan-group.yaml') with open(sample_job_file, 'r') as test_support: data = yaml.load(test_support) vlan_job = TestJob.from_yaml_and_user(yaml.dump(data), user) assignments = {} for job in vlan_job: device = find_device_for_job(job, devices) self.assertIsNone(device) # no map defined self.assertFalse( match_vlan_interface(device, yaml.load(job.definition))) assignments[job.device_role] = device self.assertIsNone(assignments['client']) self.assertIsNone(assignments['server'])
def test_exclusivity(self): device = Device.objects.get(hostname="fakeqemu1") self.assertTrue(device.is_pipeline) self.assertFalse(device.is_exclusive) self.assertIsNotNone(DeviceDictionary.get(device.hostname)) device_dict = DeviceDictionary(hostname=device.hostname) device_dict.save() device_dict = DeviceDictionary.get(device.hostname) self.assertTrue(device.is_pipeline) self.assertFalse(device.is_exclusive) update = device_dict.to_dict() update.update({'exclusive': 'True'}) device_dict.parameters = update device_dict.save() self.assertTrue(device.is_pipeline) self.assertTrue(device.is_exclusive)
def test_exclusivity(self): device = Device.objects.get(hostname="fakeqemu1") self.assertTrue(device.is_pipeline) self.assertFalse(device.is_exclusive) self.assertIsNotNone(DeviceDictionary.get(device.hostname)) device_dict = DeviceDictionary(hostname=device.hostname) device_dict.save() device_dict = DeviceDictionary.get(device.hostname) self.assertTrue(device.is_pipeline) self.assertFalse(device.is_exclusive) update = device_dict.to_dict() update.update({'exclusive': 'True'}) device_dict.parameters = update device_dict.save() self.assertTrue(device.is_pipeline) self.assertTrue(device.is_exclusive)
def test_identify_context(self): hostname = "fakebbb" mustang_type = self.factory.make_device_type('beaglebone-black') # this sets a qemu device dictionary, so replace it self.factory.make_device(device_type=mustang_type, hostname=hostname) mustang = DeviceDictionary(hostname=hostname) mustang.parameters = { 'extends': 'beaglebone-black.jinja2', 'base_nfsroot_args': '10.16.56.2:/home/lava/debian/nfs/,tcp,hard,intr', 'console_device': 'ttyO0', # takes precedence over the job context as the same var name is used. } mustang.save() mustang_dict = mustang.to_dict() device = Device.objects.get(hostname="fakebbb") self.assertEqual('beaglebone-black', device.device_type.name) self.assertTrue(device.is_pipeline) context_overrides = map_context_overrides('base.jinja2', 'beaglebone-black.jinja2', system=False) job_ctx = { 'base_uboot_commands': 'dummy commands', 'usb_uuid': 'dummy usb uuid', 'console_device': 'ttyAMA0', 'usb_device_id': 1111111111111111 } device_config = device.load_device_configuration(job_ctx, system=False) # raw dict self.assertIsNotNone(device_config) devicetype_blocks = [] devicedict_blocks = [] allowed = [] for key, _ in job_ctx.items(): if key in context_overrides: if key is not 'extends' and key not in mustang_dict['parameters'].keys(): allowed.append(key) else: devicedict_blocks.append(key) else: devicetype_blocks.append(key) # only values set in job_ctx are checked self.assertEqual(set(allowed), {'usb_device_id', 'usb_uuid'}) self.assertEqual(set(devicedict_blocks), {'console_device'}) self.assertEqual(set(devicetype_blocks), {'base_uboot_commands'}) full_list = allowed_overrides(mustang_dict, system=False) for key in allowed: self.assertIn(key, full_list)