Coverage for mlos_bench/mlos_bench/tests/config/optimizers/test_load_optimizer_config_examples.py: 100%
27 statements
« prev ^ index » next coverage.py v7.9.2, created at 2025-07-14 00:55 +0000
« prev ^ index » next coverage.py v7.9.2, created at 2025-07-14 00:55 +0000
1#
2# Copyright (c) Microsoft Corporation.
3# Licensed under the MIT License.
4#
5"""Tests for loading optimizer config examples."""
6import logging
8import pytest
10from mlos_bench.config.schemas import ConfigSchema
11from mlos_bench.optimizers.base_optimizer import Optimizer
12from mlos_bench.services.config_persistence import ConfigPersistenceService
13from mlos_bench.tests.config import BUILTIN_TEST_CONFIG_PATH, locate_config_examples
14from mlos_bench.tunables.tunable_groups import TunableGroups
15from mlos_bench.util import get_class_from_name
17_LOG = logging.getLogger(__name__)
18_LOG.setLevel(logging.DEBUG)
21# Get the set of configs to test.
22CONFIG_TYPE = "optimizers"
25def filter_configs(configs_to_filter: list[str]) -> list[str]:
26 """If necessary, filter out json files that aren't for the module we're testing."""
27 return configs_to_filter
30configs = locate_config_examples(
31 ConfigPersistenceService.BUILTIN_CONFIG_PATH,
32 CONFIG_TYPE,
33 filter_configs,
34)
35assert configs
37test_configs = locate_config_examples(
38 BUILTIN_TEST_CONFIG_PATH,
39 CONFIG_TYPE,
40 filter_configs,
41)
42# assert test_configs
43configs.extend(test_configs)
46@pytest.mark.parametrize("config_path", configs)
47def test_load_optimizer_config_examples(
48 config_loader_service: ConfigPersistenceService,
49 config_path: str,
50) -> None:
51 """Tests loading a config example."""
52 config = config_loader_service.load_config(config_path, ConfigSchema.OPTIMIZER)
53 assert isinstance(config, dict)
54 cls = get_class_from_name(config["class"])
55 assert issubclass(cls, Optimizer)
56 # Make an instance of the class based on the config.
57 tunable_groups = TunableGroups()
58 optimizer_inst = config_loader_service.build_optimizer(
59 tunables=tunable_groups,
60 config=config,
61 service=config_loader_service,
62 )
63 assert optimizer_inst is not None
64 assert isinstance(optimizer_inst, cls)