|
3 | 3 | from inference.core.managers.base import ModelManager |
4 | 4 | from inference.core.managers.decorators.base import ModelManagerDecorator |
5 | 5 | from inference.core.managers.decorators.fixed_size_cache import WithFixedSizeCache |
| 6 | +from inference.core.managers.decorators.locked_load import ( |
| 7 | + LockedLoadModelManagerDecorator, |
| 8 | +) |
6 | 9 | from inference.core.managers.model_load_collector import ( |
7 | 10 | RequestModelIds, |
8 | 11 | current_request_path, |
@@ -59,3 +62,26 @@ def test_fixed_size_cache_records_request_metadata_for_warm_model() -> None: |
59 | 62 | assert description.model_id == "sam3/sam3_interactive" |
60 | 63 | assert description.request_aliases == ["sam3/sam3_final"] |
61 | 64 | assert description.request_paths == ["/sam3/embed_image"] |
| 65 | + |
| 66 | + |
| 67 | +def test_nested_decorators_record_request_metadata_for_warm_model() -> None: |
| 68 | + base_manager = ModelManager(model_registry=MagicMock()) |
| 69 | + base_manager._models = {"some/1": MagicMock()} |
| 70 | + decorator = WithFixedSizeCache( |
| 71 | + LockedLoadModelManagerDecorator(base_manager), max_size=8 |
| 72 | + ) |
| 73 | + path_token = current_request_path.set("/infer/object_detection") |
| 74 | + ids = RequestModelIds() |
| 75 | + ids_token = request_model_ids.set(ids) |
| 76 | + |
| 77 | + try: |
| 78 | + decorator.add_model(model_id="some/1", api_key="key") |
| 79 | + finally: |
| 80 | + request_model_ids.reset(ids_token) |
| 81 | + current_request_path.reset(path_token) |
| 82 | + |
| 83 | + [description] = base_manager.describe_models() |
| 84 | + assert description.model_id == "some/1" |
| 85 | + assert description.request_aliases == [] |
| 86 | + assert description.request_paths == ["/infer/object_detection"] |
| 87 | + assert ids.get_ids() == {"some/1"} |
0 commit comments