Coverage for mlos_bench/mlos_bench/tests/config/storage/test_load_storage_config_examples.py: 100%
24 statements
« prev ^ index » next coverage.py v7.6.10, created at 2025-01-21 01:50 +0000
« prev ^ index » next coverage.py v7.6.10, created at 2025-01-21 01:50 +0000
1#
2# Copyright (c) Microsoft Corporation.
3# Licensed under the MIT License.
4#
5"""Tests for loading storage config examples."""
6import logging
8import pytest
10from mlos_bench.config.schemas.config_schemas import ConfigSchema
11from mlos_bench.services.config_persistence import ConfigPersistenceService
12from mlos_bench.storage.base_storage import Storage
13from mlos_bench.tests.config import locate_config_examples
14from mlos_bench.util import get_class_from_name
16_LOG = logging.getLogger(__name__)
17_LOG.setLevel(logging.DEBUG)
20# Get the set of configs to test.
21CONFIG_TYPE = "storage"
24def filter_configs(configs_to_filter: list[str]) -> list[str]:
25 """If necessary, filter out json files that aren't for the module we're testing."""
26 return configs_to_filter
29configs = locate_config_examples(
30 ConfigPersistenceService.BUILTIN_CONFIG_PATH,
31 CONFIG_TYPE,
32 filter_configs,
33)
34assert configs
37@pytest.mark.parametrize("config_path", configs)
38def test_load_storage_config_examples(
39 config_loader_service: ConfigPersistenceService,
40 config_path: str,
41) -> None:
42 """Tests loading a config example."""
43 config = config_loader_service.load_config(config_path, ConfigSchema.STORAGE)
44 assert isinstance(config, dict)
45 # Skip schema loading that would require a database connection for this test.
46 config["config"]["lazy_schema_create"] = True
47 cls = get_class_from_name(config["class"])
48 assert issubclass(cls, Storage)
49 # Make an instance of the class based on the config.
50 storage_inst = config_loader_service.build_storage(
51 config=config,
52 service=config_loader_service,
53 )
54 assert storage_inst is not None
55 assert isinstance(storage_inst, cls)