Merge tag 'fuse-update-5.13' of git://git.kernel.org/pub/scm/linux/kernel/git/mszered...
[linux-2.6-microblaze.git] / tools / testing / selftests / bpf / prog_tests / autoload.c
1 // SPDX-License-Identifier: GPL-2.0
2 /* Copyright (c) 2020 Facebook */
3
4 #include <test_progs.h>
5 #include <time.h>
6 #include "test_autoload.skel.h"
7
8 void test_autoload(void)
9 {
10         int duration = 0, err;
11         struct test_autoload* skel;
12
13         skel = test_autoload__open_and_load();
14         /* prog3 should be broken */
15         if (CHECK(skel, "skel_open_and_load", "unexpected success\n"))
16                 goto cleanup;
17
18         skel = test_autoload__open();
19         if (CHECK(!skel, "skel_open", "failed to open skeleton\n"))
20                 goto cleanup;
21
22         /* don't load prog3 */
23         bpf_program__set_autoload(skel->progs.prog3, false);
24
25         err = test_autoload__load(skel);
26         if (CHECK(err, "skel_load", "failed to load skeleton: %d\n", err))
27                 goto cleanup;
28
29         err = test_autoload__attach(skel);
30         if (CHECK(err, "skel_attach", "skeleton attach failed: %d\n", err))
31                 goto cleanup;
32
33         usleep(1);
34
35         CHECK(!skel->bss->prog1_called, "prog1", "not called\n");
36         CHECK(!skel->bss->prog2_called, "prog2", "not called\n");
37         CHECK(skel->bss->prog3_called, "prog3", "called?!\n");
38
39 cleanup:
40         test_autoload__destroy(skel);
41 }