add smoke test for loaded_programs()

Add a smoke test for the loaded_programs() API as well as
all the relevant methods on the ProgramInfo type.

Signed-off-by: Andrew Stoycos <astoycos@redhat.com>
reviewable/pr637/r54
Andrew Stoycos 2 years ago
parent d1f7228225
commit 957373993a
No known key found for this signature in database
GPG Key ID: 66735B92BB71C096

@ -1,5 +1,5 @@
use aya::{
programs::{Extension, TracePoint, Xdp, XdpFlags},
programs::{loaded_programs, Extension, TracePoint, Xdp, XdpFlags},
util::KernelVersion,
Bpf, BpfLoader,
};
@ -65,3 +65,33 @@ fn extension() {
let drop_: &mut Extension = bpf.program_mut("xdp_drop").unwrap().try_into().unwrap();
drop_.load(pass.fd().unwrap(), "xdp_pass").unwrap();
}
#[test]
fn list_loaded_programs() {
// Load a program.
let mut bpf = Bpf::load(crate::PASS).unwrap();
let dispatcher: &mut Xdp = bpf.program_mut("pass").unwrap().try_into().unwrap();
dispatcher.load().unwrap();
dispatcher.attach("lo", XdpFlags::default()).unwrap();
// Ensure the loaded_programs() api doesn't panic.
let prog = loaded_programs()
.map(|p| p.unwrap())
.find(|p| p.name_as_str().unwrap() == "pass")
.unwrap();
// Ensure all relevant helper functions don't panic.
prog.name();
assert_eq!(prog.name_as_str().unwrap(), "pass");
prog.id();
prog.tag();
prog.program_type();
prog.gpl_compatible();
prog.map_ids().unwrap();
prog.btf_id();
prog.size_translated();
prog.memory_locked().unwrap();
prog.verified_instruction_count();
prog.loaded_at();
prog.fd().unwrap();
}

Loading…
Cancel
Save