def test_load_blocks_sync_gen(self): """Testing ExtensionManager.load blocks bumping sync generation number """ key = 'check-expired-test' manager1 = ExtensionManager(key) manager2 = ExtensionManager(key) for manager in (manager1, manager2): manager._entrypoint_iterator = Mock( return_value=[self.fake_entrypoint] ) manager1.load() manager1.enable_extension(self.extension_class.id) manager2.load() self.assertEqual(manager1._last_sync_gen, manager2._last_sync_gen) # Trigger a save whenever the extension initializes. self.extension_class.initialize = lambda ext: ext.settings.save() # Bump the generation number. extension = manager2.get_enabled_extension(self.extension_class.id) extension.settings.save() self.assertNotEqual(manager1._last_sync_gen, manager2._last_sync_gen) # Loading now should retain the new sync generation number, instead # of bumping it. manager1.load(full_reload=True) self.assertEqual(manager1._last_sync_gen, manager2._last_sync_gen)
def test_load_blocks_sync_gen(self): """Testing ExtensionManager.load blocks bumping sync generation number """ key = 'check-expired-test' manager1 = ExtensionManager(key) manager2 = ExtensionManager(key) for manager in (manager1, manager2): manager._entrypoint_iterator = Mock( return_value=[self.fake_entrypoint]) manager1.load() manager1.enable_extension(self.extension_class.id) manager2.load() self.assertEqual(manager1._last_sync_gen, manager2._last_sync_gen) # Trigger a save whenever the extension initializes. self.extension_class.initialize = lambda ext: ext.settings.save() # Bump the generation number. extension = manager2.get_enabled_extension(self.extension_class.id) extension.settings.save() self.assertNotEqual(manager1._last_sync_gen, manager2._last_sync_gen) # Loading now should retain the new sync generation number, instead # of bumping it. manager1.load(full_reload=True) self.assertEqual(manager1._last_sync_gen, manager2._last_sync_gen)
def test_extension_settings_sync(self): """Testing ExtensionManager extension settings synchronization cross-process """ key = 'extension-settings-sync' setting_key = 'foo' setting_val = 'abc123' manager1 = ExtensionManager(key) manager2 = ExtensionManager(key) for manager in (manager1, manager2): manager._entrypoint_iterator = Mock( return_value=[self.fake_entrypoint] ) manager1.load() extension1 = manager1.enable_extension(self.extension_class.id) manager2.load() self.assertFalse(manager1.is_expired()) self.assertFalse(manager2.is_expired()) extension2 = manager2.get_enabled_extension(self.extension_class.id) self.assertNotEqual(extension2, None) self.assertFalse(setting_key in extension1.settings) self.assertFalse(setting_key in extension2.settings) extension1.settings[setting_key] = setting_val extension1.settings.save() self.assertFalse(setting_key in extension2.settings) self.assertFalse(manager1.is_expired()) self.assertTrue(manager2.is_expired()) manager2.load(full_reload=True) extension2 = manager2.get_enabled_extension(self.extension_class.id) self.assertFalse(manager1.is_expired()) self.assertFalse(manager2.is_expired()) self.assertTrue(setting_key in extension1.settings) self.assertTrue(setting_key in extension2.settings) self.assertEqual(extension1.settings[setting_key], setting_val) self.assertEqual(extension2.settings[setting_key], setting_val)
def test_extension_settings_sync(self): """Testing ExtensionManager extension settings synchronization cross-process """ key = 'extension-settings-sync' setting_key = 'foo' setting_val = 'abc123' manager1 = ExtensionManager(key) manager2 = ExtensionManager(key) for manager in (manager1, manager2): manager._entrypoint_iterator = Mock( return_value=[self.fake_entrypoint]) manager1.load() extension1 = manager1.enable_extension(self.extension_class.id) manager2.load() self.assertFalse(manager1.is_expired()) self.assertFalse(manager2.is_expired()) extension2 = manager2.get_enabled_extension(self.extension_class.id) self.assertNotEqual(extension2, None) self.assertFalse(setting_key in extension1.settings) self.assertFalse(setting_key in extension2.settings) extension1.settings[setting_key] = setting_val extension1.settings.save() self.assertFalse(setting_key in extension2.settings) self.assertFalse(manager1.is_expired()) self.assertTrue(manager2.is_expired()) manager2.load(full_reload=True) extension2 = manager2.get_enabled_extension(self.extension_class.id) self.assertFalse(manager1.is_expired()) self.assertFalse(manager2.is_expired()) self.assertTrue(setting_key in extension1.settings) self.assertTrue(setting_key in extension2.settings) self.assertEqual(extension1.settings[setting_key], setting_val) self.assertEqual(extension2.settings[setting_key], setting_val)