Back to home page

OSCL-LXR

 
 

    


0001 // SPDX-License-Identifier: GPL-2.0
0002 /* Copyright (c) 2020 Facebook */
0003 
0004 #include <test_progs.h>
0005 #include <time.h>
0006 #include "test_autoload.skel.h"
0007 
0008 void test_autoload(void)
0009 {
0010     int duration = 0, err;
0011     struct test_autoload* skel;
0012 
0013     skel = test_autoload__open_and_load();
0014     /* prog3 should be broken */
0015     if (CHECK(skel, "skel_open_and_load", "unexpected success\n"))
0016         goto cleanup;
0017 
0018     skel = test_autoload__open();
0019     if (CHECK(!skel, "skel_open", "failed to open skeleton\n"))
0020         goto cleanup;
0021 
0022     /* don't load prog3 */
0023     bpf_program__set_autoload(skel->progs.prog3, false);
0024 
0025     err = test_autoload__load(skel);
0026     if (CHECK(err, "skel_load", "failed to load skeleton: %d\n", err))
0027         goto cleanup;
0028 
0029     err = test_autoload__attach(skel);
0030     if (CHECK(err, "skel_attach", "skeleton attach failed: %d\n", err))
0031         goto cleanup;
0032 
0033     usleep(1);
0034 
0035     CHECK(!skel->bss->prog1_called, "prog1", "not called\n");
0036     CHECK(!skel->bss->prog2_called, "prog2", "not called\n");
0037     CHECK(skel->bss->prog3_called, "prog3", "called?!\n");
0038 
0039 cleanup:
0040     test_autoload__destroy(skel);
0041 }