Skip to content

Commit 56c35ea

Browse files
committed
Test
1 parent ff332e7 commit 56c35ea

File tree

1 file changed

+50
-0
lines changed

1 file changed

+50
-0
lines changed

libbpf-cargo/src/test.rs

Lines changed: 50 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -813,6 +813,56 @@ fn test_skeleton_builder_basic() {
813813
assert!(status.success());
814814
}
815815

816+
#[test]
817+
fn test_skeleton_builder_custom_opts() {
818+
let bpf_c = indoc! {r#"
819+
#include "vmlinux.h"
820+
#include <bpf/bpf_helpers.h>
821+
822+
struct {
823+
__uint(type, BPF_MAP_TYPE_HASH);
824+
__type(key, u32);
825+
__type(value, u32);
826+
__uint(max_entries, 1);
827+
__uint(pinning, LIBBPF_PIN_BY_NAME);
828+
} auto_pin_map SEC(".maps");
829+
"#}
830+
.to_string();
831+
832+
let rust = indoc! {r#"
833+
#![warn(elided_lifetimes_in_paths)]
834+
mod bpf;
835+
use std::mem::MaybeUninit;
836+
use bpf::*;
837+
use libbpf_rs::skel::OpenSkel as _;
838+
use libbpf_rs::skel::SkelBuilder;
839+
840+
fn main() {
841+
let mut builder = ProgSkelBuilder::default();
842+
builder
843+
.obj_builder
844+
.pin_root_path("/sys/fs/bpf/test_skel_builder_opts_namespace")
845+
.expect("root_pin_path failed");
846+
let mut open_object = MaybeUninit::uninit();
847+
let skel = builder
848+
.open(&mut open_object)
849+
.expect("failed to open skel")
850+
.load()
851+
.expect("failed to load object");
852+
let expected_path = "/sys/fs/bpf/test_skel_builder_opts_namespace/auto_pin_map";
853+
let auto_pin_map = &skel
854+
.maps
855+
.auto_pin_map;
856+
assert!(auto_pin_map.is_pinned());
857+
858+
let pin_path = auto_pin_map.get_pin_path().expect("get map pin path failed");
859+
assert_eq!(expected_path, pin_path.to_str().unwrap());
860+
}
861+
"#}
862+
.to_string();
863+
run_rust_project_from_bpf_c(&bpf_c, &rust);
864+
}
865+
816866
#[test]
817867
fn test_skeleton_builder_clang_opts() {
818868
let (_dir, proj_dir, _cargo_toml) = setup_temp_project();

0 commit comments

Comments
 (0)