From 03fa8a0acde4434fcdec7a252fba01e8d481d5d1 Mon Sep 17 00:00:00 2001 From: yashghatol Date: Thu, 11 Jun 2026 19:10:26 +0000 Subject: [PATCH] test: Move universal offline/online/materialization tests to universal/ directory Relocates cross-backend parameterized tests from integration/ into the 4-tier folder structure proposed in #6048. Moves: - integration/offline_store/ (10 files) -> universal/offline_store/ - integration/online_store/test_universal_{e2e,online,online_types}.py + test_push_features_to_online_store.py -> universal/online_store/ - integration/online_store/test_hybrid_online_store.py -> unit/ (uses unittest.mock only, no real services) - integration/online_store/test_remote_online_store.py -> integration/permissions/auth/ (auth-scoped, not universal) - integration/materialization/test_universal_materialization.py -> universal/materialization/ Also updates stale path references in: - Makefile (4 paths: cassandra, milvus, qdrant targets) - docs/how-to-guides/adding-or-reusing-tests.md - sdk/python/tests/README.md Closes #6051 Signed-off-by: yashghatol --- Makefile | 8 ++++---- docs/how-to-guides/adding-or-reusing-tests.md | 2 +- sdk/python/tests/README.md | 2 +- .../.gitkeep => integration/auth/__init__.py} | 0 .../{online_store => auth}/test_remote_online_store.py | 0 .../online_store => unit}/test_hybrid_online_store.py | 0 .../.gitkeep => materialization/__init__.py} | 0 .../materialization/test_universal_materialization.py | 0 sdk/python/tests/universal/offline_store/__init__.py | 0 .../offline_store/test_dqm_validation.py | 0 .../offline_store/test_feature_logging.py | 0 .../offline_store/test_non_entity_mode.py | 0 .../offline_store/test_offline_write.py | 0 .../offline_store/test_persist.py | 0 .../offline_store/test_push_features_to_offline_store.py | 0 .../offline_store/test_universal_historical_retrieval.py | 0 .../offline_store/test_universal_materialization.py | 0 .../offline_store/test_universal_types.py | 0 sdk/python/tests/universal/online_store/__init__.py | 0 .../online_store/test_push_features_to_online_store.py | 0 .../online_store/test_universal_e2e.py | 0 .../online_store/test_universal_online.py | 0 .../online_store/test_universal_online_types.py | 0 23 files changed, 6 insertions(+), 6 deletions(-) rename sdk/python/tests/{universal/offline_store/.gitkeep => integration/auth/__init__.py} (100%) rename sdk/python/tests/integration/{online_store => auth}/test_remote_online_store.py (100%) rename sdk/python/tests/{integration/online_store => unit}/test_hybrid_online_store.py (100%) rename sdk/python/tests/universal/{online_store/.gitkeep => materialization/__init__.py} (100%) rename sdk/python/tests/{integration => universal}/materialization/test_universal_materialization.py (100%) create mode 100644 sdk/python/tests/universal/offline_store/__init__.py rename sdk/python/tests/{integration => universal}/offline_store/test_dqm_validation.py (100%) rename sdk/python/tests/{integration => universal}/offline_store/test_feature_logging.py (100%) rename sdk/python/tests/{integration => universal}/offline_store/test_non_entity_mode.py (100%) rename sdk/python/tests/{integration => universal}/offline_store/test_offline_write.py (100%) rename sdk/python/tests/{integration => universal}/offline_store/test_persist.py (100%) rename sdk/python/tests/{integration => universal}/offline_store/test_push_features_to_offline_store.py (100%) rename sdk/python/tests/{integration => universal}/offline_store/test_universal_historical_retrieval.py (100%) rename sdk/python/tests/{integration => universal}/offline_store/test_universal_materialization.py (100%) rename sdk/python/tests/{integration => universal}/offline_store/test_universal_types.py (100%) create mode 100644 sdk/python/tests/universal/online_store/__init__.py rename sdk/python/tests/{integration => universal}/online_store/test_push_features_to_online_store.py (100%) rename sdk/python/tests/{integration => universal}/online_store/test_universal_e2e.py (100%) rename sdk/python/tests/{integration => universal}/online_store/test_universal_online.py (100%) rename sdk/python/tests/{integration => universal}/online_store/test_universal_online_types.py (100%) diff --git a/Makefile b/Makefile index 42cdac3dc25..c8d3f1f93a8 100644 --- a/Makefile +++ b/Makefile @@ -484,8 +484,8 @@ test-python-universal-cassandra: ## Run Python Cassandra integration tests FULL_REPO_CONFIGS_MODULE=sdk.python.feast.infra.online_stores.cassandra_online_store.cassandra_repo_configuration \ PYTEST_PLUGINS=sdk.python.tests.universal.feature_repos.universal.online_store.cassandra \ python -m pytest -x --integration \ - sdk/python/tests/integration/offline_store/test_feature_logging.py \ - --ignore=sdk/python/tests/integration/offline_store/test_validation.py \ + sdk/python/tests/universal/offline_store/test_feature_logging.py \ + --ignore=sdk/python/tests/universal/offline_store/test_dqm_validation.py \ -k "not test_snowflake and \ not test_spark_materialization_consistency and \ not test_universal_materialization" @@ -574,7 +574,7 @@ test-python-universal-milvus-online: ## Run Python Milvus online store integrati PYTEST_PLUGINS=sdk.python.tests.universal.feature_repos.universal.online_store.milvus \ python -m pytest -n 8 --integration \ -k "test_retrieve_online_milvus_documents" \ - sdk/python/tests --ignore=sdk/python/tests/integration/offline_store/test_dqm_validation.py + sdk/python/tests --ignore=sdk/python/tests/universal/offline_store/test_dqm_validation.py test-python-universal-singlestore-online: ## Run Python Singlestore online store integration tests PYTHONPATH='.' \ @@ -594,7 +594,7 @@ test-python-universal-qdrant-online: ## Run Python Qdrant online store integrati PYTEST_PLUGINS=sdk.python.tests.universal.feature_repos.universal.online_store.qdrant \ python -m pytest -n 8 --integration \ -k "test_retrieve_online_documents" \ - sdk/python/tests/integration/online_store/test_universal_online.py + sdk/python/tests/universal/online_store/test_universal_online.py # To use Couchbase as an offline store, you need to create an Couchbase Capella Columnar cluster on cloud.couchbase.com. # Modify environment variables COUCHBASE_COLUMNAR_CONNECTION_STRING, COUCHBASE_COLUMNAR_USER, and COUCHBASE_COLUMNAR_PASSWORD diff --git a/docs/how-to-guides/adding-or-reusing-tests.md b/docs/how-to-guides/adding-or-reusing-tests.md index b7c01a04b02..21b7a9705ab 100644 --- a/docs/how-to-guides/adding-or-reusing-tests.md +++ b/docs/how-to-guides/adding-or-reusing-tests.md @@ -158,7 +158,7 @@ Docstring tests are primarily smoke tests to make sure imports and setup functio Let's look at a sample test using the universal repo: {% tabs %} -{% tab code="sdk/python/tests/integration/offline_store/test_universal_historical_retrieval.py" %} +{% tab code="sdk/python/tests/universal/offline_store/test_universal_historical_retrieval.py" %} ```python @pytest.mark.integration @pytest.mark.universal_offline_stores diff --git a/sdk/python/tests/README.md b/sdk/python/tests/README.md index 418e2131928..c7723a3a9e5 100644 --- a/sdk/python/tests/README.md +++ b/sdk/python/tests/README.md @@ -158,7 +158,7 @@ Docstring tests are primarily smoke tests to make sure imports and setup functio Let's look at a sample test using the universal repo: {% tabs %} -{% tab code="sdk/python/tests/integration/offline_store/test_universal_historical_retrieval.py" %} +{% tab code="sdk/python/tests/universal/offline_store/test_universal_historical_retrieval.py" %} ```python @pytest.mark.integration @pytest.mark.universal_offline_stores diff --git a/sdk/python/tests/universal/offline_store/.gitkeep b/sdk/python/tests/integration/auth/__init__.py similarity index 100% rename from sdk/python/tests/universal/offline_store/.gitkeep rename to sdk/python/tests/integration/auth/__init__.py diff --git a/sdk/python/tests/integration/online_store/test_remote_online_store.py b/sdk/python/tests/integration/auth/test_remote_online_store.py similarity index 100% rename from sdk/python/tests/integration/online_store/test_remote_online_store.py rename to sdk/python/tests/integration/auth/test_remote_online_store.py diff --git a/sdk/python/tests/integration/online_store/test_hybrid_online_store.py b/sdk/python/tests/unit/test_hybrid_online_store.py similarity index 100% rename from sdk/python/tests/integration/online_store/test_hybrid_online_store.py rename to sdk/python/tests/unit/test_hybrid_online_store.py diff --git a/sdk/python/tests/universal/online_store/.gitkeep b/sdk/python/tests/universal/materialization/__init__.py similarity index 100% rename from sdk/python/tests/universal/online_store/.gitkeep rename to sdk/python/tests/universal/materialization/__init__.py diff --git a/sdk/python/tests/integration/materialization/test_universal_materialization.py b/sdk/python/tests/universal/materialization/test_universal_materialization.py similarity index 100% rename from sdk/python/tests/integration/materialization/test_universal_materialization.py rename to sdk/python/tests/universal/materialization/test_universal_materialization.py diff --git a/sdk/python/tests/universal/offline_store/__init__.py b/sdk/python/tests/universal/offline_store/__init__.py new file mode 100644 index 00000000000..e69de29bb2d diff --git a/sdk/python/tests/integration/offline_store/test_dqm_validation.py b/sdk/python/tests/universal/offline_store/test_dqm_validation.py similarity index 100% rename from sdk/python/tests/integration/offline_store/test_dqm_validation.py rename to sdk/python/tests/universal/offline_store/test_dqm_validation.py diff --git a/sdk/python/tests/integration/offline_store/test_feature_logging.py b/sdk/python/tests/universal/offline_store/test_feature_logging.py similarity index 100% rename from sdk/python/tests/integration/offline_store/test_feature_logging.py rename to sdk/python/tests/universal/offline_store/test_feature_logging.py diff --git a/sdk/python/tests/integration/offline_store/test_non_entity_mode.py b/sdk/python/tests/universal/offline_store/test_non_entity_mode.py similarity index 100% rename from sdk/python/tests/integration/offline_store/test_non_entity_mode.py rename to sdk/python/tests/universal/offline_store/test_non_entity_mode.py diff --git a/sdk/python/tests/integration/offline_store/test_offline_write.py b/sdk/python/tests/universal/offline_store/test_offline_write.py similarity index 100% rename from sdk/python/tests/integration/offline_store/test_offline_write.py rename to sdk/python/tests/universal/offline_store/test_offline_write.py diff --git a/sdk/python/tests/integration/offline_store/test_persist.py b/sdk/python/tests/universal/offline_store/test_persist.py similarity index 100% rename from sdk/python/tests/integration/offline_store/test_persist.py rename to sdk/python/tests/universal/offline_store/test_persist.py diff --git a/sdk/python/tests/integration/offline_store/test_push_features_to_offline_store.py b/sdk/python/tests/universal/offline_store/test_push_features_to_offline_store.py similarity index 100% rename from sdk/python/tests/integration/offline_store/test_push_features_to_offline_store.py rename to sdk/python/tests/universal/offline_store/test_push_features_to_offline_store.py diff --git a/sdk/python/tests/integration/offline_store/test_universal_historical_retrieval.py b/sdk/python/tests/universal/offline_store/test_universal_historical_retrieval.py similarity index 100% rename from sdk/python/tests/integration/offline_store/test_universal_historical_retrieval.py rename to sdk/python/tests/universal/offline_store/test_universal_historical_retrieval.py diff --git a/sdk/python/tests/integration/offline_store/test_universal_materialization.py b/sdk/python/tests/universal/offline_store/test_universal_materialization.py similarity index 100% rename from sdk/python/tests/integration/offline_store/test_universal_materialization.py rename to sdk/python/tests/universal/offline_store/test_universal_materialization.py diff --git a/sdk/python/tests/integration/offline_store/test_universal_types.py b/sdk/python/tests/universal/offline_store/test_universal_types.py similarity index 100% rename from sdk/python/tests/integration/offline_store/test_universal_types.py rename to sdk/python/tests/universal/offline_store/test_universal_types.py diff --git a/sdk/python/tests/universal/online_store/__init__.py b/sdk/python/tests/universal/online_store/__init__.py new file mode 100644 index 00000000000..e69de29bb2d diff --git a/sdk/python/tests/integration/online_store/test_push_features_to_online_store.py b/sdk/python/tests/universal/online_store/test_push_features_to_online_store.py similarity index 100% rename from sdk/python/tests/integration/online_store/test_push_features_to_online_store.py rename to sdk/python/tests/universal/online_store/test_push_features_to_online_store.py diff --git a/sdk/python/tests/integration/online_store/test_universal_e2e.py b/sdk/python/tests/universal/online_store/test_universal_e2e.py similarity index 100% rename from sdk/python/tests/integration/online_store/test_universal_e2e.py rename to sdk/python/tests/universal/online_store/test_universal_e2e.py diff --git a/sdk/python/tests/integration/online_store/test_universal_online.py b/sdk/python/tests/universal/online_store/test_universal_online.py similarity index 100% rename from sdk/python/tests/integration/online_store/test_universal_online.py rename to sdk/python/tests/universal/online_store/test_universal_online.py diff --git a/sdk/python/tests/integration/online_store/test_universal_online_types.py b/sdk/python/tests/universal/online_store/test_universal_online_types.py similarity index 100% rename from sdk/python/tests/integration/online_store/test_universal_online_types.py rename to sdk/python/tests/universal/online_store/test_universal_online_types.py