def test_full(self): """ Test loading persistent and preconfigured setting when appropriate directories are empty. """ self.config.CONFIG_PATH = self.directory + "/configs/full/etc/" self.config.PERSISTENT_PATH = self.directory + "/configs/full/var/" mgr = SettingManager(self.config) mgr.load() # check LMI_StorageSetting class loaded OK self.assertTrue(mgr.classes.has_key("LMI_StorageSetting")) # check it has all instances settings = mgr.get_settings("LMI_StorageSetting") self.assertIn("LMI:StorageSetting:preconfigured1", settings.keys()) self.assertIn("LMI:StorageSetting:preconfigured2", settings.keys()) self.assertIn("LMI:StorageSetting:persistent1", settings.keys()) self.assertIn("LMI:StorageSetting:persistent2", settings.keys()) self.assertEqual(len(settings.keys()), 4) # check one preconfigured setting s1 = settings['LMI:StorageSetting:preconfigured1'] self.assertEqual(s1.id, "LMI:StorageSetting:preconfigured1") self.assertEqual(s1.type, Setting.TYPE_PRECONFIGURED) self.assertEqual(s1['first'], "1") self.assertEqual(s1['second'], "two") self.assertEqual(s1['third'], "3.0") # check one persistent setting s2 = settings['LMI:StorageSetting:persistent2'] self.assertEqual(s2.id, "LMI:StorageSetting:persistent2") self.assertEqual(s2.type, Setting.TYPE_PERSISTENT) self.assertEqual(s2['first'], "1000") self.assertEqual(s2['second'], "two thousand") self.assertEqual(s2['third'], "3000.0")
def test_save_load(self): """ Test saving a persistent settings and loading them back.""" # load the 'full' settings self.config.CONFIG_PATH = self.directory + "/configs/full/etc/" self.config.PERSISTENT_PATH = self.directory + "/configs/full/var/" mgr = SettingManager(self.config) mgr.load() # dirty hack to save it to different directory... self.config.PERSISTENT_PATH = self.directory + "/configs/save_load/var/" # add one transient setting s = Setting(Setting.TYPE_TRANSIENT, "LMI:StorageSetting:transient1") s['first'] = "111" s['second'] = "two two two" s['third'] = "333.0" mgr.set_setting("LMI_StorageSetting", s) # add one preconfigured setting (this should not happen in reality, # but let's test it). s = Setting(Setting.TYPE_PRECONFIGURED, "LMI:StorageSetting:preconfigured3") s['first'] = "1111" s['second'] = "two two two two" s['third'] = "3333.0" mgr.set_setting("LMI_StorageSetting", s) # add one persistent setting s = Setting(Setting.TYPE_PERSISTENT, "LMI:StorageSetting:persistent3") s['first'] = "11" s['second'] = "two two" s['third'] = "33.0" mgr.set_setting("LMI_StorageSetting", s) # the persistent setting should be saved # try to reload the cofig - it should remove the preconfigured one mgr.load() # check it has all instances and that the preconfigured is gone settings = mgr.get_settings("LMI_StorageSetting") self.assertIn("LMI:StorageSetting:preconfigured1", settings.keys()) self.assertIn("LMI:StorageSetting:preconfigured2", settings.keys()) self.assertIn("LMI:StorageSetting:persistent1", settings.keys()) self.assertIn("LMI:StorageSetting:persistent2", settings.keys()) self.assertIn("LMI:StorageSetting:persistent3", settings.keys()) self.assertIn("LMI:StorageSetting:transient1", settings.keys()) self.assertEqual(len(settings.keys()), 6) # check the transient is ok s1 = settings['LMI:StorageSetting:transient1'] self.assertEqual(s1.id, "LMI:StorageSetting:transient1") self.assertEqual(s1.type, Setting.TYPE_TRANSIENT) self.assertEqual(s1['first'], "111") self.assertEqual(s1['second'], "two two two") self.assertEqual(s1['third'], "333.0") # check the persistent is there s2 = settings['LMI:StorageSetting:persistent3'] self.assertEqual(s2.id, "LMI:StorageSetting:persistent3") self.assertEqual(s2.type, Setting.TYPE_PERSISTENT) self.assertEqual(s2['first'], "11") self.assertEqual(s2['second'], "two two") self.assertEqual(s2['third'], "33.0") # remove one persistent, it should be saved imediatelly mgr.delete_setting('LMI_StorageSetting', s2) # check it is really removed mgr = SettingManager(self.config) mgr.load() settings = mgr.get_settings("LMI_StorageSetting") self.assertNotIn("LMI:StorageSetting:persistent3", settings.keys()) # change one persistent, it should be saved imediatelly s3 = settings['LMI:StorageSetting:persistent2'] s3['first'] = "-1" s3['second'] = "minus one" s3['third'] = "-3.0" mgr.set_setting('LMI_StorageSetting', s3) # check it is really removed mgr = SettingManager(self.config) mgr.load() settings = mgr.get_settings("LMI_StorageSetting") s3 = settings['LMI:StorageSetting:persistent2'] self.assertEqual(s3.id, "LMI:StorageSetting:persistent2") self.assertEqual(s3.type, Setting.TYPE_PERSISTENT) self.assertEqual(s3['first'], "-1") self.assertEqual(s3['second'], "minus one") self.assertEqual(s3['third'], "-3.0")