예제 #1
0
    def test_load_strategy_module_with_init_exception(self):
        modules = ['module_init_exception', 'module_good']

        def _fake_stevedore_extension_manager(*args, **kwargs):
            ret = lambda: None
            ret.names = lambda: modules
            return ret

        def _fake_stevedore_driver_manager(*args, **kwargs):
            if kwargs['name'] == 'module_init_exception':
                raise Exception('strategy module failed to initialize.')
            else:
                ret = lambda: None
                ret.driver = lambda: None
                ret.driver.__name__ = kwargs['name']
                ret.driver.get_strategy_name = lambda: kwargs['name']
                ret.driver.init = lambda: None
            return ret

        self.stub = self.stubs.Set(stevedore.extension, "ExtensionManager",
                                   _fake_stevedore_extension_manager)
        self.stub = self.stubs.Set(stevedore.driver, "DriverManager",
                                   _fake_stevedore_driver_manager)

        loaded_modules = location_strategy._load_strategies()
        self.assertEqual(1, len(loaded_modules))
        self.assertEqual('module_good', loaded_modules.keys()[0])
        # Skipped module #1, initialize failed one.
        self.assertEqual('module_good', loaded_modules['module_good'].__name__)
예제 #2
0
    def test_load_strategy_module_with_deduplicating(self):
        modules = ['module1', 'module2']

        def _fake_stevedore_extension_manager(*args, **kwargs):
            ret = lambda: None
            ret.names = lambda: modules
            return ret

        def _fake_stevedore_driver_manager(*args, **kwargs):
            ret = lambda: None
            ret.driver = lambda: None
            ret.driver.__name__ = kwargs['name']
            # Module 1 and 2 has a same strategy name
            ret.driver.get_strategy_name = lambda: 'module_name'
            ret.driver.init = lambda: None
            return ret

        self.stub = self.stubs.Set(stevedore.extension, "ExtensionManager",
                                   _fake_stevedore_extension_manager)
        self.stub = self.stubs.Set(stevedore.driver, "DriverManager",
                                   _fake_stevedore_driver_manager)

        loaded_modules = location_strategy._load_strategies()
        self.assertEqual(1, len(loaded_modules))
        self.assertEqual('module_name', loaded_modules.keys()[0])
        # Skipped module #2, duplicated one.
        self.assertEqual('module1', loaded_modules['module_name'].__name__)
예제 #3
0
 def test_load_strategy_modules(self):
     modules = location_strategy._load_strategies()
     # By default we have two built-in strategy modules.
     self.assertEqual(2, len(modules))
     self.assertEqual(set(['location_order', 'store_type']),
                      set(modules.keys()))
     self.assertEqual(location_strategy._available_strategies, modules)
예제 #4
0
    def test_load_strategy_module_with_init_exception(self):
        modules = ['module_init_exception', 'module_good']

        def _fake_stevedore_extension_manager(*args, **kwargs):
            ret = lambda: None
            ret.names = lambda: modules
            return ret

        def _fake_stevedore_driver_manager(*args, **kwargs):
            if kwargs['name'] == 'module_init_exception':
                raise Exception('strategy module failed to initialize.')
            else:
                ret = lambda: None
                ret.driver = lambda: None
                ret.driver.__name__ = kwargs['name']
                ret.driver.get_strategy_name = lambda: kwargs['name']
                ret.driver.init = lambda: None
            return ret

        self.stub = self.stubs.Set(stevedore.extension, "ExtensionManager",
                                   _fake_stevedore_extension_manager)
        self.stub = self.stubs.Set(stevedore.driver, "DriverManager",
                                   _fake_stevedore_driver_manager)

        loaded_modules = location_strategy._load_strategies()
        self.assertEqual(1, len(loaded_modules))
        self.assertEqual('module_good', loaded_modules.keys()[0])
        # Skipped module #1, initialize failed one.
        self.assertEqual('module_good', loaded_modules['module_good'].__name__)
예제 #5
0
    def test_load_strategy_module_with_deduplicating(self):
        modules = ['module1', 'module2']

        def _fake_stevedore_extension_manager(*args, **kwargs):
            ret = lambda: None
            ret.names = lambda: modules
            return ret

        def _fake_stevedore_driver_manager(*args, **kwargs):
            ret = lambda: None
            ret.driver = lambda: None
            ret.driver.__name__ = kwargs['name']
            # Module 1 and 2 has a same strategy name
            ret.driver.get_strategy_name = lambda: 'module_name'
            ret.driver.init = lambda: None
            return ret

        self.stub = self.stubs.Set(stevedore.extension, "ExtensionManager",
                                   _fake_stevedore_extension_manager)
        self.stub = self.stubs.Set(stevedore.driver, "DriverManager",
                                   _fake_stevedore_driver_manager)

        loaded_modules = location_strategy._load_strategies()
        self.assertEqual(1, len(loaded_modules))
        self.assertEqual('module_name', loaded_modules.keys()[0])
        # Skipped module #2, duplicated one.
        self.assertEqual('module1', loaded_modules['module_name'].__name__)
예제 #6
0
 def test_load_strategy_modules(self):
     modules = location_strategy._load_strategies()
     # By default we have two built-in strategy modules.
     self.assertEqual(2, len(modules))
     self.assertEqual(set(['location_order', 'store_type']),
                      set(modules.keys()))
     self.assertEqual(location_strategy._available_strategies, modules)