def _find_substitution(self, query): max_distance = min(3, len(query) / 4) scenarios = scenario.Scenario.list_benchmark_scenarios() scenario_groups = list(set(s.split(".")[0] for s in scenarios)) scenario_methods = list(set(s.split(".")[1] for s in scenarios)) sla_info = [cls.get_name() for cls in sla.SLA.get_all()] deploy_engines = [cls.get_name() for cls in engine.Engine.get_all()] server_providers = [cls.get_name() for cls in provider.ProviderFactory.get_all()] candidates = scenarios + scenario_groups + scenario_methods + sla_info + deploy_engines + server_providers suggestions = [] # NOTE(msdubov): Incorrect query may either have typos or be truncated. for candidate in candidates: if utils.distance(query, candidate) <= max_distance or candidate.startswith(query): suggestions.append(candidate) return suggestions
def _find_substitution(self, query): max_distance = min(3, len(query) / 4) scenarios = [s.get_name() for s in scenario.Scenario.get_all()] sla_info = [cls.get_name() for cls in sla.SLA.get_all()] deploy_engines = [cls.get_name() for cls in engine.Engine.get_all()] server_providers = [cls.get_name() for cls in provider.ProviderFactory.get_all()] candidates = (scenarios + sla_info + deploy_engines + server_providers) suggestions = [] # NOTE(msdubov): Incorrect query may either have typos or be truncated. for candidate in candidates: if ((utils.distance(query, candidate) <= max_distance or query.lower() in candidate.lower())): suggestions.append(candidate) return suggestions
def _find_substitution(self, query): max_distance = min(3, len(query) / 4) scenarios = scenario_base.Scenario.list_benchmark_scenarios() scenario_groups = list(set(s.split(".")[0] for s in scenarios)) scenario_methods = list(set(s.split(".")[1] for s in scenarios)) sla_info = [cls.__name__ for cls in utils.itersubclasses(sla.SLA)] sla_info.extend([cls.OPTION_NAME for cls in utils.itersubclasses( sla.SLA)]) deploy_engines = [cls.__name__ for cls in utils.itersubclasses( deploy.EngineFactory)] server_providers = [cls.__name__ for cls in utils.itersubclasses( serverprovider.ProviderFactory)] candidates = (scenarios + scenario_groups + scenario_methods + sla_info + deploy_engines + server_providers) suggestions = [] # NOTE(msdubov): Incorrect query may either have typos or be truncated. for candidate in candidates: if ((utils.distance(query, candidate) <= max_distance or candidate.startswith(query))): suggestions.append(candidate) return suggestions
def test_distance_deletion(self): dist = utils.distance("abcde", "abc") self.assertEqual(2, dist)
def test_distance_insertion(self): dist = utils.distance("abcde", "ab__cde") self.assertEqual(2, dist)
def test_distance_replacement(self): dist = utils.distance("abcde", "__cde") self.assertEqual(2, dist)
def test_distance_equal_strings(self): dist = utils.distance("abcde", "abcde") self.assertEqual(0, dist)
def test_distance_empty_strings(self): dist = utils.distance("", "") self.assertEqual(0, dist)