diff --git a/ci/provisioning/post_provision_config.sh b/ci/provisioning/post_provision_config.sh index 0e98332a4d0..96574b873a6 100755 --- a/ci/provisioning/post_provision_config.sh +++ b/ci/provisioning/post_provision_config.sh @@ -30,6 +30,7 @@ source ci/junit.sh # the specific site. : "${MLNX_VER_NUM:=3.0.0}" +: "${PYTHON_VERSION:=3.11}" # This is tangled and needs a better fix as it has DISTRO being passed # as EL_8 for EL_9, yet other places expect DISTRO to really be EL_8 and @@ -141,6 +142,7 @@ if ! retry_cmd 2400 clush -B -S -l root -w "$NODESTRING" \ COVFN_DISABLED=\"${COVFN_DISABLED:-true}\" DAOS_CI_INFO_DIR=\"${DAOS_CI_INFO_DIR:?DAOS_CI_INFO_DIR is missing. Can not continue with node(s) provisioning process}\" CI_SCONS_ARGS=\"${CI_SCONS_ARGS:-}\" + PYTHON_VERSION=\"${PYTHON_VERSION}\" $(cat ci/stacktrace.sh) $(cat ci/junit.sh) $(cat ci/provisioning/post_provision_config_common_functions.sh) diff --git a/ci/provisioning/post_provision_config_nodes_EL.sh b/ci/provisioning/post_provision_config_nodes_EL.sh index 75e1d7934e3..e74d122672d 100644 --- a/ci/provisioning/post_provision_config_nodes_EL.sh +++ b/ci/provisioning/post_provision_config_nodes_EL.sh @@ -30,8 +30,8 @@ distro_custom() { # Use a more recent python version for unit testing, this allows us to also test installing # pydaos into virtual environments. - dnf -y install python39 python39-devel - dnf -y install python3.11 python3.11-devel + : "${PYTHON_VERSION:=}" + dnf -y install "python${PYTHON_VERSION}" "python${PYTHON_VERSION}-devel" } install_mofed() { diff --git a/ci/provisioning/post_provision_config_nodes_LEAP.sh b/ci/provisioning/post_provision_config_nodes_LEAP.sh index 4e6dc3e4e41..96226b220a3 100644 --- a/ci/provisioning/post_provision_config_nodes_LEAP.sh +++ b/ci/provisioning/post_provision_config_nodes_LEAP.sh @@ -23,4 +23,9 @@ distro_custom() { sed -e '/MODULEPATH=/s/$/:\/usr\/share\/modules/' \ /etc/profile.d/lmod.sh; \ fi + + # Use a more recent python version for unit testing, this allows us to also test installing + # pydaos into virtual environments. + : "${PYTHON_VERSION:=}" + dnf -y install "python${PYTHON_VERSION//./}" "python${PYTHON_VERSION//./}-devel" } diff --git a/ci/rpm/test_daos_node.sh b/ci/rpm/test_daos_node.sh index 9968d1ec49d..b78cd45e646 100755 --- a/ci/rpm/test_daos_node.sh +++ b/ci/rpm/test_daos_node.sh @@ -2,6 +2,8 @@ . /etc/os-release +: "${PYTHON_VERSION:=3.11}" + YUM=dnf case "$ID_LIKE" in *rhel*) @@ -102,7 +104,7 @@ sudo chown "$me:$me" /tmp/daos_sockets FTEST=/usr/lib/daos/TESTING/ftest -python3 -m venv venv +"python${PYTHON_VERSION}" -m venv venv # shellcheck disable=SC1091 source venv/bin/activate pip install --upgrade pip diff --git a/requirements-ftest.txt b/requirements-ftest.txt index 7b86d613036..f67edae0d1e 100644 --- a/requirements-ftest.txt +++ b/requirements-ftest.txt @@ -1,7 +1,535 @@ -avocado-framework==82 -avocado-framework-plugin-result-html==82 -avocado-framework-plugin-varianter-yaml-to-mux==82 -clustershell -paramiko -distro -torch +# +# This file is autogenerated by pip-compile with Python 3.11 +# by the following command: +# +# pip-compile --allow-unsafe --cert=None --client-cert=None --generate-hashes --index-url=None --pip-args=None --strip-extras requirements.in.ftest +# +avocado-framework==103.0 \ + --hash=sha256:89abd5417289a58760d2792809b7556263f3bac5b3cad931e6ec8d7a92986d33 \ + --hash=sha256:a546f2a4963170b04f1d8e707e2456384d2fea3b0e7511f03cbd7920a4054afb + # via + # -r requirements.in.ftest + # avocado-framework-plugin-result-html + # avocado-framework-plugin-varianter-yaml-to-mux +avocado-framework-plugin-result-html==103.0 \ + --hash=sha256:3b3de1c6fe831f286949f48ca8e1906a364481e064821413bd4393b27d3bcab5 \ + --hash=sha256:4bccddc8d1c894d0164ce76a048729c877e9d48030e8a2e0ade2dd4ea560ae09 + # via -r requirements.in.ftest +avocado-framework-plugin-varianter-yaml-to-mux==103.0 \ + --hash=sha256:1db37751e51d249c458ee243eaa7d71f720cbbd6cd82b8c0602260fdda49239a \ + --hash=sha256:6005283fd216a33b90b7c22fe57ce753497b13e30175d89c788ada4b33e0803e + # via -r requirements.in.ftest +bcrypt==4.3.0 \ + --hash=sha256:0042b2e342e9ae3d2ed22727c1262f76cc4f345683b5c1715f0250cf4277294f \ + --hash=sha256:0142b2cb84a009f8452c8c5a33ace5e3dfec4159e7735f5afe9a4d50a8ea722d \ + --hash=sha256:08bacc884fd302b611226c01014eca277d48f0a05187666bca23aac0dad6fe24 \ + --hash=sha256:0d3efb1157edebfd9128e4e46e2ac1a64e0c1fe46fb023158a407c7892b0f8c3 \ + --hash=sha256:0e30e5e67aed0187a1764911af023043b4542e70a7461ad20e837e94d23e1d6c \ + --hash=sha256:107d53b5c67e0bbc3f03ebf5b030e0403d24dda980f8e244795335ba7b4a027d \ + --hash=sha256:12fa6ce40cde3f0b899729dbd7d5e8811cb892d31b6f7d0334a1f37748b789fd \ + --hash=sha256:17a854d9a7a476a89dcef6c8bd119ad23e0f82557afbd2c442777a16408e614f \ + --hash=sha256:191354ebfe305e84f344c5964c7cd5f924a3bfc5d405c75ad07f232b6dffb49f \ + --hash=sha256:2ef6630e0ec01376f59a006dc72918b1bf436c3b571b80fa1968d775fa02fe7d \ + --hash=sha256:3004df1b323d10021fda07a813fd33e0fd57bef0e9a480bb143877f6cba996fe \ + --hash=sha256:335a420cfd63fc5bc27308e929bee231c15c85cc4c496610ffb17923abf7f231 \ + --hash=sha256:33752b1ba962ee793fa2b6321404bf20011fe45b9afd2a842139de3011898fef \ + --hash=sha256:3a3fd2204178b6d2adcf09cb4f6426ffef54762577a7c9b54c159008cb288c18 \ + --hash=sha256:3b8d62290ebefd49ee0b3ce7500f5dbdcf13b81402c05f6dafab9a1e1b27212f \ + --hash=sha256:3e36506d001e93bffe59754397572f21bb5dc7c83f54454c990c74a468cd589e \ + --hash=sha256:41261d64150858eeb5ff43c753c4b216991e0ae16614a308a15d909503617732 \ + --hash=sha256:50e6e80a4bfd23a25f5c05b90167c19030cf9f87930f7cb2eacb99f45d1c3304 \ + --hash=sha256:531457e5c839d8caea9b589a1bcfe3756b0547d7814e9ce3d437f17da75c32b0 \ + --hash=sha256:55a935b8e9a1d2def0626c4269db3fcd26728cbff1e84f0341465c31c4ee56d8 \ + --hash=sha256:57967b7a28d855313a963aaea51bf6df89f833db4320da458e5b3c5ab6d4c938 \ + --hash=sha256:584027857bc2843772114717a7490a37f68da563b3620f78a849bcb54dc11e62 \ + --hash=sha256:59e1aa0e2cd871b08ca146ed08445038f42ff75968c7ae50d2fdd7860ade2180 \ + --hash=sha256:5bd3cca1f2aa5dbcf39e2aa13dd094ea181f48959e1071265de49cc2b82525af \ + --hash=sha256:5c1949bf259a388863ced887c7861da1df681cb2388645766c89fdfd9004c669 \ + --hash=sha256:62f26585e8b219cdc909b6a0069efc5e4267e25d4a3770a364ac58024f62a761 \ + --hash=sha256:67a561c4d9fb9465ec866177e7aebcad08fe23aaf6fbd692a6fab69088abfc51 \ + --hash=sha256:6fb1fd3ab08c0cbc6826a2e0447610c6f09e983a281b919ed721ad32236b8b23 \ + --hash=sha256:74a8d21a09f5e025a9a23e7c0fd2c7fe8e7503e4d356c0a2c1486ba010619f09 \ + --hash=sha256:79e70b8342a33b52b55d93b3a59223a844962bef479f6a0ea318ebbcadf71505 \ + --hash=sha256:7a4be4cbf241afee43f1c3969b9103a41b40bcb3a3f467ab19f891d9bc4642e4 \ + --hash=sha256:7c03296b85cb87db865d91da79bf63d5609284fc0cab9472fdd8367bbd830753 \ + --hash=sha256:842d08d75d9fe9fb94b18b071090220697f9f184d4547179b60734846461ed59 \ + --hash=sha256:864f8f19adbe13b7de11ba15d85d4a428c7e2f344bac110f667676a0ff84924b \ + --hash=sha256:97eea7408db3a5bcce4a55d13245ab3fa566e23b4c67cd227062bb49e26c585d \ + --hash=sha256:a839320bf27d474e52ef8cb16449bb2ce0ba03ca9f44daba6d93fa1d8828e48a \ + --hash=sha256:afe327968aaf13fc143a56a3360cb27d4ad0345e34da12c7290f1b00b8fe9a8b \ + --hash=sha256:b4d4e57f0a63fd0b358eb765063ff661328f69a04494427265950c71b992a39a \ + --hash=sha256:b6354d3760fcd31994a14c89659dee887f1351a06e5dac3c1142307172a79f90 \ + --hash=sha256:b693dbb82b3c27a1604a3dff5bfc5418a7e6a781bb795288141e5f80cf3a3492 \ + --hash=sha256:bdc6a24e754a555d7316fa4774e64c6c3997d27ed2d1964d55920c7c227bc4ce \ + --hash=sha256:beeefe437218a65322fbd0069eb437e7c98137e08f22c4660ac2dc795c31f8bb \ + --hash=sha256:c5eeac541cefd0bb887a371ef73c62c3cd78535e4887b310626036a7c0a817bb \ + --hash=sha256:c950d682f0952bafcceaf709761da0a32a942272fad381081b51096ffa46cea1 \ + --hash=sha256:d9af79d322e735b1fc33404b5765108ae0ff232d4b54666d46730f8ac1a43676 \ + --hash=sha256:e53e074b120f2877a35cc6c736b8eb161377caae8925c17688bd46ba56daaa5b \ + --hash=sha256:e965a9c1e9a393b8005031ff52583cedc15b7884fce7deb8b0346388837d6cfe \ + --hash=sha256:f01e060f14b6b57bbb72fc5b4a83ac21c443c9a2ee708e04a10e9192f90a6281 \ + --hash=sha256:f1e3ffa1365e8702dc48c8b360fef8d7afeca482809c5e45e653af82ccd088c1 \ + --hash=sha256:f6746e6fec103fcd509b96bacdfdaa2fbde9a553245dbada284435173a6f1aef \ + --hash=sha256:f81b0ed2639568bf14749112298f9e4e2b28853dab50a8b357e31798686a036d + # via paramiko +cffi==2.0.0 \ + --hash=sha256:00bdf7acc5f795150faa6957054fbbca2439db2f775ce831222b66f192f03beb \ + --hash=sha256:07b271772c100085dd28b74fa0cd81c8fb1a3ba18b21e03d7c27f3436a10606b \ + --hash=sha256:087067fa8953339c723661eda6b54bc98c5625757ea62e95eb4898ad5e776e9f \ + --hash=sha256:0a1527a803f0a659de1af2e1fd700213caba79377e27e4693648c2923da066f9 \ + --hash=sha256:0cf2d91ecc3fcc0625c2c530fe004f82c110405f101548512cce44322fa8ac44 \ + --hash=sha256:0f6084a0ea23d05d20c3edcda20c3d006f9b6f3fefeac38f59262e10cef47ee2 \ + --hash=sha256:12873ca6cb9b0f0d3a0da705d6086fe911591737a59f28b7936bdfed27c0d47c \ + --hash=sha256:19f705ada2530c1167abacb171925dd886168931e0a7b78f5bffcae5c6b5be75 \ + --hash=sha256:1cd13c99ce269b3ed80b417dcd591415d3372bcac067009b6e0f59c7d4015e65 \ + --hash=sha256:1e3a615586f05fc4065a8b22b8152f0c1b00cdbc60596d187c2a74f9e3036e4e \ + --hash=sha256:1f72fb8906754ac8a2cc3f9f5aaa298070652a0ffae577e0ea9bd480dc3c931a \ + --hash=sha256:1fc9ea04857caf665289b7a75923f2c6ed559b8298a1b8c49e59f7dd95c8481e \ + --hash=sha256:203a48d1fb583fc7d78a4c6655692963b860a417c0528492a6bc21f1aaefab25 \ + --hash=sha256:2081580ebb843f759b9f617314a24ed5738c51d2aee65d31e02f6f7a2b97707a \ + --hash=sha256:21d1152871b019407d8ac3985f6775c079416c282e431a4da6afe7aefd2bccbe \ + --hash=sha256:24b6f81f1983e6df8db3adc38562c83f7d4a0c36162885ec7f7b77c7dcbec97b \ + --hash=sha256:256f80b80ca3853f90c21b23ee78cd008713787b1b1e93eae9f3d6a7134abd91 \ + --hash=sha256:28a3a209b96630bca57cce802da70c266eb08c6e97e5afd61a75611ee6c64592 \ + --hash=sha256:2c8f814d84194c9ea681642fd164267891702542f028a15fc97d4674b6206187 \ + --hash=sha256:2de9a304e27f7596cd03d16f1b7c72219bd944e99cc52b84d0145aefb07cbd3c \ + --hash=sha256:38100abb9d1b1435bc4cc340bb4489635dc2f0da7456590877030c9b3d40b0c1 \ + --hash=sha256:3925dd22fa2b7699ed2617149842d2e6adde22b262fcbfada50e3d195e4b3a94 \ + --hash=sha256:3e17ed538242334bf70832644a32a7aae3d83b57567f9fd60a26257e992b79ba \ + --hash=sha256:3e837e369566884707ddaf85fc1744b47575005c0a229de3327f8f9a20f4efeb \ + --hash=sha256:3f4d46d8b35698056ec29bca21546e1551a205058ae1a181d871e278b0b28165 \ + --hash=sha256:44d1b5909021139fe36001ae048dbdde8214afa20200eda0f64c068cac5d5529 \ + --hash=sha256:45d5e886156860dc35862657e1494b9bae8dfa63bf56796f2fb56e1679fc0bca \ + --hash=sha256:4647afc2f90d1ddd33441e5b0e85b16b12ddec4fca55f0d9671fef036ecca27c \ + --hash=sha256:4671d9dd5ec934cb9a73e7ee9676f9362aba54f7f34910956b84d727b0d73fb6 \ + --hash=sha256:53f77cbe57044e88bbd5ed26ac1d0514d2acf0591dd6bb02a3ae37f76811b80c \ + --hash=sha256:5eda85d6d1879e692d546a078b44251cdd08dd1cfb98dfb77b670c97cee49ea0 \ + --hash=sha256:5fed36fccc0612a53f1d4d9a816b50a36702c28a2aa880cb8a122b3466638743 \ + --hash=sha256:61d028e90346df14fedc3d1e5441df818d095f3b87d286825dfcbd6459b7ef63 \ + --hash=sha256:66f011380d0e49ed280c789fbd08ff0d40968ee7b665575489afa95c98196ab5 \ + --hash=sha256:6824f87845e3396029f3820c206e459ccc91760e8fa24422f8b0c3d1731cbec5 \ + --hash=sha256:6c6c373cfc5c83a975506110d17457138c8c63016b563cc9ed6e056a82f13ce4 \ + --hash=sha256:6d02d6655b0e54f54c4ef0b94eb6be0607b70853c45ce98bd278dc7de718be5d \ + --hash=sha256:6d50360be4546678fc1b79ffe7a66265e28667840010348dd69a314145807a1b \ + --hash=sha256:730cacb21e1bdff3ce90babf007d0a0917cc3e6492f336c2f0134101e0944f93 \ + --hash=sha256:737fe7d37e1a1bffe70bd5754ea763a62a066dc5913ca57e957824b72a85e205 \ + --hash=sha256:74a03b9698e198d47562765773b4a8309919089150a0bb17d829ad7b44b60d27 \ + --hash=sha256:7553fb2090d71822f02c629afe6042c299edf91ba1bf94951165613553984512 \ + --hash=sha256:7a66c7204d8869299919db4d5069a82f1561581af12b11b3c9f48c584eb8743d \ + --hash=sha256:7cc09976e8b56f8cebd752f7113ad07752461f48a58cbba644139015ac24954c \ + --hash=sha256:81afed14892743bbe14dacb9e36d9e0e504cd204e0b165062c488942b9718037 \ + --hash=sha256:8941aaadaf67246224cee8c3803777eed332a19d909b47e29c9842ef1e79ac26 \ + --hash=sha256:89472c9762729b5ae1ad974b777416bfda4ac5642423fa93bd57a09204712322 \ + --hash=sha256:8ea985900c5c95ce9db1745f7933eeef5d314f0565b27625d9a10ec9881e1bfb \ + --hash=sha256:8eca2a813c1cb7ad4fb74d368c2ffbbb4789d377ee5bb8df98373c2cc0dee76c \ + --hash=sha256:92b68146a71df78564e4ef48af17551a5ddd142e5190cdf2c5624d0c3ff5b2e8 \ + --hash=sha256:9332088d75dc3241c702d852d4671613136d90fa6881da7d770a483fd05248b4 \ + --hash=sha256:94698a9c5f91f9d138526b48fe26a199609544591f859c870d477351dc7b2414 \ + --hash=sha256:9a67fc9e8eb39039280526379fb3a70023d77caec1852002b4da7e8b270c4dd9 \ + --hash=sha256:9de40a7b0323d889cf8d23d1ef214f565ab154443c42737dfe52ff82cf857664 \ + --hash=sha256:a05d0c237b3349096d3981b727493e22147f934b20f6f125a3eba8f994bec4a9 \ + --hash=sha256:afb8db5439b81cf9c9d0c80404b60c3cc9c3add93e114dcae767f1477cb53775 \ + --hash=sha256:b18a3ed7d5b3bd8d9ef7a8cb226502c6bf8308df1525e1cc676c3680e7176739 \ + --hash=sha256:b1e74d11748e7e98e2f426ab176d4ed720a64412b6a15054378afdb71e0f37dc \ + --hash=sha256:b21e08af67b8a103c71a250401c78d5e0893beff75e28c53c98f4de42f774062 \ + --hash=sha256:b4c854ef3adc177950a8dfc81a86f5115d2abd545751a304c5bcf2c2c7283cfe \ + --hash=sha256:b882b3df248017dba09d6b16defe9b5c407fe32fc7c65a9c69798e6175601be9 \ + --hash=sha256:baf5215e0ab74c16e2dd324e8ec067ef59e41125d3eade2b863d294fd5035c92 \ + --hash=sha256:c649e3a33450ec82378822b3dad03cc228b8f5963c0c12fc3b1e0ab940f768a5 \ + --hash=sha256:c654de545946e0db659b3400168c9ad31b5d29593291482c43e3564effbcee13 \ + --hash=sha256:c6638687455baf640e37344fe26d37c404db8b80d037c3d29f58fe8d1c3b194d \ + --hash=sha256:c8d3b5532fc71b7a77c09192b4a5a200ea992702734a2e9279a37f2478236f26 \ + --hash=sha256:cb527a79772e5ef98fb1d700678fe031e353e765d1ca2d409c92263c6d43e09f \ + --hash=sha256:cf364028c016c03078a23b503f02058f1814320a56ad535686f90565636a9495 \ + --hash=sha256:d48a880098c96020b02d5a1f7d9251308510ce8858940e6fa99ece33f610838b \ + --hash=sha256:d68b6cef7827e8641e8ef16f4494edda8b36104d79773a334beaa1e3521430f6 \ + --hash=sha256:d9b29c1f0ae438d5ee9acb31cadee00a58c46cc9c0b2f9038c6b0b3470877a8c \ + --hash=sha256:d9b97165e8aed9272a6bb17c01e3cc5871a594a446ebedc996e2397a1c1ea8ef \ + --hash=sha256:da68248800ad6320861f129cd9c1bf96ca849a2771a59e0344e88681905916f5 \ + --hash=sha256:da902562c3e9c550df360bfa53c035b2f241fed6d9aef119048073680ace4a18 \ + --hash=sha256:dbd5c7a25a7cb98f5ca55d258b103a2054f859a46ae11aaf23134f9cc0d356ad \ + --hash=sha256:dd4f05f54a52fb558f1ba9f528228066954fee3ebe629fc1660d874d040ae5a3 \ + --hash=sha256:de8dad4425a6ca6e4e5e297b27b5c824ecc7581910bf9aee86cb6835e6812aa7 \ + --hash=sha256:e11e82b744887154b182fd3e7e8512418446501191994dbf9c9fc1f32cc8efd5 \ + --hash=sha256:e6e73b9e02893c764e7e8d5bb5ce277f1a009cd5243f8228f75f842bf937c534 \ + --hash=sha256:f73b96c41e3b2adedc34a7356e64c8eb96e03a3782b535e043a986276ce12a49 \ + --hash=sha256:f93fd8e5c8c0a4aa1f424d6173f14a892044054871c771f8566e4008eaa359d2 \ + --hash=sha256:fc33c5141b55ed366cfaad382df24fe7dcbc686de5be719b207bb248e3053dc5 \ + --hash=sha256:fc7de24befaeae77ba923797c7c87834c73648a05a4bde34b3b7e5588973a453 \ + --hash=sha256:fe562eb1a64e67dd297ccc4f5addea2501664954f2692b69a76449ec7913ecbf + # via + # cryptography + # pynacl +clustershell==1.9.3 \ + --hash=sha256:e284c0e6b3fe0a0cd6be67df71dfbf6aa321188973db683a057f5637552fbc8c + # via -r requirements.in.ftest +cryptography==46.0.1 \ + --hash=sha256:0a17377fa52563d730248ba1f68185461fff36e8bc75d8787a7dd2e20a802b7a \ + --hash=sha256:0ca4be2af48c24df689a150d9cd37404f689e2968e247b6b8ff09bff5bcd786f \ + --hash=sha256:0d1922d9280e08cde90b518a10cd66831f632960a8d08cb3418922d83fce6f12 \ + --hash=sha256:0dfb7c88d4462a0cfdd0d87a3c245a7bc3feb59de101f6ff88194f740f72eda6 \ + --hash=sha256:0ff483716be32690c14636e54a1f6e2e1b7bf8e22ca50b989f88fa1b2d287080 \ + --hash=sha256:13e67c4d3fb8b6bc4ef778a7ccdd8df4cd15b4bcc18f4239c8440891a11245cc \ + --hash=sha256:15b5fd9358803b0d1cc42505a18d8bca81dabb35b5cfbfea1505092e13a9d96d \ + --hash=sha256:1cd6d50c1a8b79af1a6f703709d8973845f677c8e97b1268f5ff323d38ce8475 \ + --hash=sha256:2dd339ba3345b908fa3141ddba4025568fa6fd398eabce3ef72a29ac2d73ad75 \ + --hash=sha256:341fb7a26bc9d6093c1b124b9f13acc283d2d51da440b98b55ab3f79f2522ead \ + --hash=sha256:34f04b7311174469ab3ac2647469743720f8b6c8b046f238e5cb27905695eb2a \ + --hash=sha256:41c281a74df173876da1dc9a9b6953d387f06e3d3ed9284e3baae3ab3f40883a \ + --hash=sha256:449ef2b321bec7d97ef2c944173275ebdab78f3abdd005400cc409e27cd159ab \ + --hash=sha256:45f790934ac1018adeba46a0f7289b2b8fe76ba774a88c7f1922213a56c98bc1 \ + --hash=sha256:48948940d0ae00483e85e9154bb42997d0b77c21e43a77b7773c8c80de532ac5 \ + --hash=sha256:4c49eda9a23019e11d32a0eb51a27b3e7ddedde91e099c0ac6373e3aacc0d2ee \ + --hash=sha256:504e464944f2c003a0785b81668fe23c06f3b037e9cb9f68a7c672246319f277 \ + --hash=sha256:534b96c0831855e29fc3b069b085fd185aa5353033631a585d5cd4dd5d40d657 \ + --hash=sha256:6ef1488967e729948d424d09c94753d0167ce59afba8d0f6c07a22b629c557b2 \ + --hash=sha256:7176a5ab56fac98d706921f6416a05e5aff7df0e4b91516f450f8627cda22af3 \ + --hash=sha256:7411c910fb2a412053cf33cfad0153ee20d27e256c6c3f14d7d7d1d9fec59fd5 \ + --hash=sha256:757af4f6341ce7a1e47c326ca2a81f41d236070217e5fbbad61bbfe299d55d28 \ + --hash=sha256:7823bc7cdf0b747ecfb096d004cc41573c2f5c7e3a29861603a2871b43d3ef32 \ + --hash=sha256:7fab1187b6c6b2f11a326f33b036f7168f5b996aedd0c059f9738915e4e8f53a \ + --hash=sha256:84ef1f145de5aee82ea2447224dc23f065ff4cc5791bb3b506615957a6ba8128 \ + --hash=sha256:92e8cfe8bd7dd86eac0a677499894862cd5cc2fd74de917daa881d00871ac8e7 \ + --hash=sha256:9394c7d5a7565ac5f7d9ba38b2617448eba384d7b107b262d63890079fad77ca \ + --hash=sha256:9495d78f52c804b5ec8878b5b8c7873aa8e63db9cd9ee387ff2db3fffe4df784 \ + --hash=sha256:9873bf7c1f2a6330bdfe8621e7ce64b725784f9f0c3a6a55c3047af5849f920e \ + --hash=sha256:9babb7818fdd71394e576cf26c5452df77a355eac1a27ddfa24096665a27f8fd \ + --hash=sha256:9e8776dac9e660c22241b6587fae51a67b4b0147daa4d176b172c3ff768ad736 \ + --hash=sha256:9ed64e5083fa806709e74fc5ea067dfef9090e5b7a2320a49be3c9df3583a2d8 \ + --hash=sha256:9f2c4cc63be3ef43c0221861177cee5d14b505cd4d4599a89e2cd273c4d3542a \ + --hash=sha256:9f40642a140c0c8649987027867242b801486865277cbabc8c6059ddef16dc8b \ + --hash=sha256:af84e8e99f1a82cea149e253014ea9dc89f75b82c87bb6c7242203186f465129 \ + --hash=sha256:b9c79af2c3058430d911ff1a5b2b96bbfe8da47d5ed961639ce4681886614e70 \ + --hash=sha256:c52fded6383f7e20eaf70a60aeddd796b3677c3ad2922c801be330db62778e05 \ + --hash=sha256:cbb8e769d4cac884bb28e3ff620ef1001b75588a5c83c9c9f1fdc9afbe7f29b0 \ + --hash=sha256:d84c40bdb8674c29fa192373498b6cb1e84f882889d21a471b45d1f868d8d44b \ + --hash=sha256:db5597a4c7353b2e5fb05a8e6cb74b56a4658a2b7bf3cb6b1821ae7e7fd6eaa0 \ + --hash=sha256:e22801b61613ebdebf7deb18b507919e107547a1d39a3b57f5f855032dd7cfb8 \ + --hash=sha256:e34da95e29daf8a71cb2841fd55df0511539a6cdf33e6f77c1e95e44006b9b46 \ + --hash=sha256:e46710a240a41d594953012213ea8ca398cd2448fbc5d0f1be8160b5511104a0 \ + --hash=sha256:e94eb5fa32a8a9f9bf991f424f002913e3dd7c699ef552db9b14ba6a76a6313b \ + --hash=sha256:ec13b7105117dbc9afd023300fb9954d72ca855c274fe563e72428ece10191c0 \ + --hash=sha256:ed570874e88f213437f5cf758f9ef26cbfc3f336d889b1e592ee11283bb8d1c7 \ + --hash=sha256:ed957044e368ed295257ae3d212b95456bd9756df490e1ac4538857f67531fcc \ + --hash=sha256:ef648d2c690703501714588b2ba640facd50fd16548133b11b2859e8655a69da \ + --hash=sha256:efc9e51c3e595267ff84adf56e9b357db89ab2279d7e375ffcaf8f678606f3d9 \ + --hash=sha256:f736ab8036796f5a119ff8211deda416f8c15ce03776db704a7a4e17381cb2ef \ + --hash=sha256:f7a24ea78de345cfa7f6a8d3bde8b242c7fac27f2bd78fa23474ca38dfaeeab9 \ + --hash=sha256:f7de12fa0eee6234de9a9ce0ffcfa6ce97361db7a50b09b65c63ac58e5f22fc7 \ + --hash=sha256:f9b55038b5c6c47559aa33626d8ecd092f354e23de3c6975e4bb205df128a2a0 \ + --hash=sha256:fd4b5e2ee4e60425711ec65c33add4e7a626adef79d66f62ba0acfd493af282d + # via paramiko +distro==1.9.0 \ + --hash=sha256:2fa77c6fd8940f116ee1d6b94a2f90b13b5ea8d019b98bc8bafdcabcdd9bdbed \ + --hash=sha256:7bffd925d65168f85027d8da9af6bddab658135b840670a223589bc0c8ef02b2 + # via -r requirements.in.ftest +filelock==3.19.1 \ + --hash=sha256:66eda1888b0171c998b35be2bcc0f6d75c388a7ce20c3f3f37aa8e96c2dddf58 \ + --hash=sha256:d38e30481def20772f5baf097c122c3babc4fcdb7e14e57049eb9d88c6dc017d + # via torch +fsspec==2025.9.0 \ + --hash=sha256:19fd429483d25d28b65ec68f9f4adc16c17ea2c7c7bf54ec61360d478fb19c19 \ + --hash=sha256:530dc2a2af60a414a832059574df4a6e10cce927f6f4a78209390fe38955cfb7 + # via torch +invoke==2.2.0 \ + --hash=sha256:6ea924cc53d4f78e3d98bc436b08069a03077e6f85ad1ddaa8a116d7dad15820 \ + --hash=sha256:ee6cbb101af1a859c7fe84f2a264c059020b0cb7fe3535f9424300ab568f6bd5 + # via paramiko +jinja2==3.1.6 \ + --hash=sha256:0137fb05990d35f1275a587e9aee6d56da821fc83491a0fb838183be43f66d6d \ + --hash=sha256:85ece4451f492d0c13c5dd7c13a64681a86afae63a5f347908daf103ce6d2f67 + # via + # avocado-framework-plugin-result-html + # torch +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 +mpmath==1.3.0 \ + --hash=sha256:7a28eb2a9774d00c7bc92411c19a89209d5da7c4c9a9e227be8330a23a25b91f \ + --hash=sha256:a0b2b9fe80bbcd81a6647ff13108738cfb482d481d826cc0e02f5b35e5c88d2c + # via sympy +networkx==3.5 \ + --hash=sha256:0030d386a9a06dee3565298b4a734b68589749a544acbb6c412dc9e2489ec6ec \ + --hash=sha256:d4c6f9cf81f52d69230866796b82afbccdec3db7ae4fbd1b65ea750feed50037 + # via torch +nvidia-cublas-cu12==12.8.4.1 \ + --hash=sha256:47e9b82132fa8d2b4944e708049229601448aaad7e6f296f630f2d1a32de35af \ + --hash=sha256:8ac4e771d5a348c551b2a426eda6193c19aa630236b418086020df5ba9667142 \ + --hash=sha256:b86f6dd8935884615a0683b663891d43781b819ac4f2ba2b0c9604676af346d0 + # via + # nvidia-cudnn-cu12 + # nvidia-cusolver-cu12 + # torch +nvidia-cuda-cupti-cu12==12.8.90 \ + --hash=sha256:4412396548808ddfed3f17a467b104ba7751e6b58678a4b840675c56d21cf7ed \ + --hash=sha256:bb479dcdf7e6d4f8b0b01b115260399bf34154a1a2e9fe11c85c517d87efd98e \ + --hash=sha256:ea0cb07ebda26bb9b29ba82cda34849e73c166c18162d3913575b0c9db9a6182 + # via torch +nvidia-cuda-nvrtc-cu12==12.8.93 \ + --hash=sha256:7a4b6b2904850fe78e0bd179c4b655c404d4bb799ef03ddc60804247099ae909 \ + --hash=sha256:a7756528852ef889772a84c6cd89d41dfa74667e24cca16bb31f8f061e3e9994 \ + --hash=sha256:fc1fec1e1637854b4c0a65fb9a8346b51dd9ee69e61ebaccc82058441f15bce8 + # via torch +nvidia-cuda-runtime-cu12==12.8.90 \ + --hash=sha256:52bf7bbee900262ffefe5e9d5a2a69a30d97e2bc5bb6cc866688caa976966e3d \ + --hash=sha256:adade8dcbd0edf427b7204d480d6066d33902cab2a4707dcfc48a2d0fd44ab90 \ + --hash=sha256:c0c6027f01505bfed6c3b21ec546f69c687689aad5f1a377554bc6ca4aa993a8 + # via torch +nvidia-cudnn-cu12==9.10.2.21 \ + --hash=sha256:949452be657fa16687d0930933f032835951ef0892b37d2d53824d1a84dc97a8 \ + --hash=sha256:c6288de7d63e6cf62988f0923f96dc339cea362decb1bf5b3141883392a7d65e \ + --hash=sha256:c9132cc3f8958447b4910a1720036d9eff5928cc3179b0a51fb6d167c6cc87d8 + # via torch +nvidia-cufft-cu12==11.3.3.83 \ + --hash=sha256:4d2dd21ec0b88cf61b62e6b43564355e5222e4a3fb394cac0db101f2dd0d4f74 \ + --hash=sha256:7a64a98ef2a7c47f905aaf8931b69a3a43f27c55530c698bb2ed7c75c0b42cb7 \ + --hash=sha256:848ef7224d6305cdb2a4df928759dca7b1201874787083b6e7550dd6765ce69a + # via torch +nvidia-cufile-cu12==1.13.1.3 \ + --hash=sha256:1d069003be650e131b21c932ec3d8969c1715379251f8d23a1860554b1cb24fc \ + --hash=sha256:4beb6d4cce47c1a0f1013d72e02b0994730359e17801d395bdcbf20cfb3bb00a + # via torch +nvidia-curand-cu12==10.3.9.90 \ + --hash=sha256:b32331d4f4df5d6eefa0554c565b626c7216f87a06a4f56fab27c3b68a830ec9 \ + --hash=sha256:dfab99248034673b779bc6decafdc3404a8a6f502462201f2f31f11354204acd \ + --hash=sha256:f149a8ca457277da854f89cf282d6ef43176861926c7ac85b2a0fbd237c587ec + # via torch +nvidia-cusolver-cu12==11.7.3.90 \ + --hash=sha256:4376c11ad263152bd50ea295c05370360776f8c3427b30991df774f9fb26c450 \ + --hash=sha256:4a550db115fcabc4d495eb7d39ac8b58d4ab5d8e63274d3754df1c0ad6a22d34 \ + --hash=sha256:db9ed69dbef9715071232caa9b69c52ac7de3a95773c2db65bdba85916e4e5c0 + # via torch +nvidia-cusparse-cu12==12.5.8.93 \ + --hash=sha256:1ec05d76bbbd8b61b06a80e1eaf8cf4959c3d4ce8e711b65ebd0443bb0ebb13b \ + --hash=sha256:9a33604331cb2cac199f2e7f5104dfbb8a5a898c367a53dfda9ff2acb6b6b4dd \ + --hash=sha256:9b6c161cb130be1a07a27ea6923df8141f3c295852f4b260c65f18f3e0a091dc + # via + # nvidia-cusolver-cu12 + # torch +nvidia-cusparselt-cu12==0.7.1 \ + --hash=sha256:8878dce784d0fac90131b6817b607e803c36e629ba34dc5b433471382196b6a5 \ + --hash=sha256:f1bb701d6b930d5a7cea44c19ceb973311500847f81b634d802b7b539dc55623 \ + --hash=sha256:f67fbb5831940ec829c9117b7f33807db9f9678dc2a617fbe781cac17b4e1075 + # via torch +nvidia-nccl-cu12==2.27.3 \ + --hash=sha256:9ddf1a245abc36c550870f26d537a9b6087fb2e2e3d6e0ef03374c6fd19d984f \ + --hash=sha256:adf27ccf4238253e0b826bce3ff5fa532d65fc42322c8bfdfaf28024c0fbe039 + # via torch +nvidia-nvjitlink-cu12==12.8.93 \ + --hash=sha256:81ff63371a7ebd6e6451970684f916be2eab07321b73c9d244dc2b4da7f73b88 \ + --hash=sha256:adccd7161ace7261e01bb91e44e88da350895c270d23f744f0820c818b7229e7 \ + --hash=sha256:bd93fbeeee850917903583587f4fc3a4eafa022e34572251368238ab5e6bd67f + # via + # nvidia-cufft-cu12 + # nvidia-cusolver-cu12 + # nvidia-cusparse-cu12 + # torch +nvidia-nvtx-cu12==12.8.90 \ + --hash=sha256:5b17e2001cc0d751a5bc2c6ec6d26ad95913324a4adb86788c944f8ce9ba441f \ + --hash=sha256:619c8304aedc69f02ea82dd244541a83c3d9d40993381b3b590f1adaed3db41e \ + --hash=sha256:d7ad891da111ebafbf7e015d34879f7112832fc239ff0d7d776b6cb685274615 + # via torch +paramiko==4.0.0 \ + --hash=sha256:0e20e00ac666503bf0b4eda3b6d833465a2b7aff2e2b3d79a8bba5ef144ee3b9 \ + --hash=sha256:6a25f07b380cc9c9a88d2b920ad37167ac4667f8d9886ccebd8f90f654b5d69f + # via -r requirements.in.ftest +pycparser==2.23 \ + --hash=sha256:78816d4f24add8f10a06d6f05b4d424ad9e96cfebf68a4ddc99c65c0720d00c2 \ + --hash=sha256:e5c6e8d3fbad53479cab09ac03729e0a9faf2bee3db8208a550daf5af81a5934 + # via cffi +pynacl==1.6.0 \ + --hash=sha256:04f20784083014e265ad58c1b2dd562c3e35864b5394a14ab54f5d150ee9e53e \ + --hash=sha256:10d755cf2a455d8c0f8c767a43d68f24d163b8fe93ccfaabfa7bafd26be58d73 \ + --hash=sha256:140373378e34a1f6977e573033d1dd1de88d2a5d90ec6958c9485b2fd9f3eb90 \ + --hash=sha256:16c60daceee88d04f8d41d0a4004a7ed8d9a5126b997efd2933e08e93a3bd850 \ + --hash=sha256:16dd347cdc8ae0b0f6187a2608c0af1c8b7ecbbe6b4a06bff8253c192f696990 \ + --hash=sha256:25720bad35dfac34a2bcdd61d9e08d6bfc6041bebc7751d9c9f2446cf1e77d64 \ + --hash=sha256:2d6cd56ce4998cb66a6c112fda7b1fdce5266c9f05044fa72972613bef376d15 \ + --hash=sha256:347dcddce0b4d83ed3f32fd00379c83c425abee5a9d2cd0a2c84871334eaff64 \ + --hash=sha256:4853c154dc16ea12f8f3ee4b7e763331876316cc3a9f06aeedf39bcdca8f9995 \ + --hash=sha256:49c336dd80ea54780bcff6a03ee1a476be1612423010472e60af83452aa0f442 \ + --hash=sha256:4a25cfede801f01e54179b8ff9514bd7b5944da560b7040939732d1804d25419 \ + --hash=sha256:51fed9fe1bec9e7ff9af31cd0abba179d0e984a2960c77e8e5292c7e9b7f7b5d \ + --hash=sha256:536703b8f90e911294831a7fbcd0c062b837f3ccaa923d92a6254e11178aaf42 \ + --hash=sha256:5789f016e08e5606803161ba24de01b5a345d24590a80323379fc4408832d290 \ + --hash=sha256:6b08eab48c9669d515a344fb0ef27e2cbde847721e34bba94a343baa0f33f1f4 \ + --hash=sha256:6b393bc5e5a0eb86bb85b533deb2d2c815666665f840a09e0aa3362bb6088736 \ + --hash=sha256:84709cea8f888e618c21ed9a0efdb1a59cc63141c403db8bf56c469b71ad56f2 \ + --hash=sha256:8bfaa0a28a1ab718bad6239979a5a57a8d1506d0caf2fba17e524dbb409441cf \ + --hash=sha256:bbcc4452a1eb10cd5217318c822fde4be279c9de8567f78bad24c773c21254f8 \ + --hash=sha256:cb36deafe6e2bce3b286e5d1f3e1c246e0ccdb8808ddb4550bb2792f2df298f2 \ + --hash=sha256:cf831615cc16ba324240de79d925eacae8265b7691412ac6b24221db157f6bd1 \ + --hash=sha256:dcdeb41c22ff3c66eef5e63049abf7639e0db4edee57ba70531fc1b6b133185d \ + --hash=sha256:dea103a1afcbc333bc0e992e64233d360d393d1e63d0bc88554f572365664348 \ + --hash=sha256:ef214b90556bb46a485b7da8258e59204c244b1b5b576fb71848819b468c44a7 \ + --hash=sha256:f3482abf0f9815e7246d461fab597aa179b7524628a4bc36f86a7dc418d2608d \ + --hash=sha256:f46386c24a65383a9081d68e9c2de909b1834ec74ff3013271f1bca9c2d233eb \ + --hash=sha256:f4b3824920e206b4f52abd7de621ea7a44fd3cb5c8daceb7c3612345dfc54f2e + # via paramiko +pyyaml==6.0.2 \ + --hash=sha256:01179a4a8559ab5de078078f37e5c1a30d76bb88519906844fd7bdea1b7729ff \ + --hash=sha256:0833f8694549e586547b576dcfaba4a6b55b9e96098b36cdc7ebefe667dfed48 \ + --hash=sha256:0a9a2848a5b7feac301353437eb7d5957887edbf81d56e903999a75a3d743086 \ + --hash=sha256:0b69e4ce7a131fe56b7e4d770c67429700908fc0752af059838b1cfb41960e4e \ + --hash=sha256:0ffe8360bab4910ef1b9e87fb812d8bc0a308b0d0eef8c8f44e0254ab3b07133 \ + --hash=sha256:11d8f3dd2b9c1207dcaf2ee0bbbfd5991f571186ec9cc78427ba5bd32afae4b5 \ + --hash=sha256:17e311b6c678207928d649faa7cb0d7b4c26a0ba73d41e99c4fff6b6c3276484 \ + --hash=sha256:1e2120ef853f59c7419231f3bf4e7021f1b936f6ebd222406c3b60212205d2ee \ + --hash=sha256:1f71ea527786de97d1a0cc0eacd1defc0985dcf6b3f17bb77dcfc8c34bec4dc5 \ + --hash=sha256:23502f431948090f597378482b4812b0caae32c22213aecf3b55325e049a6c68 \ + --hash=sha256:24471b829b3bf607e04e88d79542a9d48bb037c2267d7927a874e6c205ca7e9a \ + --hash=sha256:29717114e51c84ddfba879543fb232a6ed60086602313ca38cce623c1d62cfbf \ + --hash=sha256:2e99c6826ffa974fe6e27cdb5ed0021786b03fc98e5ee3c5bfe1fd5015f42b99 \ + --hash=sha256:39693e1f8320ae4f43943590b49779ffb98acb81f788220ea932a6b6c51004d8 \ + --hash=sha256:3ad2a3decf9aaba3d29c8f537ac4b243e36bef957511b4766cb0057d32b0be85 \ + --hash=sha256:3b1fdb9dc17f5a7677423d508ab4f243a726dea51fa5e70992e59a7411c89d19 \ + --hash=sha256:41e4e3953a79407c794916fa277a82531dd93aad34e29c2a514c2c0c5fe971cc \ + --hash=sha256:43fa96a3ca0d6b1812e01ced1044a003533c47f6ee8aca31724f78e93ccc089a \ + --hash=sha256:50187695423ffe49e2deacb8cd10510bc361faac997de9efef88badc3bb9e2d1 \ + --hash=sha256:5ac9328ec4831237bec75defaf839f7d4564be1e6b25ac710bd1a96321cc8317 \ + --hash=sha256:5d225db5a45f21e78dd9358e58a98702a0302f2659a3c6cd320564b75b86f47c \ + --hash=sha256:6395c297d42274772abc367baaa79683958044e5d3835486c16da75d2a694631 \ + --hash=sha256:688ba32a1cffef67fd2e9398a2efebaea461578b0923624778664cc1c914db5d \ + --hash=sha256:68ccc6023a3400877818152ad9a1033e3db8625d899c72eacb5a668902e4d652 \ + --hash=sha256:70b189594dbe54f75ab3a1acec5f1e3faa7e8cf2f1e08d9b561cb41b845f69d5 \ + --hash=sha256:797b4f722ffa07cc8d62053e4cff1486fa6dc094105d13fea7b1de7d8bf71c9e \ + --hash=sha256:7c36280e6fb8385e520936c3cb3b8042851904eba0e58d277dca80a5cfed590b \ + --hash=sha256:7e7401d0de89a9a855c839bc697c079a4af81cf878373abd7dc625847d25cbd8 \ + --hash=sha256:80bab7bfc629882493af4aa31a4cfa43a4c57c83813253626916b8c7ada83476 \ + --hash=sha256:82d09873e40955485746739bcb8b4586983670466c23382c19cffecbf1fd8706 \ + --hash=sha256:8388ee1976c416731879ac16da0aff3f63b286ffdd57cdeb95f3f2e085687563 \ + --hash=sha256:8824b5a04a04a047e72eea5cec3bc266db09e35de6bdfe34c9436ac5ee27d237 \ + --hash=sha256:8b9c7197f7cb2738065c481a0461e50ad02f18c78cd75775628afb4d7137fb3b \ + --hash=sha256:9056c1ecd25795207ad294bcf39f2db3d845767be0ea6e6a34d856f006006083 \ + --hash=sha256:936d68689298c36b53b29f23c6dbb74de12b4ac12ca6cfe0e047bedceea56180 \ + --hash=sha256:9b22676e8097e9e22e36d6b7bda33190d0d400f345f23d4065d48f4ca7ae0425 \ + --hash=sha256:a4d3091415f010369ae4ed1fc6b79def9416358877534caf6a0fdd2146c87a3e \ + --hash=sha256:a8786accb172bd8afb8be14490a16625cbc387036876ab6ba70912730faf8e1f \ + --hash=sha256:a9f8c2e67970f13b16084e04f134610fd1d374bf477b17ec1599185cf611d725 \ + --hash=sha256:bc2fa7c6b47d6bc618dd7fb02ef6fdedb1090ec036abab80d4681424b84c1183 \ + --hash=sha256:c70c95198c015b85feafc136515252a261a84561b7b1d51e3384e0655ddf25ab \ + --hash=sha256:cc1c1159b3d456576af7a3e4d1ba7e6924cb39de8f67111c735f6fc832082774 \ + --hash=sha256:ce826d6ef20b1bc864f0a68340c8b3287705cae2f8b4b1d932177dcc76721725 \ + --hash=sha256:d584d9ec91ad65861cc08d42e834324ef890a082e591037abe114850ff7bbc3e \ + --hash=sha256:d7fded462629cfa4b685c5416b949ebad6cec74af5e2d42905d41e257e0869f5 \ + --hash=sha256:d84a1718ee396f54f3a086ea0a66d8e552b2ab2017ef8b420e92edbc841c352d \ + --hash=sha256:d8e03406cac8513435335dbab54c0d385e4a49e4945d2909a581c83647ca0290 \ + --hash=sha256:e10ce637b18caea04431ce14fabcf5c64a1c61ec9c56b071a4b7ca131ca52d44 \ + --hash=sha256:ec031d5d2feb36d1d1a24380e4db6d43695f3748343d99434e6f5f9156aaa2ed \ + --hash=sha256:ef6107725bd54b262d6dedcc2af448a266975032bc85ef0172c5f059da6325b4 \ + --hash=sha256:efdca5630322a10774e8e98e1af481aad470dd62c3170801852d752aa7a783ba \ + --hash=sha256:f753120cb8181e736c57ef7636e83f31b9c0d1722c516f7e86cf15b7aa57ff12 \ + --hash=sha256:ff3824dc5261f50c9b0dfb3be22b4567a6f938ccce4587b38952d85fd9e9afe4 + # via + # avocado-framework-plugin-varianter-yaml-to-mux + # clustershell +sympy==1.14.0 \ + --hash=sha256:d3d3fe8df1e5a0b42f0e7bdf50541697dbe7d23746e894990c030e2b05e72517 \ + --hash=sha256:e091cc3e99d2141a0ba2847328f5479b05d94a6635cb96148ccb3f34671bd8f5 + # via torch +torch==2.8.0 \ + --hash=sha256:06fcee8000e5c62a9f3e52a688b9c5abb7c6228d0e56e3452983416025c41381 \ + --hash=sha256:0be92c08b44009d4131d1ff7a8060d10bafdb7ddcb7359ef8d8c5169007ea905 \ + --hash=sha256:1a62a1ec4b0498930e2543535cf70b1bef8c777713de7ceb84cd79115f553767 \ + --hash=sha256:220a06fd7af8b653c35d359dfe1aaf32f65aa85befa342629f716acb134b9710 \ + --hash=sha256:2b2f96814e0345f5a5aed9bf9734efa913678ed19caf6dc2cddb7930672d6128 \ + --hash=sha256:2f4ac52f0130275d7517b03a33d2493bab3693c83dcfadf4f81688ea82147d2e \ + --hash=sha256:5128fe752a355d9308e56af1ad28b15266fe2da5948660fad44de9e3a9e36e8c \ + --hash=sha256:5ae0524688fb6707c57a530c2325e13bb0090b745ba7b4a2cd6a3ce262572916 \ + --hash=sha256:619c2869db3ada2c0105487ba21b5008defcc472d23f8b80ed91ac4a380283b0 \ + --hash=sha256:65616ca8ec6f43245e1f5f296603e33923f4c30f93d65e103d9e50c25b35150b \ + --hash=sha256:659df54119ae03e83a800addc125856effda88b016dfc54d9f65215c3975be16 \ + --hash=sha256:7b677e17f5a3e69fdef7eb3b9da72622f8d322692930297e4ccb52fefc6c8211 \ + --hash=sha256:83c13411a26fac3d101fe8035a6b0476ae606deb8688e904e796a3534c197def \ + --hash=sha256:89aa9ee820bb39d4d72b794345cccef106b574508dd17dbec457949678c76011 \ + --hash=sha256:8c7ef765e27551b2fbfc0f41bcf270e1292d9bf79f8e0724848b1682be6e80aa \ + --hash=sha256:8f0a9d617a66509ded240add3754e462430a6c1fc5589f86c17b433dd808f97a \ + --hash=sha256:a3f16a58a9a800f589b26d47ee15aca3acf065546137fc2af039876135f4c760 \ + --hash=sha256:a7242b86f42be98ac674b88a4988643b9bc6145437ec8f048fea23f72feb5eca \ + --hash=sha256:b2aca0939fb7e4d842561febbd4ffda67a8e958ff725c1c27e244e85e982173c \ + --hash=sha256:c12fa219f51a933d5f80eeb3a7a5d0cbe9168c0a14bbb4055f1979431660879b \ + --hash=sha256:da6afa31c13b669d4ba49d8a2169f0db2c3ec6bec4af898aa714f401d4c38904 \ + --hash=sha256:e2fab4153768d433f8ed9279c8133a114a034a61e77a3a104dcdf54388838705 \ + --hash=sha256:e8e5bf982e87e2b59d932769938b698858c64cc53753894be25629bdf5cf2f46 \ + --hash=sha256:e9f071f5b52a9f6970dc8a919694b27a91ae9dc08898b2b988abbef5eddfd1ae + # via -r requirements.in.ftest +triton==3.4.0 \ + --hash=sha256:00be2964616f4c619193cb0d1b29a99bd4b001d7dc333816073f92cf2a8ccdeb \ + --hash=sha256:31c1d84a5c0ec2c0f8e8a072d7fd150cab84a9c239eaddc6706c081bfae4eb04 \ + --hash=sha256:7936b18a3499ed62059414d7df563e6c163c5e16c3773678a3ee3d417865035d \ + --hash=sha256:7b70f5e6a41e52e48cfc087436c8a28c17ff98db369447bcaff3b887a3ab4467 \ + --hash=sha256:7ff2785de9bc02f500e085420273bb5cc9c9bb767584a4aa28d6e360cec70128 \ + --hash=sha256:98e5c1442eaeabae2e2452ae765801bd53cd4ce873cab0d1bdd59a32ab2d9397 + # via torch +typing-extensions==4.15.0 \ + --hash=sha256:0cea48d173cc12fa28ecabc3b837ea3cf6f38c6d1136f85cbaaf598984861466 \ + --hash=sha256:f0fa19c6845758ab08074a0cfa8b7aecb71c999ca73d62883bc25cc018c4e548 + # via torch + +# The following packages are considered to be unsafe in a requirements file: +setuptools==80.9.0 \ + --hash=sha256:062d34222ad13e0cc312a4c02d73f059e86a4acbfbdea8f8f76b28c99f306922 \ + --hash=sha256:f36b47402ecde768dbfafc46e8e4207b4360c654f1f3bb84475f0a28628fb19c + # via + # avocado-framework + # triton diff --git a/src/tests/ftest/cart/ctl/ctl_five_node.py b/src/tests/ftest/cart/ctl/ctl_five_node.py index d8cf310c694..2ec93be801b 100644 --- a/src/tests/ftest/cart/ctl/ctl_five_node.py +++ b/src/tests/ftest/cart/ctl/ctl_five_node.py @@ -1,5 +1,6 @@ ''' (C) Copyright 2018-2023 Intel Corporation. + (C) Copyright 2025 Hewlett Packard Enterprise Development LP SPDX-License-Identifier: BSD-2-Clause-Patent ''' @@ -27,7 +28,7 @@ def test_cart_ctl_five_node(self): srv_rtn = self.launch_cmd_bg(srvcmd) # pylint: disable=broad-except except Exception as error: - self.print("Exception in launching server : {}".format(error)) + self.log.info("Exception in launching server : %s", error) self.fail("Test failed.\n") # Verify the server is still running. diff --git a/src/tests/ftest/cart/ctl/ctl_one_node.py b/src/tests/ftest/cart/ctl/ctl_one_node.py index bf260960592..c2389f91d74 100644 --- a/src/tests/ftest/cart/ctl/ctl_one_node.py +++ b/src/tests/ftest/cart/ctl/ctl_one_node.py @@ -1,5 +1,6 @@ ''' (C) Copyright 2018-2023 Intel Corporation. + (C) Copyright 2025 Hewlett Packard Enterprise Development LP SPDX-License-Identifier: BSD-2-Clause-Patent ''' @@ -27,7 +28,7 @@ def test_cart_ctl_one_node(self): srv_rtn = self.launch_cmd_bg(srvcmd) # pylint: disable=broad-except except Exception as error: - self.print("Exception in launching server : {}".format(error)) + self.log.info("Exception in launching server : %s", error) self.fail("Test failed.\n") # Verify the server is still running. diff --git a/src/tests/ftest/cart/iv/iv_one_node.py b/src/tests/ftest/cart/iv/iv_one_node.py index 42b2b8380de..11eaf73ce3e 100644 --- a/src/tests/ftest/cart/iv/iv_one_node.py +++ b/src/tests/ftest/cart/iv/iv_one_node.py @@ -1,5 +1,6 @@ ''' (C) Copyright 2018-2023 Intel Corporation. + (C) Copyright 2025 Hewlett Packard Enterprise Development LP SPDX-License-Identifier: BSD-2-Clause-Patent ''' @@ -88,18 +89,18 @@ class CartIvOneNodeTest(CartTest): def _verify_action(self, action): """Verify the action.""" if (('operation' not in action) or ('rank' not in action) or ('key' not in action)): - self.print("Error happened during action check") + self.log.info("Error happened during action check") raise ValueError( "Each action must contain an operation, rank, and key") if len(action['key']) != 2: - self.print("Error key should be tuple of (rank, idx)") + self.log.info("Error key should be tuple of (rank, idx)") raise ValueError("key should be a tuple of (rank, idx)") def _verify_fetch_operation(self, action): """Verify the fetch operation.""" if (('return_code' not in action) or ('expected_value' not in action)): - self.print("Error: fetch operation was malformed") + self.log.info("Error: fetch operation was malformed") raise ValueError("Fetch operation malformed") def _iv_test_actions(self, cmd, actions): @@ -135,7 +136,7 @@ def _iv_test_actions(self, cmd, actions): log_path) clicmd += command - self.print("\nClient cmd : %s\n" % clicmd) + self.log.info("Client cmd : %s", clicmd) cli_rtn = subprocess.call(shlex.split(clicmd)) if cli_rtn != 0: @@ -153,11 +154,11 @@ def _iv_test_actions(self, cmd, actions): # codecs.open(log_file, "w", "unicode").write('') # DEBUGGING: dump contents of JSON file to screen - with open(log_path, 'r') as file: - print(file.read()) + with open(log_path, 'r', encoding='utf-8') as file: + self.log.info(file.read()) # Read the result into test_result and remove the temp file - with open(log_path, 'r') as log_file: + with open(log_path, 'r', encoding='utf-8') as log_file: test_result = json.load(log_file) os.close(log_fd) @@ -197,7 +198,7 @@ def _iv_test_actions(self, cmd, actions): clicmd += command - self.print("\nClient cmd : %s\n" % clicmd) + self.log.info("Client cmd : %s", clicmd) cli_rtn = subprocess.call(shlex.split(clicmd)) if cli_rtn != 0: @@ -214,7 +215,7 @@ def _iv_test_actions(self, cmd, actions): command = "{!s} -s '{!s}'".format(command, "none") clicmd += command - self.print("\nClient cmd : %s\n" % clicmd) + self.log.info("Client cmd : %s", clicmd) cli_rtn = subprocess.call(shlex.split(clicmd)) if cli_rtn != 0: @@ -234,7 +235,7 @@ def _iv_test_actions(self, cmd, actions): .format(command, 0) clicmd += command - self.print("\nClient cmd : %s\n" % clicmd) + self.log.info("Client cmd : %s", clicmd) cli_rtn = subprocess.call(shlex.split(clicmd)) if cli_rtn != 0: @@ -246,7 +247,7 @@ def _iv_test_actions(self, cmd, actions): command = " {!s} -o '{!s}' -r '{!s}' ".format(command, operation, rank) clicmd += command - self.print("\nClient cmd : %s\n" % clicmd) + self.log.info("Client cmd : %s", clicmd) cli_rtn = subprocess.call(shlex.split(clicmd)) if cli_rtn != 0: @@ -268,7 +269,7 @@ def test_cart_iv_one_node(self): srv_rtn = self.launch_cmd_bg(srvcmd) # pylint: disable=broad-except except Exception as error: - self.print("Exception in launching server : {}".format(error)) + self.log.info("Exception in launching server : %s", error) self.fail("Test failed.\n") # Verify the server is still running. @@ -481,7 +482,7 @@ def test_cart_iv_one_node(self): except ValueError as exception: failed = True traceback.print_stack() - self.print("TEST FAILED: %s" % str(exception)) + self.log.info("TEST FAILED: %s", exception) # Shutdown Servers @@ -493,25 +494,25 @@ def test_cart_iv_one_node(self): # Request each server shut down gracefully for rank in reversed(list(range(1, int(srv_ppn) * num_servers))): clicmdt = clicmd + " -o shutdown -r " + str(rank) - self.print("\nClient cmd : {}\n".format(clicmdt)) + self.log.info("Client cmd : %s", clicmdt) try: subprocess.call(shlex.split(clicmdt)) # pylint: disable=broad-except except Exception as error: failed = True - self.print("Exception in launching client : {}".format(error)) + self.log.info("Exception in launching client : %s", error) time.sleep(1) # Shutdown rank 0 separately clicmd += " -o shutdown -r 0" - self.print("\nClient cmd : {}\n".format(clicmd)) + self.log.info("Client cmd : %s", clicmd) try: subprocess.call(shlex.split(clicmd)) # pylint: disable=broad-except except Exception as error: failed = True - self.print("Exception in launching client : {}".format(error)) + self.log.info("Exception in launching client : %s", error) # wait for servers to finish shutting down time.sleep(2) diff --git a/src/tests/ftest/cart/iv/iv_two_node.py b/src/tests/ftest/cart/iv/iv_two_node.py index 0ca61fe10b1..980d8fcb07f 100644 --- a/src/tests/ftest/cart/iv/iv_two_node.py +++ b/src/tests/ftest/cart/iv/iv_two_node.py @@ -1,5 +1,6 @@ ''' (C) Copyright 2018-2023 Intel Corporation. + (C) Copyright 2025 Hewlett Packard Enterprise Development LP SPDX-License-Identifier: BSD-2-Clause-Patent ''' @@ -74,18 +75,18 @@ class CartIvTwoNodeTest(CartTest): def _verify_action(self, action): """Verify the action.""" if (('operation' not in action) or ('rank' not in action) or ('key' not in action)): - self.print("Error happened during action check") + self.log.info("Error happened during action check") raise ValueError( "Each action must contain an operation, rank, and key") if len(action['key']) != 2: - self.print("Error key should be tuple of (rank, idx)") + self.log.info("Error key should be tuple of (rank, idx)") raise ValueError("key should be a tuple of (rank, idx)") def _verify_fetch_operation(self, action): """Verify fetch operation.""" if (('return_code' not in action) or ('expected_value' not in action)): - self.print("Error: fetch operation was malformed") + self.log.info("Error: fetch operation was malformed") raise ValueError("Fetch operation malformed") def _iv_test_actions(self, cmd, actions): @@ -118,7 +119,7 @@ def _iv_test_actions(self, cmd, actions): log_path) clicmd += command - self.print("\nClient cmd : %s\n" % clicmd) + self.log.info("Client cmd : %s", clicmd) cli_rtn = subprocess.call(shlex.split(clicmd)) if cli_rtn != 0: @@ -161,7 +162,7 @@ def _iv_test_actions(self, cmd, actions): action['value']) clicmd += command - self.print("\nClient cmd : %s\n" % clicmd) + self.log.info("Client cmd : %s", clicmd) cli_rtn = subprocess.call(shlex.split(clicmd)) if cli_rtn != 0: @@ -174,7 +175,7 @@ def _iv_test_actions(self, cmd, actions): command, operation, rank, key_rank, key_idx) clicmd += command - self.print("\nClient cmd : %s\n" % clicmd) + self.log.info("Client cmd : %s", clicmd) cli_rtn = subprocess.call(shlex.split(clicmd)) if cli_rtn != 0: @@ -197,7 +198,7 @@ def test_cart_iv_two_node(self): srv_rtn = self.launch_cmd_bg(srvcmd) # pylint: disable=broad-except except Exception as error: - self.print("Exception in launching server : {}".format(error)) + self.log.info("Exception in launching server : %s", error) self.fail("Test failed.\n") # Verify the server is still running. @@ -237,7 +238,7 @@ def test_cart_iv_two_node(self): self._iv_test_actions(clicmd, actions) except ValueError as exception: failed = True - self.print("TEST FAILED: {}".format(exception)) + self.log.info("TEST FAILED: %s", exception) # Shutdown Servers num_servers = 2 @@ -248,25 +249,25 @@ def test_cart_iv_two_node(self): # Request each server shut down gracefully for rank in reversed(list(range(1, int(srv_ppn) * num_servers))): clicmdt = clicmd + " -o shutdown -r " + str(rank) - self.print("\nClient cmd : {}\n".format(clicmdt)) + self.log.info("Client cmd : %s", clicmdt) try: subprocess.call(shlex.split(clicmdt)) # pylint: disable=broad-except except Exception as error: failed = True - self.print("Exception in launching client : {}".format(error)) + self.log.info("Exception in launching client : %s", error) time.sleep(1) # Shutdown rank 0 separately clicmd += " -o shutdown -r 0" - self.print("\nClient cmd : {}\n".format(clicmd)) + self.log.info("Client cmd : %s", clicmd) try: subprocess.call(shlex.split(clicmd)) # pylint: disable=broad-except except Exception as error: failed = True - self.print("Exception in launching client : {}".format(error)) + self.log.info("Exception in launching client : %s", error) # Give some time for completion before forcing servers shut down time.sleep(2) diff --git a/src/tests/ftest/cart/no_pmix/multictx_one_node.py b/src/tests/ftest/cart/no_pmix/multictx_one_node.py index 14161f6123f..19387f1b1c1 100644 --- a/src/tests/ftest/cart/no_pmix/multictx_one_node.py +++ b/src/tests/ftest/cart/no_pmix/multictx_one_node.py @@ -1,5 +1,6 @@ ''' (C) Copyright 2018-2023 Intel Corporation. + (C) Copyright 2025 Hewlett Packard Enterprise Development LP SPDX-License-Identifier: BSD-2-Clause-Patent ''' @@ -25,14 +26,14 @@ def test_cart_no_pmix(self): """ cmd = self.params.get("tst_bin", '/run/tests/*/') - self.print("\nTest cmd : {}\n".format(cmd)) + self.log.info("Test cmd : %s", cmd) with subprocess.Popen([cmd], stdout=subprocess.PIPE) as proc: rc = self.wait_process(proc, 30) if rc != 0: - self.print("Error waiting for process.") - self.print("returning {}".format(rc)) + self.log.info("Error waiting for process.") + self.log.info("returning %s", rc) self.fail("Test failed.\n") - self.print("Finished waiting for {}".format(proc)) + self.log.info("Finished waiting for %s", proc) diff --git a/src/tests/ftest/cart/rpc/multisend_one_node.py b/src/tests/ftest/cart/rpc/multisend_one_node.py index b9d97390902..b526f615a3d 100644 --- a/src/tests/ftest/cart/rpc/multisend_one_node.py +++ b/src/tests/ftest/cart/rpc/multisend_one_node.py @@ -1,5 +1,6 @@ ''' (C) Copyright 2018-2023 Intel Corporation. + (C) Copyright 2025 Hewlett Packard Enterprise Development LP SPDX-License-Identifier: BSD-2-Clause-Patent ''' @@ -28,7 +29,7 @@ def test_cart_multisend(self): srv_rtn = self.launch_cmd_bg(srvcmd) # pylint: disable=broad-except except Exception as my_except: - self.print("Exception in launching server : {}".format(my_except)) + self.log.info("Exception in launching server : %s", my_except) self.fail("Test failed.\n") # Verify the server is still running. diff --git a/src/tests/ftest/cart/rpc/swim_notification.py b/src/tests/ftest/cart/rpc/swim_notification.py index 970631b74ce..5bf46e43108 100644 --- a/src/tests/ftest/cart/rpc/swim_notification.py +++ b/src/tests/ftest/cart/rpc/swim_notification.py @@ -1,5 +1,6 @@ ''' (C) Copyright 2018-2023 Intel Corporation. + (C) Copyright 2025 Hewlett Packard Enterprise Development LP SPDX-License-Identifier: BSD-2-Clause-Patent ''' @@ -29,7 +30,7 @@ def test_cart_rpc(self): srv_rtn = self.launch_cmd_bg(srvcmd) # pylint: disable=broad-except except Exception as error: - self.print("Exception in launching server : {}".format(error)) + self.log.info("Exception in launching server : %s", error) self.fail("Test failed.\n") # Verify the server is still running. @@ -51,8 +52,6 @@ def test_cart_rpc(self): # Verify the server(s) exited gracefully if not self.check_files(glob_pat, count=3, retries=4): - self.print("Didn't find completion file(s): '{}'. " - "This indicates not all CaRT binaries exited " - "gracefully. " - "Marking test pass while DAOS-7892 remains " - "unresolved.\n".format(glob_pat)) + self.log.info("Didn't find completion file(s): '%s'.", glob_pat) + self.log.info("This indicates not all CaRT binaries exited gracefully.") + self.log.info("Marking test pass while DAOS-7892 remains unresolved.") diff --git a/src/tests/ftest/cart/selftest/selftest_three_node.py b/src/tests/ftest/cart/selftest/selftest_three_node.py index a9f54bee628..d71766193c0 100644 --- a/src/tests/ftest/cart/selftest/selftest_three_node.py +++ b/src/tests/ftest/cart/selftest/selftest_three_node.py @@ -1,5 +1,6 @@ ''' (C) Copyright 2018-2023 Intel Corporation. + (C) Copyright 2025 Hewlett Packard Enterprise Development LP SPDX-License-Identifier: BSD-2-Clause-Patent ''' @@ -27,7 +28,7 @@ def test_cart_selftest_three_node(self): srv_rtn = self.launch_cmd_bg(srvcmd) # pylint: disable=broad-except except Exception as error: - self.print("Exception in launching server : {}".format(error)) + self.log.info("Exception in launching server : %s", error) self.fail("Test failed.\n") # Verify the server is still running. diff --git a/src/tests/ftest/cart/util/cart_utils.py b/src/tests/ftest/cart/util/cart_utils.py index 22f0cb5fa41..8e5e9eb0ccb 100644 --- a/src/tests/ftest/cart/util/cart_utils.py +++ b/src/tests/ftest/cart/util/cart_utils.py @@ -1,23 +1,22 @@ ''' (C) Copyright 2018-2024 Intel Corporation. + (C) Copyright 2025 Hewlett Packard Enterprise Development LP SPDX-License-Identifier: BSD-2-Clause-Patent ''' import glob -import logging import os import re import shlex import subprocess # nosec import time +from ClusterShell.NodeSet import NodeSet + import cart_logparse import cart_logtest from apricot import TestWithoutServers -from ClusterShell.NodeSet import NodeSet -from host_utils import get_local_host -from job_manager_utils import Orterun -from run_utils import stop_processes +from job_manager_utils import Orterun, stop_job_manager from write_host_file import write_host_file @@ -27,14 +26,13 @@ class CartTest(TestWithoutServers): def __init__(self, *args, **kwargs): """Initialize a CartTest object.""" super().__init__(*args, **kwargs) - self.stdout = logging.getLogger('avocado.test.stdout') - self.progress_log = logging.getLogger("progress") self.module_init = False self.module = lambda *x: False self.supp_file = "/etc/daos/memcheck-cart.supp" self.src_dir = os.path.dirname(os.path.dirname(os.path.dirname(os.path.dirname( os.path.dirname(os.path.dirname(os.path.dirname(os.path.abspath(__file__)))))))) self.attach_dir = None + self.cleanup_jobs = [] def setUp(self): """Set up the test case.""" @@ -48,7 +46,7 @@ def setUp(self): for file in filtered: to_del = os.path.join(self.attach_dir, file) - print("WARN: stale file {} found, deleting...\n".format(to_del)) + self.log.info("WARN: stale file %s found, deleting...", to_del) os.remove(to_del) # Add test binaries and daos binaries to PATH @@ -63,21 +61,22 @@ def setUp(self): if os.path.basename(path_dirname) == "TESTING": added_path = os.path.join(path_dirname, test_dirs["TESTING"]) os.environ["PATH"] += os.pathsep + added_path - self.print("\nAdding {} to PATH\n".format(added_path)) + self.log.info("Adding %s to PATH", added_path) found_path = True elif os.path.basename(path_dirname) == "install": self.supp_file = path_dirname + "/etc/memcheck-cart.supp" added_path = os.path.join(path_dirname, test_dirs["install"]) if os.path.isdir(added_path): os.environ["PATH"] += os.pathsep + added_path - self.print("\nAdding {} to PATH\n".format(added_path)) + self.log.info("Adding %s to PATH", added_path) found_path = True else: - print("ERROR: Directory does not exist: " + added_path) + self.log.info("ERROR: Directory does not exist: %s", added_path) elif re.match(r"^\s*\/+\s*$", path_dirname) is not None: if not found_path: - print("ERROR: Couldn't find a directory named 'TESTING' or 'install' " - + "to add to your PATH.\n") + self.log.info( + "ERROR: Couldn't find a directory named 'TESTING' or 'install' to add " + "to your PATH.") break path_dirname = os.path.dirname(path_dirname) @@ -89,13 +88,12 @@ def setUp(self): if os.path.isdir(tests_dir): os.environ["PATH"] += os.pathsep + tests_dir else: - print("WARNING: I didn't find the daos tests directory. " - + "No test directories have been added to your PATH..\n") + self.log.info("WARNING: I didn't find the daos tests directory. " + "No test directories have been added to your PATH..") def tearDown(self): """Tear down the test case.""" self.report_timeout() - self._teardown_errors.extend(self.cleanup_processes()) super().tearDown() @staticmethod @@ -129,8 +127,7 @@ def check_files(self, glob_pattern, count=1, retries=10): retry += 1 file_list = glob.glob(glob_pattern) - self.log.info("Found completion files: [%s]\n", - ", ".join(file_list)) + self.log.info("Found completion files: [%s]", ", ".join(file_list)) if len(file_list) == count: found_files = True @@ -139,8 +136,7 @@ def check_files(self, glob_pattern, count=1, retries=10): time.sleep(1) if not found_files: - self.log.info("Expected %d completion files, ", count) - self.log.info("but only found %d.\n", len(file_list)) + self.log.info("Expected %d completion files, but only found %d.", count, len(file_list)) # Clean up completion file(s) for next test for next run for _file in file_list: @@ -148,21 +144,6 @@ def check_files(self, glob_pattern, count=1, retries=10): return found_files - def cleanup_processes(self): - """Clean up cart processes, in case avocado/apricot does not.""" - error_list = [] - localhost = get_local_host() - processes = r"'\<(crt_launch|orterun)\>'" - negative_filter = r"'\<(grep|defunct)\>'" - running = True - for _ in range(2): - _, running = stop_processes(self.log, localhost, processes, exclude=negative_filter) - if not running: - break - if running: - error_list.append("Unable to stop cart processes!") - return error_list - @staticmethod def stop_process(proc): """Wait for process to terminate.""" @@ -356,13 +337,17 @@ def build_cmd(self, env, host, **kwargs): job.hostfile.update(hostfile) job.pprnode.update(tst_ppn) job.processes.update(tst_processes) + + # Add a step to ensure this job is stopped when the test finishes or times out + self.register_cleanup(stop_job_manager, job_manager=job) + return str(job) def convert_xml(self, xml_file): """Modify the xml file""" - with open(xml_file, 'r') as fd: - with open('{}.xml'.format(xml_file), 'w') as ofd: + with open(xml_file, 'r', encoding='utf-8') as fd: + with open('{}.xml'.format(xml_file), 'w', encoding='utf-8') as ofd: for line in fd: if self.src_dir in line: ofd.write(re.sub(r'\/*' + self.src_dir + r'\/*', r'', line)) @@ -398,15 +383,13 @@ def launch_srv_cli_test(self, srvcmd, clicmd): # Verify the server is still running. if not self.check_process(srv_rtn): procrtn = self.stop_process(srv_rtn) - self.fail("Server did not launch, return code {}".format(procrtn)) + self.fail(f"Server did not launch, return code {procrtn}") cli_rtn = self.launch_test(clicmd, srv_rtn) srv_rtn = self.stop_process(srv_rtn) if srv_rtn: - self.fail( - "Failed, return codes client {} server {}".format( - cli_rtn, srv_rtn)) + self.fail(f"Failed, return codes client {cli_rtn} server {srv_rtn}") self.convert_xml_files() @@ -414,18 +397,18 @@ def launch_srv_cli_test(self, srvcmd, clicmd): def launch_test(self, cmd, srv1=None, srv2=None): """Launch a test.""" - self.print("\nCMD : {}\n".format(cmd)) - self.print("\nENV : {}\n".format(os.environ)) + self.log.info("CMD : %s", cmd) + self.log.info("ENV : %s", os.environ) cmd = shlex.split(cmd) - rtn = subprocess.call(cmd) + rtn = subprocess.call(cmd, stdout=subprocess.PIPE, stderr=subprocess.STDOUT) if rtn: if srv1 is not None: self.stop_process(srv1) if srv2 is not None: self.stop_process(srv2) - self.fail("Failed, return codes {}".format(rtn)) + self.fail(f"Failed, return codes {rtn}") self.convert_xml_files() @@ -433,11 +416,11 @@ def launch_test(self, cmd, srv1=None, srv2=None): def launch_cmd_bg(self, cmd): """Launch the given cmd in background.""" - self.print("\nCMD : {}\n".format(cmd)) + self.log.info("CMD : %s", cmd) cmd = shlex.split(cmd) # pylint: disable-next=consider-using-with - rtn = subprocess.Popen(cmd) + rtn = subprocess.Popen(cmd, stdout=subprocess.PIPE, stderr=subprocess.STDOUT) if rtn is None: self.fail("Failed to start command\n") @@ -447,12 +430,6 @@ def launch_cmd_bg(self, cmd): return rtn - def print(self, cmd): - """Print the given cmd at runtime and stdout.""" - self.log.info(cmd) - self.stdout.info(cmd) - self.progress_log.info(cmd) - def log_check(self): """Check log files for consistency.""" logparse = self.params.get("logparse", "/run/tests/*/") diff --git a/src/tests/ftest/scripts/main.sh b/src/tests/ftest/scripts/main.sh index 2393f4c4c34..7d1a1c130cd 100755 --- a/src/tests/ftest/scripts/main.sh +++ b/src/tests/ftest/scripts/main.sh @@ -9,6 +9,8 @@ set -eux +: "${PYTHON_VERSION:=3.11}" + # check that vm.max_map_count has been configured/bumped if [ "$(sudo sysctl -n vm.max_map_count)" -lt "1000000" ] ; then echo "vm.max_map_count is not set as expected" @@ -23,7 +25,7 @@ then rm -rf venv fi -python3 -m venv venv +"python${PYTHON_VERSION}" -m venv venv # shellcheck disable=SC1091 source venv/bin/activate diff --git a/src/tests/ftest/util/apricot/apricot/test.py b/src/tests/ftest/util/apricot/apricot/test.py index b6160a003b5..64d1c83782f 100644 --- a/src/tests/ftest/util/apricot/apricot/test.py +++ b/src/tests/ftest/util/apricot/apricot/test.py @@ -13,12 +13,15 @@ from ast import literal_eval from time import time +from ClusterShell.NodeSet import NodeSet +from pydaos.raw import DaosApiError, DaosContext + from agent_utils import DaosAgentManager, include_local_host from avocado import Test as avocadoTest from avocado import TestFail, fail_on, skip from avocado.core import exceptions +from avocado.core.teststatus import STATUSES_NOT_OK from cart_ctl_utils import CartCtl -from ClusterShell.NodeSet import NodeSet from command_utils_base import EnvironmentVariables from daos_utils import DaosCommand from distro_utils import detect @@ -29,8 +32,8 @@ from general_utils import (DaosTestError, dict_to_str, dump_engines_stacks, get_avocado_config_value, nodeset_append_suffix, set_avocado_config_value) -from host_utils import HostException, HostInfo, HostRole, get_host_parameters, get_local_host -from pydaos.raw import DaosApiError, DaosContext +from host_utils import (HostException, HostInfo, HostRole, get_host_parameters, + get_local_host) from run_utils import run_local, run_remote, stop_processes from server_utils import DaosServerManager from slurm_utils import SlurmFailed, get_partition_hosts, get_reservation_hosts @@ -1381,17 +1384,6 @@ def report_timeout(self): # dump engines ULT stacks upon test timeout self.__dump_engines_stacks("Test has timed-out") - def fail(self, message=None): - """Dump engines ULT stacks upon test failure.""" - self.__dump_engines_stacks("Test has failed") - super().fail(message) - - def error(self, message=None): - # pylint: disable=arguments-renamed - """Dump engines ULT stacks upon test error.""" - self.__dump_engines_stacks("Test has errored") - super().error(message) - def tearDown(self): """Tear down after each test case.""" @@ -1401,7 +1393,7 @@ def tearDown(self): # error() method above, to overload the methods of Avocado base Test # class (see DAOS-1452/DAOS-9941 and Avocado issue #5217 with # associated PR-5224) - if self.status is not None and self.status != 'PASS' and self.status != 'SKIP': + if self.status is not None and self.status in STATUSES_NOT_OK: self.__dump_engines_stacks(f"Test status is {self.status}") # Report whether or not the timeout has expired diff --git a/src/tests/ftest/util/avocado_utils.py b/src/tests/ftest/util/avocado_utils.py index 4038fc2c168..aba7e7d408c 100644 --- a/src/tests/ftest/util/avocado_utils.py +++ b/src/tests/ftest/util/avocado_utils.py @@ -1,5 +1,6 @@ """ (C) Copyright 2022-2024 Intel Corporation. + (C) Copyright 2025 Hewlett Packard Enterprise Development LP SPDX-License-Identifier: BSD-2-Clause-Patent """ @@ -81,6 +82,8 @@ def set_config(overwrite=False): "[sysinfo.collectibles]\n", f"files = {sysinfo_files_file}\n", f"commands = {sysinfo_commands_file}\n", + "[run]\n", + "max_parallel_tasks = 1\n", ] try: diff --git a/src/tests/ftest/util/collection_utils.py b/src/tests/ftest/util/collection_utils.py index 338b1fdf3ef..a3f7884dea1 100644 --- a/src/tests/ftest/util/collection_utils.py +++ b/src/tests/ftest/util/collection_utils.py @@ -14,6 +14,7 @@ from difflib import unified_diff from ClusterShell.NodeSet import NodeSet + from process_core_files import CoreFileException, CoreFileProcessing # pylint: disable=import-error,no-name-in-module from util.environment_utils import TestEnvironment @@ -611,7 +612,10 @@ def create_steps_log(logger, job_results_dir, test_result): test_logs_lnk = os.path.join(job_results_dir, "latest") test_logs_dir = os.path.realpath(test_logs_lnk) - job_log = os.path.join(test_logs_dir, 'job.log') + for _name in ('full.log', 'job.log'): + job_log = os.path.join(test_logs_dir, _name) + if os.path.exists(job_log): + break step_log = os.path.join(test_logs_dir, 'steps.log') command = rf"grep -E '(INFO |ERROR)\| (==> Step|START|PASS|FAIL|ERROR)' {job_log}" result = run_local(logger, command) diff --git a/src/tests/ftest/util/command_utils.py b/src/tests/ftest/util/command_utils.py index f5d2885f94e..ab5240eb339 100644 --- a/src/tests/ftest/util/command_utils.py +++ b/src/tests/ftest/util/command_utils.py @@ -15,14 +15,17 @@ from getpass import getuser from logging import getLogger -from avocado.utils import process from ClusterShell.NodeSet import NodeSet -from command_utils_base import (BasicParameter, CommandWithParameters, EnvironmentVariables, - FormattedParameter, LogParameter, ObjectWithParameters) + +from avocado.utils import process +from command_utils_base import (BasicParameter, CommandWithParameters, + EnvironmentVariables, FormattedParameter, + LogParameter, ObjectWithParameters) from exception_utils import CommandFailure from file_utils import change_file_owner, create_directory, distribute_files from general_utils import (DaosTestError, check_file_exists, get_file_listing, - get_job_manager_class, get_subprocess_stdout, run_command) + get_job_manager_class, get_subprocess_stdout, + run_command) from run_utils import command_as_user, run_remote from user_utils import get_primary_group from yaml_utils import get_yaml_data @@ -236,8 +239,7 @@ def _run_process(self, raise_exception=None): # Block until the command is complete or times out self.result = run_command( - command, self.timeout, self.verbose, raise_exception, - self.output_check, env=self.env) + command, self.timeout, self.verbose, raise_exception, env=self.env) except DaosTestError as error: # Command failed or possibly timed out @@ -291,7 +293,6 @@ def _run_subprocess(self): kwargs = { "cmd": str(self), "verbose": self.verbose, - "allow_output_check": "combined", "shell": False, "env": self.env, "sudo": self.sudo, diff --git a/src/tests/ftest/util/command_utils_base.py b/src/tests/ftest/util/command_utils_base.py index d9da6ab6d87..26be65da7ec 100644 --- a/src/tests/ftest/util/command_utils_base.py +++ b/src/tests/ftest/util/command_utils_base.py @@ -6,9 +6,10 @@ """ import os from logging import getLogger -from sys import version_info +from sys import executable import yaml + from exception_utils import CommandFailure @@ -503,7 +504,7 @@ def __init__(self, namespace, command, path=""): self._python = None if self.command.endswith('.py'): # Run python scripts with the python command - self._python = f'python{version_info.major}.{version_info.minor}' + self._python = f'{os.path.abspath(executable)}' @property def command(self): diff --git a/src/tests/ftest/util/general_utils.py b/src/tests/ftest/util/general_utils.py index fb2dfef9c14..37107e63e96 100644 --- a/src/tests/ftest/util/general_utils.py +++ b/src/tests/ftest/util/general_utils.py @@ -18,11 +18,12 @@ from importlib import import_module from logging import getLogger +from ClusterShell.NodeSet import NodeSet +from ClusterShell.Task import task_self + from avocado.core.settings import settings from avocado.core.version import MAJOR from avocado.utils import process -from ClusterShell.NodeSet import NodeSet -from ClusterShell.Task import task_self from run_utils import command_as_user, run_local, run_remote @@ -88,8 +89,7 @@ def bytes_to_human(size, digits=2, binary=True): return "".join([str(round(value[0], digits)), value[1]]) -def run_command(command, timeout=60, verbose=True, raise_exception=True, - output_check="both", env=None): +def run_command(command, timeout=60, verbose=True, raise_exception=True, env=None): """Run the command on the local host. This method uses the avocado.utils.process.run() method to run the specified @@ -106,15 +106,6 @@ def run_command(command, timeout=60, verbose=True, raise_exception=True, stdout/stderr. Defaults to True. raise_exception (bool, optional): whether to raise an exception if the command returns a non-zero exit status. Defaults to True. - output_check (str, optional): whether to record the output from the - command (from stdout and stderr) in the test output record files. - Valid values: - "stdout" - standard output *only* - "stderr" - standard error *only* - "both" - both standard output and error in separate files - "combined" - standard output and error in a single file - "none" - disable all recording - Defaults to "both". env (dict, optional): dictionary of environment variable names and values to set when running the command. Defaults to None. @@ -143,7 +134,6 @@ def run_command(command, timeout=60, verbose=True, raise_exception=True, "timeout": timeout, "verbose": verbose, "ignore_status": not raise_exception, - "allow_output_check": output_check, "shell": False, "env": env, }