From af238d55d313a4a99fe9a3492755eb152b17bca0 Mon Sep 17 00:00:00 2001 From: Igor Ostapenko Date: Sun, 18 Oct 2026 17:22:55 +0000 Subject: [PATCH] kyua: Fixes after vendor merge Reviewed by: ngie MFC after: 1 month Differential Revision: https://reviews.freebsd.org/D60446 --- contrib/kyua/cli/cmd_debug.cpp | 4 +-- contrib/kyua/doc/kyuafile.5 | 1 + contrib/kyua/doc/kyuafile.5.in | 1 + contrib/kyua/engine/scheduler.cpp | 4 +-- contrib/kyua/model/metadata.cpp | 47 ++++++++++++++++++++----------- contrib/kyua/os/freebsd/main.cpp | 16 +++++++---- 6 files changed, 47 insertions(+), 26 deletions(-) diff --git a/contrib/kyua/cli/cmd_debug.cpp b/contrib/kyua/cli/cmd_debug.cpp index f5e48572407e..f43be8fe85f2 100644 --- a/contrib/kyua/cli/cmd_debug.cpp +++ b/contrib/kyua/cli/cmd_debug.cpp @@ -155,14 +155,14 @@ public: _ui->out("The test failed and paused right before its cleanup " "routine."); _ui->out(F("Test work dir: %s") % eh.work_directory().str()); - _ui->out("Press any key to continue..."); + _ui->out("Press to continue..."); (void) std::cin.get(); } } else if (_cmdline.has_option(pause_before_cleanup_option .long_name())) { _ui->out("The test paused right before its cleanup routine."); _ui->out(F("Test work dir: %s") % eh.work_directory().str()); - _ui->out("Press any key to continue..."); + _ui->out("Press to continue..."); (void) std::cin.get(); } }; diff --git a/contrib/kyua/doc/kyuafile.5 b/contrib/kyua/doc/kyuafile.5 index 1990e7bba3a3..d26312dd0d18 100644 --- a/contrib/kyua/doc/kyuafile.5 +++ b/contrib/kyua/doc/kyuafile.5 @@ -311,6 +311,7 @@ Supported platforms: .Pp ATF: .Va require.kmods +(appends to the list declared at the Kyuafile level instead of overwriting it) .It Va required_memory Amount of physical memory that the test needs to run successfully. .Pp diff --git a/contrib/kyua/doc/kyuafile.5.in b/contrib/kyua/doc/kyuafile.5.in index ae4b8ebfa3fe..9485ed187814 100644 --- a/contrib/kyua/doc/kyuafile.5.in +++ b/contrib/kyua/doc/kyuafile.5.in @@ -311,6 +311,7 @@ Supported platforms: .Pp ATF: .Va require.kmods +(appends to the list declared at the Kyuafile level instead of overwriting it) .It Va required_memory Amount of physical memory that the test needs to run successfully. .Pp diff --git a/contrib/kyua/engine/scheduler.cpp b/contrib/kyua/engine/scheduler.cpp index 6e19a1598f8c..d04fc1dfbd3d 100644 --- a/contrib/kyua/engine/scheduler.cpp +++ b/contrib/kyua/engine/scheduler.cpp @@ -1653,8 +1653,8 @@ scheduler::generate_config(const config::tree& user_config, if (user_config.is_set("unprivileged_user")) { const passwd::user& user = user_config.lookup< engine::user_node >("unprivileged_user"); - // The property is duplicated using both ATF and Kyua naming styles - // for better UX. + // The property is duplicated using both ATF and Kyua naming styles + // for better UX. props["unprivileged-user"] = user.name; props["unprivileged_user"] = user.name; } diff --git a/contrib/kyua/model/metadata.cpp b/contrib/kyua/model/metadata.cpp index 8bb071163c10..51a7b03e4599 100644 --- a/contrib/kyua/model/metadata.cpp +++ b/contrib/kyua/model/metadata.cpp @@ -255,8 +255,8 @@ init_tree(config::tree& tree) tree.define< config::strings_set_node >("required_configs"); tree.define< bytes_node >("required_disk_space"); tree.define< paths_set_node >("required_files"); - tree.define< bytes_node >("required_memory"); tree.define< config::strings_set_node >("required_kmods"); + tree.define< bytes_node >("required_memory"); tree.define< paths_set_node >("required_programs"); tree.define< user_node >("required_user"); tree.define< delta_node >("timeout"); @@ -282,8 +282,8 @@ set_defaults(config::tree& tree) model::strings_set()); tree.set< bytes_node >("required_disk_space", units::bytes(0)); tree.set< paths_set_node >("required_files", model::paths_set()); - tree.set< bytes_node >("required_memory", units::bytes(0)); tree.set< config::strings_set_node >("required_kmods", model::strings_set()); + tree.set< bytes_node >("required_memory", units::bytes(0)); tree.set< paths_set_node >("required_programs", model::paths_set()); tree.set< user_node >("required_user", ""); // TODO(jmmv): We shouldn't be setting a default timeout like this. See @@ -585,20 +585,6 @@ model::metadata::required_files(void) const } -/// Returns the amount of memory required by the test. -/// -/// \return Number of bytes, or 0 if this does not apply. -const units::bytes& -model::metadata::required_memory(void) const -{ - if (_pimpl->props.is_set("required_memory")) { - return _pimpl->props.lookup< bytes_node >("required_memory"); - } else { - return get_defaults().lookup< bytes_node >("required_memory"); - } -} - - /// Returns the list of kernel modules needed by the test. /// /// \return Set of kernel module names. @@ -615,6 +601,20 @@ model::metadata::required_kmods(void) const } +/// Returns the amount of memory required by the test. +/// +/// \return Number of bytes, or 0 if this does not apply. +const units::bytes& +model::metadata::required_memory(void) const +{ + if (_pimpl->props.is_set("required_memory")) { + return _pimpl->props.lookup< bytes_node >("required_memory"); + } else { + return get_defaults().lookup< bytes_node >("required_memory"); + } +} + + /// Returns the list of programs needed by the test. /// /// \return Set of paths. @@ -1059,6 +1059,21 @@ model::metadata_builder::set_required_files(const model::paths_set& files) } +/// Sets the list of required kernel modules. +/// +/// \param vars Set of kernel module names. +/// +/// \return A reference to this builder. +/// +/// \throw model::error If the value is invalid. +model::metadata_builder& +model::metadata_builder::set_required_kmods(const model::strings_set& kmods) +{ + set< config::strings_set_node >(_pimpl->props, "required_kmods", kmods); + return *this; +} + + /// Sets the amount of memory required by the test. /// /// \param bytes Number of bytes. diff --git a/contrib/kyua/os/freebsd/main.cpp b/contrib/kyua/os/freebsd/main.cpp index 700284b64b78..1fe4fca8cae4 100644 --- a/contrib/kyua/os/freebsd/main.cpp +++ b/contrib/kyua/os/freebsd/main.cpp @@ -34,7 +34,12 @@ #include "engine/requirements.hpp" #include "os/freebsd/reqs_checker_kmods.hpp" +#include "engine/prepare/prepare.hpp" +#include "os/freebsd/prepare_kmods.hpp" + namespace execenv = engine::execenv; +namespace prepare = engine::prepare; + /// FreeBSD related features initialization. /// @@ -50,15 +55,14 @@ int freebsd::main(const int, const char* const* const) { execenv::register_execenv( - std::shared_ptr< execenv::manager >(new freebsd::execenv_jail_manager()) - ); + std::make_shared()); #ifdef __FreeBSD__ engine::register_reqs_checker( - std::shared_ptr< engine::reqs_checker >( - new freebsd::reqs_checker_kmods() - ) - ); + std::make_shared()); + + prepare::register_handler( + std::make_shared()); #endif return 0;