diff --git a/BUILD b/BUILD index d40425e5..818b9f97 100644 --- a/BUILD +++ b/BUILD @@ -104,3 +104,21 @@ test_suite( tests = ["//src/cpp/tests:bm_kvs_cpp"], visibility = ["//visibility:public"], ) + +test_suite( + name = "unit_tests", + tests = [ + "test_kvs_cpp", + "//src/rust/rust_kvs:tests", + ], + visibility = ["//visibility:public"], +) + +test_suite( + name = "cit_tests", + tests = [ + "//tests/python_test_cases:cit_cpp", + "//tests/python_test_cases:cit_rust", + ], + visibility = ["//visibility:public"], +) diff --git a/MODULE.bazel b/MODULE.bazel index 8bff2deb..9d514521 100644 --- a/MODULE.bazel +++ b/MODULE.bazel @@ -33,7 +33,7 @@ pip = use_extension("@rules_python//python/extensions:pip.bzl", "pip", dev_depen pip.parse( hub_name = "pip_score_venv_test", python_version = PYTHON_VERSION, - requirements_lock = "//tests/python_test_cases:requirements.txt", + requirements_lock = "//tests/python_test_cases:requirements.txt.lock", ) use_repo(pip, "pip_score_venv_test") diff --git a/tests/README.md b/tests/README.md index dab85e7a..5d95ac3b 100644 --- a/tests/README.md +++ b/tests/README.md @@ -67,6 +67,26 @@ pytest -v . --build-scenarios --self-contained-html --html report.html --traces > Traces are collected using `stdout`. > Setting `--capture` flag (including `-s`) might cause traces to be missing from HTML report. +### Bazel execution + +Run all Component Integration Tests: + +```bash +bazel test //:cit_tests +``` + +When the dependencies in [requirements.txt](python_test_cases/requirements.txt) file are manually modified, the user should invoke command and commit changes: + +```bash +bazel run //tests/python_test_cases:requirements.update +``` + +In order to update all dependencies use: + +```bash +bazel run //tests/python_test_cases:requirements.update -- --upgrade +``` + ## Standalone execution of test scenarios Test scenarios can be run independently from `pytest`. diff --git a/tests/python_test_cases/BUILD b/tests/python_test_cases/BUILD index db49affe..132ff9ee 100644 --- a/tests/python_test_cases/BUILD +++ b/tests/python_test_cases/BUILD @@ -12,13 +12,20 @@ # ******************************************************************************* load("@pip_score_venv_test//:requirements.bzl", "all_requirements") load("@rules_python//python:pip.bzl", "compile_pip_requirements") -load("@score_python_basics//:defs.bzl", "score_py_pytest", "score_virtualenv") +load("@score_tooling//python_basics:defs.bzl", "score_py_pytest", "score_virtualenv") -# Additional requirements for the tests +# In order to update the requirements, change the `requirements.in` file and run: +# `bazel run //tests/python_test_cases:requirements.update`. +# This will update the `requirements.txt` file. +# To upgrade all dependencies to their latest versions, run: +# `bazel run //tests/python_test_cases:requirements.update -- --upgrade`. compile_pip_requirements( name = "requirements", - # requirements_txt = "requirements.txt", - src = "//tests/python_test_cases:pyproject.toml", + srcs = [ + "requirements.txt", + "@score_tooling//python_basics:requirements.txt", + ], + requirements_txt = "requirements.txt.lock", tags = [ "manual", ], @@ -36,8 +43,7 @@ score_py_pytest( srcs = glob(["tests/**/*.py"]), args = [ "-m cpp", - "--cpp-target-path", - "$(rootpath //tests/cpp_test_scenarios)", + "--cpp-target-path=$(rootpath //tests/cpp_test_scenarios)", ], data = [ ":python_tc_venv", @@ -48,9 +54,6 @@ score_py_pytest( "RUST_BACKTRACE": "1", }, pytest_ini = "//tests/python_test_cases:pytest.ini", - tags = [ - "manual", - ], deps = all_requirements, ) @@ -59,8 +62,7 @@ score_py_pytest( srcs = glob(["tests/**/*.py"]), args = [ "-m rust", - "--rust-target-path", - "$(rootpath //tests/rust_test_scenarios)", + "--rust-target-path=$(rootpath //tests/rust_test_scenarios)", ], data = [ ":python_tc_venv", @@ -71,9 +73,6 @@ score_py_pytest( "RUST_BACKTRACE": "1", }, pytest_ini = "//tests/python_test_cases:pytest.ini", - tags = [ - "manual", - ], deps = all_requirements, ) diff --git a/tests/python_test_cases/requirements.txt b/tests/python_test_cases/requirements.txt index 32a2f5c8..9451b0f8 100644 --- a/tests/python_test_cases/requirements.txt +++ b/tests/python_test_cases/requirements.txt @@ -1,14 +1,4 @@ -# Fully resolved list of dependencies is required by Bazel. -iniconfig==2.1.0 -Jinja2==3.1.6 -MarkupSafe==3.0.2 -packaging==24.2 -pluggy==1.5.0 -psutil==7.0.0 -Pygments==2.19.2 -pytest==8.4.1 -pytest-html==4.1.1 -pytest-metadata==3.1.1 -pytest-repeat==0.9.4 -pytest-env==1.1.5 -testing-utils @ git+https://github.com/qorix-group/testing_tools.git@v0.2.4 +psutil +pytest-metadata +pytest-env +testing-utils @ git+https://github.com/eclipse-score/testing_tools.git@v0.3.0 diff --git a/tests/python_test_cases/requirements.txt.lock b/tests/python_test_cases/requirements.txt.lock new file mode 100644 index 00000000..a849c0d5 --- /dev/null +++ b/tests/python_test_cases/requirements.txt.lock @@ -0,0 +1,161 @@ +# +# This file is autogenerated by pip-compile with Python 3.12 +# by the following command: +# +# bazel run //component_integration_tests/python_test_cases:requirements.update +# +basedpyright==1.29.2 \ + --hash=sha256:12c49186003b9f69a028615da883ef97035ea2119a9e3f93a00091b3a27088a6 \ + --hash=sha256:f389e2997de33d038c5065fd85bff351fbdc62fa6d6371c7b947fc3bce8d437d + # via -r /home/pawel/.cache/bazel/_bazel_pawel/8e37fa08ddc84c04fc3d2fc587210beb/external/score_tooling~/python_basics/requirements.txt +iniconfig==2.1.0 \ + --hash=sha256:3abbd2e30b36733fee78f9c7f7308f2d0050e88f0087fd25c2645f63c773e1c7 \ + --hash=sha256:9deba5723312380e77435581c6bf4935c94cbfab9b1ed33ef8d238ea168eb760 + # via + # -r /home/pawel/.cache/bazel/_bazel_pawel/8e37fa08ddc84c04fc3d2fc587210beb/external/score_tooling~/python_basics/requirements.txt + # pytest +jinja2==3.1.6 \ + --hash=sha256:0137fb05990d35f1275a587e9aee6d56da821fc83491a0fb838183be43f66d6d \ + --hash=sha256:85ece4451f492d0c13c5dd7c13a64681a86afae63a5f347908daf103ce6d2f67 + # via pytest-html +markupsafe==3.0.2 \ + --hash=sha256:0bff5e0ae4ef2e1ae4fdf2dfd5b76c75e5c2fa4132d05fc1b0dabcd20c7e28c4 \ + --hash=sha256:0f4ca02bea9a23221c0182836703cbf8930c5e9454bacce27e767509fa286a30 \ + --hash=sha256:1225beacc926f536dc82e45f8a4d68502949dc67eea90eab715dea3a21c1b5f0 \ + --hash=sha256:131a3c7689c85f5ad20f9f6fb1b866f402c445b220c19fe4308c0b147ccd2ad9 \ + --hash=sha256:15ab75ef81add55874e7ab7055e9c397312385bd9ced94920f2802310c930396 \ + --hash=sha256:1a9d3f5f0901fdec14d8d2f66ef7d035f2157240a433441719ac9a3fba440b13 \ + --hash=sha256:1c99d261bd2d5f6b59325c92c73df481e05e57f19837bdca8413b9eac4bd8028 \ + --hash=sha256:1e084f686b92e5b83186b07e8a17fc09e38fff551f3602b249881fec658d3eca \ + --hash=sha256:2181e67807fc2fa785d0592dc2d6206c019b9502410671cc905d132a92866557 \ + --hash=sha256:2cb8438c3cbb25e220c2ab33bb226559e7afb3baec11c4f218ffa7308603c832 \ + --hash=sha256:3169b1eefae027567d1ce6ee7cae382c57fe26e82775f460f0b2778beaad66c0 \ + --hash=sha256:3809ede931876f5b2ec92eef964286840ed3540dadf803dd570c3b7e13141a3b \ + --hash=sha256:38a9ef736c01fccdd6600705b09dc574584b89bea478200c5fbf112a6b0d5579 \ + --hash=sha256:3d79d162e7be8f996986c064d1c7c817f6df3a77fe3d6859f6f9e7be4b8c213a \ + --hash=sha256:444dcda765c8a838eaae23112db52f1efaf750daddb2d9ca300bcae1039adc5c \ + --hash=sha256:48032821bbdf20f5799ff537c7ac3d1fba0ba032cfc06194faffa8cda8b560ff \ + --hash=sha256:4aa4e5faecf353ed117801a068ebab7b7e09ffb6e1d5e412dc852e0da018126c \ + --hash=sha256:52305740fe773d09cffb16f8ed0427942901f00adedac82ec8b67752f58a1b22 \ + --hash=sha256:569511d3b58c8791ab4c2e1285575265991e6d8f8700c7be0e88f86cb0672094 \ + --hash=sha256:57cb5a3cf367aeb1d316576250f65edec5bb3be939e9247ae594b4bcbc317dfb \ + --hash=sha256:5b02fb34468b6aaa40dfc198d813a641e3a63b98c2b05a16b9f80b7ec314185e \ + --hash=sha256:6381026f158fdb7c72a168278597a5e3a5222e83ea18f543112b2662a9b699c5 \ + --hash=sha256:6af100e168aa82a50e186c82875a5893c5597a0c1ccdb0d8b40240b1f28b969a \ + --hash=sha256:6c89876f41da747c8d3677a2b540fb32ef5715f97b66eeb0c6b66f5e3ef6f59d \ + --hash=sha256:6e296a513ca3d94054c2c881cc913116e90fd030ad1c656b3869762b754f5f8a \ + --hash=sha256:70a87b411535ccad5ef2f1df5136506a10775d267e197e4cf531ced10537bd6b \ + --hash=sha256:7e94c425039cde14257288fd61dcfb01963e658efbc0ff54f5306b06054700f8 \ + --hash=sha256:846ade7b71e3536c4e56b386c2a47adf5741d2d8b94ec9dc3e92e5e1ee1e2225 \ + --hash=sha256:88416bd1e65dcea10bc7569faacb2c20ce071dd1f87539ca2ab364bf6231393c \ + --hash=sha256:88b49a3b9ff31e19998750c38e030fc7bb937398b1f78cfa599aaef92d693144 \ + --hash=sha256:8c4e8c3ce11e1f92f6536ff07154f9d49677ebaaafc32db9db4620bc11ed480f \ + --hash=sha256:8e06879fc22a25ca47312fbe7c8264eb0b662f6db27cb2d3bbbc74b1df4b9b87 \ + --hash=sha256:9025b4018f3a1314059769c7bf15441064b2207cb3f065e6ea1e7359cb46db9d \ + --hash=sha256:93335ca3812df2f366e80509ae119189886b0f3c2b81325d39efdb84a1e2ae93 \ + --hash=sha256:9778bd8ab0a994ebf6f84c2b949e65736d5575320a17ae8984a77fab08db94cf \ + --hash=sha256:9e2d922824181480953426608b81967de705c3cef4d1af983af849d7bd619158 \ + --hash=sha256:a123e330ef0853c6e822384873bef7507557d8e4a082961e1defa947aa59ba84 \ + --hash=sha256:a904af0a6162c73e3edcb969eeeb53a63ceeb5d8cf642fade7d39e7963a22ddb \ + --hash=sha256:ad10d3ded218f1039f11a75f8091880239651b52e9bb592ca27de44eed242a48 \ + --hash=sha256:b424c77b206d63d500bcb69fa55ed8d0e6a3774056bdc4839fc9298a7edca171 \ + --hash=sha256:b5a6b3ada725cea8a5e634536b1b01c30bcdcd7f9c6fff4151548d5bf6b3a36c \ + --hash=sha256:ba8062ed2cf21c07a9e295d5b8a2a5ce678b913b45fdf68c32d95d6c1291e0b6 \ + --hash=sha256:ba9527cdd4c926ed0760bc301f6728ef34d841f405abf9d4f959c478421e4efd \ + --hash=sha256:bbcb445fa71794da8f178f0f6d66789a28d7319071af7a496d4d507ed566270d \ + --hash=sha256:bcf3e58998965654fdaff38e58584d8937aa3096ab5354d493c77d1fdd66d7a1 \ + --hash=sha256:c0ef13eaeee5b615fb07c9a7dadb38eac06a0608b41570d8ade51c56539e509d \ + --hash=sha256:cabc348d87e913db6ab4aa100f01b08f481097838bdddf7c7a84b7575b7309ca \ + --hash=sha256:cdb82a876c47801bb54a690c5ae105a46b392ac6099881cdfb9f6e95e4014c6a \ + --hash=sha256:cfad01eed2c2e0c01fd0ecd2ef42c492f7f93902e39a42fc9ee1692961443a29 \ + --hash=sha256:d16a81a06776313e817c951135cf7340a3e91e8c1ff2fac444cfd75fffa04afe \ + --hash=sha256:d8213e09c917a951de9d09ecee036d5c7d36cb6cb7dbaece4c71a60d79fb9798 \ + --hash=sha256:e07c3764494e3776c602c1e78e298937c3315ccc9043ead7e685b7f2b8d47b3c \ + --hash=sha256:e17c96c14e19278594aa4841ec148115f9c7615a47382ecb6b82bd8fea3ab0c8 \ + --hash=sha256:e444a31f8db13eb18ada366ab3cf45fd4b31e4db1236a4448f68778c1d1a5a2f \ + --hash=sha256:e6a2a455bd412959b57a172ce6328d2dd1f01cb2135efda2e4576e8a23fa3b0f \ + --hash=sha256:eaa0a10b7f72326f1372a713e73c3f739b524b3af41feb43e4921cb529f5929a \ + --hash=sha256:eb7972a85c54febfb25b5c4b4f3af4dcc731994c7da0d8a0b4a6eb0640e1d178 \ + --hash=sha256:ee55d3edf80167e48ea11a923c7386f4669df67d7994554387f84e7d8b0a2bf0 \ + --hash=sha256:f3818cb119498c0678015754eba762e0d61e5b52d34c8b13d770f0719f7b1d79 \ + --hash=sha256:f8b3d067f2e40fe93e1ccdd6b2e1d16c43140e76f02fb1319a05cf2b79d99430 \ + --hash=sha256:fcabf5ff6eea076f859677f5f0b6b5c1a51e70a376b0579e0eadef8db48c6b50 + # via jinja2 +nodejs-wheel-binaries==22.16.0 \ + --hash=sha256:2728972d336d436d39ee45988978d8b5d963509e06f063e80fe41b203ee80b28 \ + --hash=sha256:2fffb4bf1066fb5f660da20819d754f1b424bca1b234ba0f4fa901c52e3975fb \ + --hash=sha256:447ad796850eb52ca20356ad39b2d296ed8fef3f214921f84a1ccdad49f2eba1 \ + --hash=sha256:4ae3cf22138891cb44c3ee952862a257ce082b098b29024d7175684a9a77b0c0 \ + --hash=sha256:71f2de4dc0b64ae43e146897ce811f80ac4f9acfbae6ccf814226282bf4ef174 \ + --hash=sha256:7f526ca6a132b0caf633566a2a78c6985fe92857e7bfdb37380f76205a10b808 \ + --hash=sha256:986b715a96ed703f8ce0c15712f76fc42895cf09067d72b6ef29e8b334eccf64 \ + --hash=sha256:d695832f026df3a0cf9a089d222225939de9d1b67f8f0a353b79f015aabbe7e2 \ + --hash=sha256:dbfccbcd558d2f142ccf66d8c3a098022bf4436db9525b5b8d32169ce185d99e + # via + # -r /home/pawel/.cache/bazel/_bazel_pawel/8e37fa08ddc84c04fc3d2fc587210beb/external/score_tooling~/python_basics/requirements.txt + # basedpyright +packaging==25.0 \ + --hash=sha256:29572ef2b1f17581046b3a2227d5c611fb25ec70ca1ba8554b24b0e69331a484 \ + --hash=sha256:d443872c98d677bf60f6a1f2f8c1cb748e8fe762d2bf9d3148b5599295b0fc4f + # via + # -r /home/pawel/.cache/bazel/_bazel_pawel/8e37fa08ddc84c04fc3d2fc587210beb/external/score_tooling~/python_basics/requirements.txt + # pytest +pluggy==1.6.0 \ + --hash=sha256:7dcc130b76258d33b90f61b658791dede3486c3e6bfb003ee5c9bfb396dd22f3 \ + --hash=sha256:e920276dd6813095e9377c0bc5566d94c932c33b27a3e3945d8389c374dd4746 + # via + # -r /home/pawel/.cache/bazel/_bazel_pawel/8e37fa08ddc84c04fc3d2fc587210beb/external/score_tooling~/python_basics/requirements.txt + # pytest +psutil==7.1.3 \ + --hash=sha256:0005da714eee687b4b8decd3d6cc7c6db36215c9e74e5ad2264b90c3df7d92dc \ + --hash=sha256:1068c303be3a72f8e18e412c5b2a8f6d31750fb152f9cb106b54090296c9d251 \ + --hash=sha256:18349c5c24b06ac5612c0428ec2a0331c26443d259e2a0144a9b24b4395b58fa \ + --hash=sha256:19644c85dcb987e35eeeaefdc3915d059dac7bd1167cdcdbf27e0ce2df0c08c0 \ + --hash=sha256:2bdbcd0e58ca14996a42adf3621a6244f1bb2e2e528886959c72cf1e326677ab \ + --hash=sha256:31d77fcedb7529f27bb3a0472bea9334349f9a04160e8e6e5020f22c59893264 \ + --hash=sha256:3792983e23b69843aea49c8f5b8f115572c5ab64c153bada5270086a2123c7e7 \ + --hash=sha256:3bb428f9f05c1225a558f53e30ccbad9930b11c3fc206836242de1091d3e7dd3 \ + --hash=sha256:56d974e02ca2c8eb4812c3f76c30e28836fffc311d55d979f1465c1feeb2b68b \ + --hash=sha256:6c86281738d77335af7aec228328e944b30930899ea760ecf33a4dba66be5e74 \ + --hash=sha256:8f33a3702e167783a9213db10ad29650ebf383946e91bc77f28a5eb083496bc9 \ + --hash=sha256:95ef04cf2e5ba0ab9eaafc4a11eaae91b44f4ef5541acd2ee91d9108d00d59a7 \ + --hash=sha256:ad81425efc5e75da3f39b3e636293360ad8d0b49bed7df824c79764fb4ba9b8b \ + --hash=sha256:b403da1df4d6d43973dc004d19cee3b848e998ae3154cc8097d139b77156c353 \ + --hash=sha256:bc31fa00f1fbc3c3802141eede66f3a2d51d89716a194bf2cd6fc68310a19880 \ + --hash=sha256:bd0d69cee829226a761e92f28140bec9a5ee9d5b4fb4b0cc589068dbfff559b1 \ + --hash=sha256:c525ffa774fe4496282fb0b1187725793de3e7c6b29e41562733cae9ada151ee \ + --hash=sha256:f39c2c19fe824b47484b96f9692932248a54c43799a84282cfe58d05a6449efd \ + --hash=sha256:fac9cd332c67f4422504297889da5ab7e05fd11e3c4392140f7370f4208ded1f + # via -r component_integration_tests/python_test_cases/requirements.txt +pytest==8.3.5 \ + --hash=sha256:c69214aa47deac29fad6c2a4f590b9c4a9fdb16a403176fe154b79c0b4d4d820 \ + --hash=sha256:f4efe70cc14e511565ac476b57c279e12a855b11f48f212af1080ef2263d3845 + # via + # -r /home/pawel/.cache/bazel/_bazel_pawel/8e37fa08ddc84c04fc3d2fc587210beb/external/score_tooling~/python_basics/requirements.txt + # pytest-env + # pytest-html + # pytest-metadata + # pytest-repeat + # testing-utils +pytest-env==1.1.5 \ + --hash=sha256:91209840aa0e43385073ac464a554ad2947cc2fd663a9debf88d03b01e0cc1cf \ + --hash=sha256:ce90cf8772878515c24b31cd97c7fa1f4481cd68d588419fd45f10ecaee6bc30 + # via -r component_integration_tests/python_test_cases/requirements.txt +pytest-html==4.1.1 \ + --hash=sha256:70a01e8ae5800f4a074b56a4cb1025c8f4f9b038bba5fe31e3c98eb996686f07 \ + --hash=sha256:c8152cea03bd4e9bee6d525573b67bbc6622967b72b9628dda0ea3e2a0b5dd71 + # via testing-utils +pytest-metadata==3.1.1 \ + --hash=sha256:c8e0844db684ee1c798cfa38908d20d67d0463ecb6137c72e91f418558dd5f4b \ + --hash=sha256:d2a29b0355fbc03f168aa96d41ff88b1a3b44a3b02acbe491801c98a048017c8 + # via + # -r component_integration_tests/python_test_cases/requirements.txt + # pytest-html +pytest-repeat==0.9.4 \ + --hash=sha256:c1738b4e412a6f3b3b9e0b8b29fcd7a423e50f87381ad9307ef6f5a8601139f3 \ + --hash=sha256:d92ac14dfaa6ffcfe6917e5d16f0c9bc82380c135b03c2a5f412d2637f224485 + # via testing-utils +# WARNING: pip install will require the following package to be hashed. +# Consider using a hashable URL like https://github.com/jazzband/pip-tools/archive/SOMECOMMIT.zip +testing-utils @ git+https://github.com/eclipse-score/testing_tools.git@v0.3.0 + # via -r component_integration_tests/python_test_cases/requirements.txt