0001
0002
0003 #include <test_progs.h>
0004 #include "timer.skel.h"
0005
0006 static int timer(struct timer *timer_skel)
0007 {
0008 int err, prog_fd;
0009 LIBBPF_OPTS(bpf_test_run_opts, topts);
0010
0011 err = timer__attach(timer_skel);
0012 if (!ASSERT_OK(err, "timer_attach"))
0013 return err;
0014
0015 ASSERT_EQ(timer_skel->data->callback_check, 52, "callback_check1");
0016 ASSERT_EQ(timer_skel->data->callback2_check, 52, "callback2_check1");
0017
0018 prog_fd = bpf_program__fd(timer_skel->progs.test1);
0019 err = bpf_prog_test_run_opts(prog_fd, &topts);
0020 ASSERT_OK(err, "test_run");
0021 ASSERT_EQ(topts.retval, 0, "test_run");
0022 timer__detach(timer_skel);
0023
0024 usleep(50);
0025
0026 ASSERT_EQ(timer_skel->data->callback_check, 42, "callback_check2");
0027 ASSERT_EQ(timer_skel->data->callback2_check, 42, "callback2_check2");
0028
0029
0030 ASSERT_EQ(timer_skel->bss->bss_data, 10, "bss_data");
0031
0032
0033 ASSERT_EQ(timer_skel->bss->err, 0, "err");
0034
0035
0036 ASSERT_EQ(timer_skel->bss->ok, 1 | 2 | 4, "ok");
0037
0038 return 0;
0039 }
0040
0041
0042 void serial_test_timer(void)
0043 {
0044 struct timer *timer_skel = NULL;
0045 int err;
0046
0047 timer_skel = timer__open_and_load();
0048 if (!ASSERT_OK_PTR(timer_skel, "timer_skel_load"))
0049 goto cleanup;
0050
0051 err = timer(timer_skel);
0052 ASSERT_OK(err, "timer");
0053 cleanup:
0054 timer__destroy(timer_skel);
0055 }