def test_juno_vexpress_valid_template(self): name = "juno-r2" dt = DeviceType(name=name) dt.save() dt.refresh_from_db() device = Device(device_type=dt, hostname="juno-r2-01", health=Device.HEALTH_GOOD) device.save() device.refresh_from_db() self.assertIsNotNone( [d for d in Device.objects.filter(device_type=dt)]) for device_file in os.listdir(settings.DEVICE_TYPES_PATH): if device_file == "juno-r2.jinja2": self.fail( "Configuration error - %s.jinja2 should NOT exist in %s" % (name, settings.DEVICE_TYPES_PATH)) self.assertTrue(settings.DEVICES_PATH.startswith(self.basedir)) self.assertEqual("juno-r2-01", device.hostname) self.assertIsNotNone(device.load_configuration()) self.assertEqual( [device], [device for device in Device.objects.filter(device_type=dt)]) self.assertEqual("juno", device.get_extends()) self.assertFalse( bool(load_devicetype_template(device.device_type.name))) self.assertFalse(invalid_template(device.device_type))
def test_bbb_valid_template(self): name = "beaglebone-black" dt = DeviceType(name=name) dt.save() dt.refresh_from_db() device = Device(device_type=dt, hostname="bbb-01", health=Device.HEALTH_GOOD) device.save() device.refresh_from_db() self.assertIsNotNone( [d for d in Device.objects.filter(device_type=dt)]) self.assertTrue(settings.DEVICES_PATH.startswith(self.basedir)) found = False for device_file in os.listdir(settings.DEVICE_TYPES_PATH): if device_file == "%s.jinja2" % name: found = True break if not found: self.fail("Configuration error - %s.jinja2 should exist in %s" % (name, settings.DEVICE_TYPES_PATH)) self.assertIsNotNone([device in Device.objects.filter(device_type=dt)]) self.assertIsNotNone(device.load_configuration()) self.assertTrue(bool(load_devicetype_template( device.device_type.name))) self.assertFalse(invalid_template(device.device_type))
def test_unknown_invalid_template(self): name = "nowhere-never-skip" dt = DeviceType(name=name) dt.save() dt.refresh_from_db() device = Device(device_type=dt, hostname="test-01", health=Device.HEALTH_GOOD) device.save() device.refresh_from_db() self.assertIsNotNone([d for d in Device.objects.filter(device_type=dt)]) self.assertIsNone(device.load_configuration()) self.assertIsNotNone([device in Device.objects.filter(device_type=dt)]) self.assertFalse(bool(load_devicetype_template(device.device_type.name))) self.assertTrue(invalid_template(device.device_type))
def test_bbb_valid_template(self): name = "beaglebone-black" dt = DeviceType(name=name) dt.save() dt.refresh_from_db() device = Device(device_type=dt, hostname="bbb-01", health=Device.HEALTH_GOOD) device.save() device.refresh_from_db() self.assertIsNotNone([d for d in Device.objects.filter(device_type=dt)]) self.assertTrue(File("device-type").exists(f"{name}.jinja2")) self.assertIsNotNone([device in Device.objects.filter(device_type=dt)]) self.assertIsNotNone(device.load_configuration()) self.assertTrue(bool(load_devicetype_template(device.device_type.name))) self.assertFalse(invalid_template(device.device_type))
def test_active_device_types(self): name = "beaglebone-black" dt = DeviceType(name=name) dt.save() dt.refresh_from_db() device = Device(device_type=dt, hostname='bbb-01', health=Device.HEALTH_GOOD) device.save() device = Device(device_type=dt, hostname='bbb-02', health=Device.HEALTH_RETIRED) device.save() name = "juno-r2" dt = DeviceType(name=name) dt.save() dt.refresh_from_db() device = Device(device_type=dt, hostname='juno-r2-01', health=Device.HEALTH_RETIRED) device.save() name = "juno" dt = DeviceType(name=name) dt.display = False dt.save() dt.refresh_from_db() dt.refresh_from_db() device = Device(device_type=dt, hostname='juno-01', health=Device.HEALTH_UNKNOWN) device.save() name = "qemu" dt = DeviceType(name=name) dt.save() dt.refresh_from_db() device = Device(device_type=dt, hostname='qemu-01', health=Device.HEALTH_GOOD) device.save() self.assertEqual( {'bbb-01', 'bbb-02', 'juno-r2-01', 'qemu-01', 'juno-01'}, set(Device.objects.all().values_list('hostname', flat=True))) self.assertEqual({'beaglebone-black', 'juno', 'juno-r2', 'qemu'}, set(DeviceType.objects.values_list('name', flat=True))) # exclude juno-r2 because all devices of that device-type are retired. # exclude juno because the device_type is set to not be displayed. # include beaglebone-black because not all devices of that type are retired. # include qemu because none of the devices of that type are retired. self.assertEqual({'beaglebone-black', 'qemu'}, set(active_device_types().values_list('name', flat=True)))
def test_retired_invalid_template(self): name = "beaglebone-black" dt = DeviceType(name=name) dt.save() dt.refresh_from_db() device = Device(device_type=dt, hostname="bbb-01", health=Device.HEALTH_RETIRED) device.save() device.refresh_from_db() self.assertEqual( [], list( Device.objects.filter( Q(device_type=dt), ~Q(health=Device.HEALTH_RETIRED) ) ), ) self.assertIsNotNone([d for d in Device.objects.filter(device_type=dt)]) self.assertFalse(invalid_template(device.device_type))
def test_unknown_invalid_template(self): name = "nowhere-never-skip" dt = DeviceType(name=name) dt.save() dt.refresh_from_db() device = Device(device_type=dt, hostname='test-01', health=Device.HEALTH_GOOD) device.save() device.refresh_from_db() self.assertIsNotNone([d for d in Device.objects.filter(device_type=dt)]) self.assertTrue(Device.CONFIG_PATH.startswith(self.basedir)) found = False for device_file in os.listdir(self.types_dir): if device_file == '%s.jinja2' % name: self.fail("Configuration error - %s.jinja2 should NOT exist in %s" % (name, self.types_dir)) self.assertIsNone(device.load_configuration()) self.assertIsNotNone([device in Device.objects.filter(device_type=dt)]) self.assertFalse(bool(load_devicetype_template(device.device_type.name))) self.assertTrue(invalid_template(device.device_type))
def test_juno_vexpress_valid_template(self): name = "juno-r2" dt = DeviceType(name=name) dt.save() dt.refresh_from_db() device = Device(device_type=dt, hostname='juno-r2-01', health=Device.HEALTH_GOOD) device.save() device.refresh_from_db() self.assertIsNotNone([d for d in Device.objects.filter(device_type=dt)]) for device_file in os.listdir(self.types_dir): if device_file == 'juno-r2.jinja2': self.fail("Configuration error - %s.jinja2 should NOT exist in %s" % (name, self.types_dir)) self.assertTrue(Device.CONFIG_PATH.startswith(self.basedir)) self.assertEqual('juno-r2-01', device.hostname) self.assertIsNotNone(device.load_configuration()) self.assertEqual([device], [device for device in Device.objects.filter(device_type=dt)]) self.assertEqual('juno', device.get_extends()) self.assertFalse(bool(load_devicetype_template(device.device_type.name))) self.assertFalse(invalid_template(device.device_type))
def test_juno_vexpress_valid_template(self): name = "juno-r2" dt = DeviceType(name=name) dt.save() dt.refresh_from_db() device = Device( device_type=dt, hostname="juno-r2-01", health=Device.HEALTH_GOOD ) device.save() device.refresh_from_db() self.assertIsNotNone([d for d in Device.objects.filter(device_type=dt)]) self.assertFalse(File("device-type").exists("juno-r2.jinja2")) self.assertEqual("juno-r2-01", device.hostname) self.assertIsNotNone(device.load_configuration()) self.assertEqual( [device], [device for device in Device.objects.filter(device_type=dt)] ) self.assertEqual("juno", device.get_extends()) self.assertFalse(bool(load_devicetype_template(device.device_type.name))) self.assertFalse(invalid_template(device.device_type))
def test_unknown_invalid_template(self): name = "nowhere-never-skip" dt = DeviceType(name=name) dt.save() dt.refresh_from_db() device = Device(device_type=dt, hostname="test-01", health=Device.HEALTH_GOOD) device.save() device.refresh_from_db() self.assertIsNotNone( [d for d in Device.objects.filter(device_type=dt)]) self.assertTrue(Device.CONFIG_PATH.startswith(self.basedir)) found = False for device_file in os.listdir(self.types_dir): if device_file == "%s.jinja2" % name: self.fail( "Configuration error - %s.jinja2 should NOT exist in %s" % (name, self.types_dir)) self.assertIsNone(device.load_configuration()) self.assertIsNotNone([device in Device.objects.filter(device_type=dt)]) self.assertFalse( bool(load_devicetype_template(device.device_type.name))) self.assertTrue(invalid_template(device.device_type))