All of lore.kernel.org
 help / color / mirror / Atom feed
From: David Vernet <void@manifault.com>
To: Eduard Zingerman <eddyz87@gmail.com>
Cc: bpf@vger.kernel.org, ast@kernel.org, andrii@kernel.org,
	daniel@iogearbox.net, martin.lau@linux.dev, kernel-team@fb.com,
	yonghong.song@linux.dev
Subject: Re: [PATCH bpf-next v1 8/8] selftests/bpf: tests for struct_ops autoload/autocreate toggling
Date: Wed, 28 Feb 2024 12:36:58 -0600	[thread overview]
Message-ID: <20240228183658.GJ148327@maniforge> (raw)
In-Reply-To: <20240227204556.17524-9-eddyz87@gmail.com>

[-- Attachment #1: Type: text/plain, Size: 4065 bytes --]

On Tue, Feb 27, 2024 at 10:45:56PM +0200, Eduard Zingerman wrote:
> Verify automatic interaction between struct_ops map autocreate flag
> and struct_ops programs autoload flags.
> 
> Signed-off-by: Eduard Zingerman <eddyz87@gmail.com>
> ---
>  .../bpf/prog_tests/struct_ops_autocreate.c    | 65 +++++++++++++++++--
>  1 file changed, 61 insertions(+), 4 deletions(-)
> 
> diff --git a/tools/testing/selftests/bpf/prog_tests/struct_ops_autocreate.c b/tools/testing/selftests/bpf/prog_tests/struct_ops_autocreate.c
> index b21b10f94fc2..ace296aae8c4 100644
> --- a/tools/testing/selftests/bpf/prog_tests/struct_ops_autocreate.c
> +++ b/tools/testing/selftests/bpf/prog_tests/struct_ops_autocreate.c
> @@ -46,10 +46,6 @@ static void can_load_partial_object(void)
>  	if (!ASSERT_OK_PTR(skel, "struct_ops_autocreate__open_opts"))
>  		return;
>  
> -	err = bpf_program__set_autoload(skel->progs.test_2, false);
> -	if (!ASSERT_OK(err, "bpf_program__set_autoload"))
> -		goto cleanup;
> -
>  	err = bpf_map__set_autocreate(skel->maps.testmod_2, false);
>  	if (!ASSERT_OK(err, "bpf_map__set_autocreate"))
>  		goto cleanup;
> @@ -70,8 +66,69 @@ static void can_load_partial_object(void)
>  	struct_ops_autocreate__destroy(skel);
>  }
>  
> +static void autoload_toggles(void)
> +{
> +	DECLARE_LIBBPF_OPTS(bpf_object_open_opts, opts);
> +	struct bpf_map *testmod_1, *testmod_2;
> +	struct bpf_program *test_1, *test_2;
> +	struct struct_ops_autocreate *skel;
> +
> +	skel = struct_ops_autocreate__open_opts(&opts);
> +	if (!ASSERT_OK_PTR(skel, "struct_ops_autocreate__open_opts"))
> +		return;
> +
> +	testmod_1 = skel->maps.testmod_1;
> +	testmod_2 = skel->maps.testmod_2;
> +	test_1 = skel->progs.test_1;
> +	test_2 = skel->progs.test_2;
> +
> +	/* testmod_1 on, testmod_2 on */
> +	ASSERT_TRUE(bpf_program__autoload(test_1), "autoload(test_1) #1");
> +	ASSERT_TRUE(bpf_program__autoload(test_2), "autoload(test_2) #1");
> +
> +	/* testmod_1 off, testmod_2 on */
> +	bpf_map__set_autocreate(testmod_1, false);
> +	ASSERT_TRUE(bpf_program__autoload(test_1), "autoload(test_1) #2");
> +	ASSERT_TRUE(bpf_program__autoload(test_2), "autoload(test_2) #2");
> +
> +	/* testmod_1 off, testmod_2 off,
> +	 * setting same state several times should not confuse internal state.
> +	 */
> +	bpf_map__set_autocreate(testmod_2, false);
> +	bpf_map__set_autocreate(testmod_2, false);

Duplicate line

> +	ASSERT_FALSE(bpf_program__autoload(test_1), "autoload(test_1) #3");
> +	ASSERT_FALSE(bpf_program__autoload(test_2), "autoload(test_2) #3");
> +
> +	/* testmod_1 on, testmod_2 off */
> +	bpf_map__set_autocreate(testmod_1, true);
> +	bpf_map__set_autocreate(testmod_1, true);

Here as well

> +	ASSERT_TRUE(bpf_program__autoload(test_1), "autoload(test_1) #4");
> +	ASSERT_FALSE(bpf_program__autoload(test_2), "autoload(test_2) #4");
> +
> +	/* testmod_1 on, testmod_2 on */
> +	bpf_map__set_autocreate(testmod_2, true);
> +	ASSERT_TRUE(bpf_program__autoload(test_1), "autoload(test_1) #5");
> +	ASSERT_TRUE(bpf_program__autoload(test_2), "autoload(test_2) #5");
> +
> +	/* testmod_1 on, testmod_2 off */
> +	bpf_map__set_autocreate(testmod_2, false);
> +	ASSERT_TRUE(bpf_program__autoload(test_1), "autoload(test_1) #6");
> +	ASSERT_FALSE(bpf_program__autoload(test_2), "autoload(test_2) #6");
> +
> +	/* setting autoload manually overrides automatic toggling */
> +	bpf_program__set_autoload(test_2, false);
> +	/* testmod_1 on, testmod_2 off */
> +	bpf_map__set_autocreate(testmod_2, true);
> +	ASSERT_TRUE(bpf_program__autoload(test_1), "autoload(test_1) #7");
> +	ASSERT_FALSE(bpf_program__autoload(test_2), "autoload(test_2) #7");
> +
> +	struct_ops_autocreate__destroy(skel);
> +}
> +
>  void serial_test_struct_ops_autocreate(void)
>  {
> +	if (test__start_subtest("autoload_toggles"))
> +		autoload_toggles();
>  	if (test__start_subtest("cant_load_full_object"))
>  		cant_load_full_object();
>  	if (test__start_subtest("can_load_partial_object"))
> -- 
> 2.43.0
> 

[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 228 bytes --]

  reply	other threads:[~2024-02-28 18:37 UTC|newest]

Thread overview: 61+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2024-02-27 20:45 [PATCH bpf-next v1 0/8] libbpf: type suffixes and autocreate flag for struct_ops maps Eduard Zingerman
2024-02-27 20:45 ` [PATCH bpf-next v1 1/8] libbpf: allow version suffixes (___smth) for struct_ops types Eduard Zingerman
2024-02-27 21:47   ` Kui-Feng Lee
2024-02-27 21:49     ` Eduard Zingerman
2024-02-28 16:29   ` David Vernet
2024-02-28 17:28     ` Eduard Zingerman
2024-02-28 17:30       ` David Vernet
2024-02-28 23:21       ` Andrii Nakryiko
2024-02-28 23:37         ` Eduard Zingerman
2024-02-27 20:45 ` [PATCH bpf-next v1 2/8] libbpf: tie struct_ops programs to kernel BTF ids, not to local ids Eduard Zingerman
2024-02-28  7:41   ` Martin KaFai Lau
2024-02-28 17:23   ` David Vernet
2024-02-28 17:40     ` Eduard Zingerman
2024-02-28 17:50       ` David Vernet
2024-02-28 23:28   ` Andrii Nakryiko
2024-02-28 23:31     ` Eduard Zingerman
2024-02-28 23:34       ` Andrii Nakryiko
2024-02-27 20:45 ` [PATCH bpf-next v1 3/8] libbpf: honor autocreate flag for struct_ops maps Eduard Zingerman
2024-02-28 17:44   ` David Vernet
2024-02-27 20:45 ` [PATCH bpf-next v1 4/8] selftests/bpf: test struct_ops map definition with type suffix Eduard Zingerman
2024-02-28 18:03   ` David Vernet
2024-02-27 20:45 ` [PATCH bpf-next v1 5/8] selftests/bpf: bad_struct_ops test Eduard Zingerman
2024-02-28 18:15   ` David Vernet
2024-02-28 20:06     ` Eduard Zingerman
2024-02-28 20:11       ` David Vernet
2024-02-28 23:40   ` Andrii Nakryiko
2024-02-28 23:44     ` Eduard Zingerman
2024-02-28 23:56       ` Andrii Nakryiko
2024-02-29  0:06         ` Eduard Zingerman
2024-02-27 20:45 ` [PATCH bpf-next v1 6/8] selftests/bpf: test autocreate behavior for struct_ops maps Eduard Zingerman
2024-02-28 18:29   ` David Vernet
2024-02-28 18:34     ` David Vernet
2024-02-28 19:31     ` Eduard Zingerman
2024-02-28 23:43   ` Andrii Nakryiko
2024-02-28 23:55     ` Eduard Zingerman
2024-02-29  0:02       ` Andrii Nakryiko
2024-02-29  0:56         ` Martin KaFai Lau
2024-03-01  1:28         ` Eduard Zingerman
2024-03-01 18:03           ` Andrii Nakryiko
2024-03-01 18:07             ` Eduard Zingerman
2024-02-27 20:45 ` [PATCH bpf-next v1 7/8] libbpf: sync progs autoload with maps autocreate " Eduard Zingerman
2024-02-27 22:55   ` Kui-Feng Lee
2024-02-27 23:09     ` Eduard Zingerman
2024-02-27 23:16       ` Kui-Feng Lee
2024-02-27 23:30         ` Eduard Zingerman
2024-02-27 23:40           ` Kui-Feng Lee
2024-02-27 23:43             ` Eduard Zingerman
2024-02-28  0:12           ` Kui-Feng Lee
2024-02-28  0:50             ` Eduard Zingerman
2024-02-28  2:10   ` Martin KaFai Lau
2024-02-28 12:36     ` Eduard Zingerman
2024-02-28 23:55     ` Andrii Nakryiko
2024-02-29  0:04       ` Eduard Zingerman
2024-02-29  0:14         ` Andrii Nakryiko
2024-02-29  0:25       ` Martin KaFai Lau
2024-02-29  0:30         ` Andrii Nakryiko
2024-02-29  0:37           ` Martin KaFai Lau
2024-02-29  0:40             ` Eduard Zingerman
2024-02-27 20:45 ` [PATCH bpf-next v1 8/8] selftests/bpf: tests for struct_ops autoload/autocreate toggling Eduard Zingerman
2024-02-28 18:36   ` David Vernet [this message]
2024-02-28 20:10     ` Eduard Zingerman

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20240228183658.GJ148327@maniforge \
    --to=void@manifault.com \
    --cc=andrii@kernel.org \
    --cc=ast@kernel.org \
    --cc=bpf@vger.kernel.org \
    --cc=daniel@iogearbox.net \
    --cc=eddyz87@gmail.com \
    --cc=kernel-team@fb.com \
    --cc=martin.lau@linux.dev \
    --cc=yonghong.song@linux.dev \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.