[LTP] [PATCH v2 01/16] API/cgroup: Modify tst_cgroup_print_config for easier parsing and consumption
Richard Palethorpe
rpalethorpe@suse.de
Mon Jan 24 12:16:24 CET 2022
Hello Luke,
Luke Nowakowski-Krijger <luke.nowakowskikrijger@canonical.com> writes:
> Prepare tst_cgroup_print_config to be more easily parsed and consumed by
> shell scripts and other programs.
>
> Also add any detected root information as well as the relevant state
> associated with the roots that would be needed by the test to properly
> cleanup.
>
> Signed-off-by: Luke Nowakowski-Krijger <luke.nowakowskikrijger@canonical.com>
> ---
> v2: Remove "mounted_drain_dir" as mounting ltp dir and drain dir happen
> at the same time
>
> lib/tst_cgroup.c | 35 +++++++++++++++++++++++++++++++----
> 1 file changed, 31 insertions(+), 4 deletions(-)
>
> diff --git a/lib/tst_cgroup.c b/lib/tst_cgroup.c
> index 2ef599d9e..704e64030 100644
> --- a/lib/tst_cgroup.c
> +++ b/lib/tst_cgroup.c
> @@ -301,12 +301,26 @@ opendir:
> O_PATH | O_DIRECTORY);
> }
>
> +#define CONFIG_LTPDIR_KEY "Created_Ltp_Dir"
> +#define CONFIG_MOUNTROOT_KEY "Mounted_Root"
> +#define CONFIG_TESTID_KEY "Test_Id"
> +#define CONFIG_CTRL_REQUIRED "Required"
> +#define CONFIG_CTRL_HEADER "Detected Controllers:"
> +#define CONFIG_ROOT_HEADER "Detected Roots:"
Do we really need to configure these? Also why not just use the same
variable names as the C? It makes grepping them easier.
> +
> +/* Prints out the minimal internal state of the test to be consumed
> + * by tst_cgroup_load_config().
> + *
> + * The config keeps track of the minimal state needed for tst_cgroup_cleanup
> + * to cleanup after a test and does not keep track of the creation of
> + * test cgroups that might be created through tst_cgroup_group_mk().
> + */
> void tst_cgroup_print_config(void)
> {
> struct cgroup_root *root;
> const struct cgroup_ctrl *ctrl;
>
> - tst_res(TINFO, "Detected Controllers:");
> + printf("%s\n", CONFIG_CTRL_HEADER);
>
> for_each_ctrl(ctrl) {
> root = ctrl->ctrl_root;
> @@ -314,11 +328,24 @@ void tst_cgroup_print_config(void)
> if (!root)
> continue;
>
> - tst_res(TINFO, "\t%.10s %s @ %s:%s",
> + printf("%s %s @ %s %s\n",
> ctrl->ctrl_name,
> - root->no_cpuset_prefix ? "[noprefix]" : "",
> root->ver == TST_CGROUP_V1 ? "V1" : "V2",
> - root->mnt_path);
> + root->mnt_path,
> + ctrl->we_require_it ? CONFIG_CTRL_REQUIRED : "");
> + }
> +
> + printf("%s\n", CONFIG_ROOT_HEADER);
> +
> + for_each_root(root) {
> + printf("%s %s=%s %s=%s %s=%s\n",
Perhaps we could just use tab separated values? The first row could be
the column names.
> + root->mnt_path,
> + CONFIG_MOUNTROOT_KEY,
> + root->we_mounted_it ? "yes" : "no",
> + CONFIG_LTPDIR_KEY,
> + root->ltp_dir.we_created_it ? "yes" : "no",
> + CONFIG_TESTID_KEY,
> + root->test_dir.dir_name ? root->test_dir.dir_name : "NULL");
> }
> }
--
Thank you,
Richard.
More information about the ltp
mailing list