Skip to content

Commit c2beabb

Browse files
turazashvilitokoko
andauthored
test: Move feature_repos into universal test layout skeleton (feast-dev#6055)
* test: move feature_repos to universal test layout skeleton (feast-dev#6048) Signed-off-by: Nikoloz Turazashvili <turazashvili@gmail.com> * test: add universal/component test skeleton directories Signed-off-by: Nikoloz Turazashvili <turazashvili@gmail.com> * chore: regenerate pixi lockfile Signed-off-by: Nikoloz Turazashvili <turazashvili@gmail.com> --------- Signed-off-by: Nikoloz Turazashvili <turazashvili@gmail.com> Co-authored-by: Tornike Gurgenidze <togurgenidze@gmail.com>
1 parent 325e148 commit c2beabb

103 files changed

Lines changed: 237 additions & 395 deletions

File tree

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

.secrets.baseline

Lines changed: 15 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -1311,76 +1311,76 @@
13111311
"line_number": 1
13121312
}
13131313
],
1314-
"sdk/python/tests/integration/feature_repos/repo_configuration.py": [
1314+
"sdk/python/tests/universal/feature_repos/repo_configuration.py": [
13151315
{
13161316
"type": "Secret Keyword",
1317-
"filename": "sdk/python/tests/integration/feature_repos/repo_configuration.py",
1317+
"filename": "sdk/python/tests/universal/feature_repos/repo_configuration.py",
13181318
"hashed_secret": "d90e76ef629fb00c95f4e84fec29fbda111e2392",
13191319
"is_verified": false,
13201320
"line_number": 452
13211321
},
13221322
{
13231323
"type": "Secret Keyword",
1324-
"filename": "sdk/python/tests/integration/feature_repos/repo_configuration.py",
1324+
"filename": "sdk/python/tests/universal/feature_repos/repo_configuration.py",
13251325
"hashed_secret": "5baa61e4c9b93f3f0682250b6cf8331b7ee68fd8",
13261326
"is_verified": false,
13271327
"line_number": 454
13281328
}
13291329
],
1330-
"sdk/python/tests/integration/feature_repos/universal/data_sources/file.py": [
1330+
"sdk/python/tests/universal/feature_repos/universal/data_sources/file.py": [
13311331
{
13321332
"type": "Base64 High Entropy String",
1333-
"filename": "sdk/python/tests/integration/feature_repos/universal/data_sources/file.py",
1333+
"filename": "sdk/python/tests/universal/feature_repos/universal/data_sources/file.py",
13341334
"hashed_secret": "d70eab08607a4d05faa2d0d6647206599e9abc65",
13351335
"is_verified": false,
13361336
"line_number": 257
13371337
},
13381338
{
13391339
"type": "Secret Keyword",
1340-
"filename": "sdk/python/tests/integration/feature_repos/universal/data_sources/file.py",
1340+
"filename": "sdk/python/tests/universal/feature_repos/universal/data_sources/file.py",
13411341
"hashed_secret": "d70eab08607a4d05faa2d0d6647206599e9abc65",
13421342
"is_verified": false,
13431343
"line_number": 257
13441344
}
13451345
],
1346-
"sdk/python/tests/integration/feature_repos/universal/online_store/couchbase.py": [
1346+
"sdk/python/tests/universal/feature_repos/universal/online_store/couchbase.py": [
13471347
{
13481348
"type": "Secret Keyword",
1349-
"filename": "sdk/python/tests/integration/feature_repos/universal/online_store/couchbase.py",
1349+
"filename": "sdk/python/tests/universal/feature_repos/universal/online_store/couchbase.py",
13501350
"hashed_secret": "5baa61e4c9b93f3f0682250b6cf8331b7ee68fd8",
13511351
"is_verified": false,
13521352
"line_number": 29
13531353
}
13541354
],
1355-
"sdk/python/tests/integration/feature_repos/universal/online_store/mysql.py": [
1355+
"sdk/python/tests/universal/feature_repos/universal/online_store/mysql.py": [
13561356
{
13571357
"type": "Secret Keyword",
1358-
"filename": "sdk/python/tests/integration/feature_repos/universal/online_store/mysql.py",
1358+
"filename": "sdk/python/tests/universal/feature_repos/universal/online_store/mysql.py",
13591359
"hashed_secret": "a94a8fe5ccb19ba61c4c0873d391e987982fbbd3",
13601360
"is_verified": false,
13611361
"line_number": 27
13621362
}
13631363
],
1364-
"sdk/python/tests/integration/feature_repos/universal/online_store/postgres.py": [
1364+
"sdk/python/tests/universal/feature_repos/universal/online_store/postgres.py": [
13651365
{
13661366
"type": "Secret Keyword",
1367-
"filename": "sdk/python/tests/integration/feature_repos/universal/online_store/postgres.py",
1367+
"filename": "sdk/python/tests/universal/feature_repos/universal/online_store/postgres.py",
13681368
"hashed_secret": "95433727ea51026e1e0dc8deadaabd4a3baaaaf4",
13691369
"is_verified": false,
13701370
"line_number": 19
13711371
}
13721372
],
1373-
"sdk/python/tests/integration/feature_repos/universal/online_store/singlestore.py": [
1373+
"sdk/python/tests/universal/feature_repos/universal/online_store/singlestore.py": [
13741374
{
13751375
"type": "Base64 High Entropy String",
1376-
"filename": "sdk/python/tests/integration/feature_repos/universal/online_store/singlestore.py",
1376+
"filename": "sdk/python/tests/universal/feature_repos/universal/online_store/singlestore.py",
13771377
"hashed_secret": "6f7c6dea79de6f298be425ade30f5afbbb6f8047",
13781378
"is_verified": false,
13791379
"line_number": 24
13801380
},
13811381
{
13821382
"type": "Secret Keyword",
1383-
"filename": "sdk/python/tests/integration/feature_repos/universal/online_store/singlestore.py",
1383+
"filename": "sdk/python/tests/universal/feature_repos/universal/online_store/singlestore.py",
13841384
"hashed_secret": "a94a8fe5ccb19ba61c4c0873d391e987982fbbd3",
13851385
"is_verified": false,
13861386
"line_number": 37

CODEOWNERS

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,7 @@
2525
# BigQuery
2626
/sdk/python/feast/infra/offline_stores/bigquery.py @sudohainguyen
2727
/sdk/python/feast/infra/offline_stores/bigquery_source.py @sudohainguyen
28-
/sdk/python/tests/integration/feature_repos/universal/data_sources/bigquery.py @sudohainguyen
28+
/sdk/python/tests/universal/feature_repos/universal/data_sources/bigquery.py @sudohainguyen
2929

3030
# ==== Online Stores ====
3131

Makefile

Lines changed: 11 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -409,7 +409,7 @@ test-python-ray-integration: ## Run all Python Ray integration tests (offline st
409409
test-python-universal-postgres-online: ## Run Python Postgres integration tests
410410
PYTHONPATH='.' \
411411
FULL_REPO_CONFIGS_MODULE=sdk.python.feast.infra.online_stores.postgres_online_store.postgres_repo_configuration \
412-
PYTEST_PLUGINS=sdk.python.tests.integration.feature_repos.universal.online_store.postgres \
412+
PYTEST_PLUGINS=sdk.python.tests.universal.feature_repos.universal.online_store.postgres \
413413
python -m pytest -n 8 --integration \
414414
-k "not test_universal_cli and \
415415
not test_go_feature_server and \
@@ -428,7 +428,7 @@ test-python-universal-postgres-online: ## Run Python Postgres integration tests
428428
test-python-universal-pgvector-online: ## Run Python Postgres integration tests
429429
PYTHONPATH='.' \
430430
FULL_REPO_CONFIGS_MODULE=sdk.python.feast.infra.online_stores.postgres_online_store.pgvector_repo_configuration \
431-
PYTEST_PLUGINS=sdk.python.tests.integration.feature_repos.universal.online_store.postgres \
431+
PYTEST_PLUGINS=sdk.python.tests.universal.feature_repos.universal.online_store.postgres \
432432
python -m pytest -n 8 --integration \
433433
-k "not test_universal_cli and \
434434
not test_go_feature_server and \
@@ -450,7 +450,7 @@ test-python-universal-postgres-online: ## Run Python Postgres integration tests
450450
test-python-universal-mysql-online: ## Run Python MySQL integration tests
451451
PYTHONPATH='.' \
452452
FULL_REPO_CONFIGS_MODULE=sdk.python.feast.infra.online_stores.mysql_online_store.mysql_repo_configuration \
453-
PYTEST_PLUGINS=sdk.python.tests.integration.feature_repos.universal.online_store.mysql \
453+
PYTEST_PLUGINS=sdk.python.tests.universal.feature_repos.universal.online_store.mysql \
454454
python -m pytest -n 8 --integration \
455455
-k "not test_universal_cli and \
456456
not test_go_feature_server and \
@@ -469,7 +469,7 @@ test-python-universal-mysql-online: ## Run Python MySQL integration tests
469469
test-python-universal-cassandra: ## Run Python Cassandra integration tests
470470
PYTHONPATH='.' \
471471
FULL_REPO_CONFIGS_MODULE=sdk.python.feast.infra.online_stores.cassandra_online_store.cassandra_repo_configuration \
472-
PYTEST_PLUGINS=sdk.python.tests.integration.feature_repos.universal.online_store.cassandra \
472+
PYTEST_PLUGINS=sdk.python.tests.universal.feature_repos.universal.online_store.cassandra \
473473
python -m pytest -x --integration \
474474
sdk/python/tests/integration/offline_store/test_feature_logging.py \
475475
--ignore=sdk/python/tests/integration/offline_store/test_validation.py \
@@ -480,7 +480,7 @@ test-python-universal-cassandra: ## Run Python Cassandra integration tests
480480
test-python-universal-hazelcast: ## Run Python Hazelcast integration tests
481481
PYTHONPATH='.' \
482482
FULL_REPO_CONFIGS_MODULE=sdk.python.feast.infra.online_stores.hazelcast_online_store.hazelcast_repo_configuration \
483-
PYTEST_PLUGINS=sdk.python.tests.integration.feature_repos.universal.online_store.hazelcast \
483+
PYTEST_PLUGINS=sdk.python.tests.universal.feature_repos.universal.online_store.hazelcast \
484484
python -m pytest -n 8 --integration \
485485
-k "not test_universal_cli and \
486486
not test_go_feature_server and \
@@ -499,7 +499,7 @@ test-python-universal-hazelcast: ## Run Python Hazelcast integration tests
499499
test-python-universal-cassandra-no-cloud-providers: ## Run Python Cassandra integration tests
500500
PYTHONPATH='.' \
501501
FULL_REPO_CONFIGS_MODULE=sdk.python.feast.infra.online_stores.cassandra_online_store.cassandra_repo_configuration \
502-
PYTEST_PLUGINS=sdk.python.tests.integration.feature_repos.universal.online_store.cassandra \
502+
PYTEST_PLUGINS=sdk.python.tests.universal.feature_repos.universal.online_store.cassandra \
503503
python -m pytest -x --integration \
504504
-k "not test_lambda_materialization_consistency and \
505505
not test_apply_entity_integration and \
@@ -516,7 +516,7 @@ test-python-universal-cassandra-no-cloud-providers: ## Run Python Cassandra inte
516516
test-python-universal-elasticsearch-online: ## Run Python Elasticsearch online store integration tests
517517
PYTHONPATH='.' \
518518
FULL_REPO_CONFIGS_MODULE=sdk.python.feast.infra.online_stores.elasticsearch_online_store.elasticsearch_repo_configuration \
519-
PYTEST_PLUGINS=sdk.python.tests.integration.feature_repos.universal.online_store.elasticsearch \
519+
PYTEST_PLUGINS=sdk.python.tests.universal.feature_repos.universal.online_store.elasticsearch \
520520
python -m pytest -n 8 --integration \
521521
-k "not test_universal_cli and \
522522
not test_go_feature_server and \
@@ -535,15 +535,15 @@ test-python-universal-elasticsearch-online: ## Run Python Elasticsearch online s
535535
test-python-universal-milvus-online: ## Run Python Milvus online store integration tests
536536
PYTHONPATH='.' \
537537
FULL_REPO_CONFIGS_MODULE=sdk.python.feast.infra.online_stores.milvus_online_store.milvus_repo_configuration \
538-
PYTEST_PLUGINS=sdk.python.tests.integration.feature_repos.universal.online_store.milvus \
538+
PYTEST_PLUGINS=sdk.python.tests.universal.feature_repos.universal.online_store.milvus \
539539
python -m pytest -n 8 --integration \
540540
-k "test_retrieve_online_milvus_documents" \
541541
sdk/python/tests --ignore=sdk/python/tests/integration/offline_store/test_dqm_validation.py
542542

543543
test-python-universal-singlestore-online: ## Run Python Singlestore online store integration tests
544544
PYTHONPATH='.' \
545545
FULL_REPO_CONFIGS_MODULE=sdk.python.feast.infra.online_stores.singlestore_repo_configuration \
546-
PYTEST_PLUGINS=sdk.python.tests.integration.feature_repos.universal.online_store.singlestore \
546+
PYTEST_PLUGINS=sdk.python.tests.universal.feature_repos.universal.online_store.singlestore \
547547
python -m pytest -n 8 --integration \
548548
-k "not test_universal_cli and \
549549
not gcs_registry and \
@@ -554,7 +554,7 @@ test-python-universal-singlestore-online: ## Run Python Singlestore online store
554554
test-python-universal-qdrant-online: ## Run Python Qdrant online store integration tests
555555
PYTHONPATH='.' \
556556
FULL_REPO_CONFIGS_MODULE=sdk.python.feast.infra.online_stores.qdrant_online_store.qdrant_repo_configuration \
557-
PYTEST_PLUGINS=sdk.python.tests.integration.feature_repos.universal.online_store.qdrant \
557+
PYTEST_PLUGINS=sdk.python.tests.universal.feature_repos.universal.online_store.qdrant \
558558
python -m pytest -n 8 --integration \
559559
-k "test_retrieve_online_documents" \
560560
sdk/python/tests/integration/online_store/test_universal_online.py
@@ -589,7 +589,7 @@ test-python-universal-couchbase-offline: ## Run Python Couchbase offline store i
589589
test-python-universal-couchbase-online: ## Run Python Couchbase online store integration tests
590590
PYTHONPATH='.' \
591591
FULL_REPO_CONFIGS_MODULE=sdk.python.feast.infra.online_stores.couchbase_online_store.couchbase_repo_configuration \
592-
PYTEST_PLUGINS=sdk.python.tests.integration.feature_repos.universal.online_store.couchbase \
592+
PYTEST_PLUGINS=sdk.python.tests.universal.feature_repos.universal.online_store.couchbase \
593593
python -m pytest -n 8 --integration \
594594
-k "not test_universal_cli and \
595595
not test_go_feature_server and \

docs/how-to-guides/customizing-feast/adding-a-new-offline-store.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -385,7 +385,7 @@ Even if you have created the `OfflineStore` class in a separate repo, you can st
385385
```
386386
3. Next, set up your offline store to run the universal integration tests. These are integration tests specifically intended to test offline and online stores against Feast API functionality, to ensure that the Feast APIs works with your offline store.
387387

388-
* Feast parametrizes integration tests using the `FULL_REPO_CONFIGS` variable defined in `sdk/python/tests/integration/feature_repos/repo_configuration.py` which stores different offline store classes for testing.
388+
* Feast parametrizes integration tests using the `FULL_REPO_CONFIGS` variable defined in `sdk/python/tests/universal/feature_repos/repo_configuration.py` which stores different offline store classes for testing.
389389
* To overwrite the default configurations to use your own offline store, you can simply create your own file that contains a `FULL_REPO_CONFIGS` dictionary, and point Feast to that file by setting the environment variable `FULL_REPO_CONFIGS_MODULE` to point to that file. The module should add new `IntegrationTestRepoConfig` classes to the `AVAILABLE_OFFLINE_STORES` by defining an offline store that you would like Feast to test with.
390390

391391
A sample `FULL_REPO_CONFIGS_MODULE` looks something like this:

docs/how-to-guides/customizing-feast/adding-support-for-a-new-online-store.md

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -322,7 +322,7 @@ Even if you have created the `OnlineStore` class in a separate repo, you can sti
322322
make test-python-unit
323323
```
324324
2. The universal tests, which are integration tests specifically intended to test offline and online stores, should be run against Feast to ensure that the Feast APIs works with your online store.
325-
* Feast parametrizes integration tests using the `FULL_REPO_CONFIGS` variable defined in `sdk/python/tests/integration/feature_repos/repo_configuration.py` which stores different online store classes for testing.
325+
* Feast parametrizes integration tests using the `FULL_REPO_CONFIGS` variable defined in `sdk/python/tests/universal/feature_repos/repo_configuration.py` which stores different online store classes for testing.
326326
* To overwrite these configurations, you can simply create your own file that contains a `FULL_REPO_CONFIGS` variable, and point Feast to that file by setting the environment variable `FULL_REPO_CONFIGS_MODULE` to point to that file.
327327

328328
A sample `FULL_REPO_CONFIGS_MODULE` looks something like this:
@@ -350,7 +350,7 @@ If you are planning instead to use a Dockerized container to run your tests agai
350350

351351
If you create a containerized docker image for testing, developers who are trying to test with your online store will not have to spin up their own instance of the online store for testing. An example of an `OnlineStoreCreator` is shown below:
352352

353-
{% code title="sdk/python/tests/integration/feature_repos/universal/online_store/redis.py" %}
353+
{% code title="sdk/python/tests/universal/feature_repos/universal/online_store/redis.py" %}
354354
```python
355355
class RedisOnlineStoreCreator(OnlineStoreCreator):
356356
def __init__(self, project_name: str, **kwargs):
@@ -373,7 +373,7 @@ class RedisOnlineStoreCreator(OnlineStoreCreator):
373373
test-python-universal-cassandra:
374374
PYTHONPATH='.' \
375375
FULL_REPO_CONFIGS_MODULE=sdk.python.feast.infra.online_stores.cassandra_online_store.cassandra_repo_configuration \
376-
PYTEST_PLUGINS=sdk.python.tests.integration.feature_repos.universal.online_store.cassandra \
376+
PYTEST_PLUGINS=sdk.python.tests.universal.feature_repos.universal.online_store.cassandra \
377377
IS_TEST=True \
378378
python -m pytest -x --integration \
379379
sdk/python/tests

docs/project/development-guide.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -217,7 +217,7 @@ make test-python-integration-local
217217
To test across clouds, on top of setting up Redis, you also need GCP / AWS / Snowflake setup.
218218

219219
> Note: you can manually control what tests are run today by inspecting
220-
> [RepoConfiguration](https://github.com/feast-dev/feast/blob/master/sdk/python/tests/integration/feature_repos/repo_configuration.py)
220+
> [RepoConfiguration](https://github.com/feast-dev/feast/blob/master/sdk/python/tests/universal/feature_repos/repo_configuration.py)
221221
> and commenting out tests that are added to `DEFAULT_FULL_REPO_CONFIGS`
222222
223223
**GCP**

0 commit comments

Comments
 (0)