Coverage for mlos_bench/mlos_bench/tests/config/optimizers/test_load_optimizer_config_examples.py: 100%

27 statements  

« prev     ^ index     » next       coverage.py v7.5.1, created at 2024-05-06 00:35 +0000

1# 

2# Copyright (c) Microsoft Corporation. 

3# Licensed under the MIT License. 

4# 

5""" 

6Tests for loading optimizer config examples. 

7""" 

8import logging 

9from typing import List 

10 

11import pytest 

12 

13from mlos_bench.tests.config import locate_config_examples 

14 

15from mlos_bench.config.schemas import ConfigSchema 

16from mlos_bench.services.config_persistence import ConfigPersistenceService 

17from mlos_bench.optimizers.base_optimizer import Optimizer 

18from mlos_bench.tunables.tunable_groups import TunableGroups 

19from mlos_bench.util import get_class_from_name 

20 

21 

22_LOG = logging.getLogger(__name__) 

23_LOG.setLevel(logging.DEBUG) 

24 

25 

26# Get the set of configs to test. 

27CONFIG_TYPE = "optimizers" 

28 

29 

30def filter_configs(configs_to_filter: List[str]) -> List[str]: 

31 """If necessary, filter out json files that aren't for the module we're testing.""" 

32 return configs_to_filter 

33 

34 

35configs = locate_config_examples(ConfigPersistenceService.BUILTIN_CONFIG_PATH, CONFIG_TYPE, filter_configs) 

36assert configs 

37 

38 

39@pytest.mark.parametrize("config_path", configs) 

40def test_load_optimizer_config_examples(config_loader_service: ConfigPersistenceService, config_path: str) -> None: 

41 """Tests loading a config example.""" 

42 config = config_loader_service.load_config(config_path, ConfigSchema.OPTIMIZER) 

43 assert isinstance(config, dict) 

44 cls = get_class_from_name(config["class"]) 

45 assert issubclass(cls, Optimizer) 

46 # Make an instance of the class based on the config. 

47 tunable_groups = TunableGroups() 

48 optimizer_inst = config_loader_service.build_optimizer( 

49 tunables=tunable_groups, 

50 config=config, 

51 service=config_loader_service, 

52 ) 

53 assert optimizer_inst is not None 

54 assert isinstance(optimizer_inst, cls)