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

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 

10 

11import pytest 

12 

13from mlos_bench.tests.config import locate_config_examples 

14 

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 

19 

20 

21_LOG = logging.getLogger(__name__) 

22_LOG.setLevel(logging.DEBUG) 

23 

24 

25# Get the set of configs to test. 

26CONFIG_TYPE = "storage" 

27 

28 

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 

32 

33 

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

35assert configs 

36 

37 

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)