Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
18 changes: 18 additions & 0 deletions tests/model_registry/model_catalog/search/conftest.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
from typing import Any

import pytest

from tests.model_registry.model_catalog.utils import get_models_from_catalog_api


@pytest.fixture(scope="class")
def embedding_models_response(
model_catalog_rest_url: list[str],
model_registry_rest_headers: dict[str, str],
) -> dict[str, Any]:
"""Fetch models filtered by tasks='text-embedding' via filterQuery"""
return get_models_from_catalog_api(
model_catalog_rest_url=model_catalog_rest_url,
model_registry_rest_headers=model_registry_rest_headers,
additional_params="&filterQuery=tasks='text-embedding'",
)
49 changes: 49 additions & 0 deletions tests/model_registry/model_catalog/search/test_model_search.py
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,7 @@
from simple_logger.logger import get_logger

from tests.model_registry.model_catalog.constants import (
OTHER_MODELS_CATALOG_ID,
REDHAT_AI_CATALOG_ID,
REDHAT_AI_CATALOG_NAME,
REDHAT_AI_VALIDATED_UNESCAPED_CATALOG_NAME,
Expand Down Expand Up @@ -438,3 +439,51 @@ def test_filter_query_advanced_model_search(
LOGGER.info(
f"Advanced {logic_type.upper()} filter validation completed for {len(models_from_filter_query)} models"
)


@pytest.mark.install
@pytest.mark.post_upgrade
class TestEmbeddingModelSearch:
@pytest.mark.dependency(name="test_filter_query_by_text_embedding_task")
def test_filter_query_by_text_embedding_task(
self: Self,
embedding_models_response: dict[str, Any],
):
"""
Validate filterQuery with tasks='text-embedding' returns models
"""
number_of_models = embedding_models_response.get("size", 0)
LOGGER.info(f"Found number of embedding models: {number_of_models}")
assert number_of_models > 0, "Expected at least one model with tasks='text-embedding'"

@pytest.mark.dependency(depends=["test_filter_query_by_text_embedding_task"])
def test_embedding_models_source_id(
self: Self,
embedding_models_response: dict[str, Any],
):
"""
Validate all embedding models belong to the Other Models source
"""
mismatched_models = [
f"{model['name']} (source_id={model['source_id']})"
for model in embedding_models_response.get("items", [])
if model["source_id"] != OTHER_MODELS_CATALOG_ID
]
assert not mismatched_models, (
f"Models with unexpected source_id (expected '{OTHER_MODELS_CATALOG_ID}'): {mismatched_models}"
)

@pytest.mark.dependency(depends=["test_filter_query_by_text_embedding_task"])
def test_embedding_models_have_text_embedding_task(
self: Self,
embedding_models_response: dict[str, Any],
):
"""
Validate all returned models have 'text-embedding' in their tasks
"""
models_missing_task = [
model["name"]
for model in embedding_models_response.get("items", [])
if "text-embedding" not in model.get("tasks", [])
]
assert not models_missing_task, f"Models missing 'text-embedding' task: {models_missing_task}"
Loading