Coverage for mlos_bench/mlos_bench/tests/config/storage/test_load_storage_config_examples.py: 100%
26 statements
« prev ^ index » next coverage.py v7.5.1, created at 2024-05-06 00:35 +0000
« 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 storage config examples.
7"""
8import logging
9from typing import List
11import pytest
13from mlos_bench.tests.config import locate_config_examples
15from mlos_bench.config.schemas.config_schemas import ConfigSchema
16from mlos_bench.services.config_persistence import ConfigPersistenceService
17from mlos_bench.storage.base_storage import Storage
18from mlos_bench.util import get_class_from_name
21_LOG = logging.getLogger(__name__)
22_LOG.setLevel(logging.DEBUG)
25# Get the set of configs to test.
26CONFIG_TYPE = "storage"
29def filter_configs(configs_to_filter: List[str]) -> List[str]:
30 """If necessary, filter out json files that aren't for the module we're testing."""
31 return configs_to_filter
34configs = locate_config_examples(ConfigPersistenceService.BUILTIN_CONFIG_PATH, CONFIG_TYPE, filter_configs)
35assert configs
38@pytest.mark.parametrize("config_path", configs)
39def test_load_storage_config_examples(config_loader_service: ConfigPersistenceService, config_path: str) -> None:
40 """Tests loading a config example."""
41 config = config_loader_service.load_config(config_path, ConfigSchema.STORAGE)
42 assert isinstance(config, dict)
43 # Skip schema loading that would require a database connection for this test.
44 config["config"]["lazy_schema_create"] = True
45 cls = get_class_from_name(config["class"])
46 assert issubclass(cls, Storage)
47 # Make an instance of the class based on the config.
48 storage_inst = config_loader_service.build_storage(
49 config=config,
50 service=config_loader_service,
51 )
52 assert storage_inst is not None
53 assert isinstance(storage_inst, cls)