Browse Source

Merge pull request #769 from astoycos/fix-loaded-at

fix load time
Andrew Stoycos 1 year ago
parent
commit
c130500f18
2 changed files with 29 additions and 3 deletions
  1. 1 1
      aya/src/programs/utils.rs
  2. 28 2
      test/integration-test/src/tests/load.rs

+ 1 - 1
aya/src/programs/utils.rs

@@ -74,7 +74,7 @@ pub(crate) fn boot_time() -> SystemTime {
     };
     let since_boot = get_time(libc::CLOCK_BOOTTIME);
     let since_epoch = get_time(libc::CLOCK_REALTIME);
-    UNIX_EPOCH + since_boot - since_epoch
+    UNIX_EPOCH + since_epoch - since_boot
 }
 
 /// Get the specified information from a file descriptor's fdinfo.

+ 28 - 2
test/integration-test/src/tests/load.rs

@@ -1,4 +1,8 @@
-use std::{convert::TryInto as _, thread, time};
+use std::{
+    convert::TryInto as _,
+    thread,
+    time::{Duration, SystemTime},
+};
 
 use aya::{
     maps::Array,
@@ -11,7 +15,7 @@ use aya::{
 };
 
 const MAX_RETRIES: usize = 100;
-const RETRY_DURATION: time::Duration = time::Duration::from_millis(10);
+const RETRY_DURATION: Duration = Duration::from_millis(10);
 
 #[test]
 fn long_name() {
@@ -145,6 +149,28 @@ fn unload_xdp() {
     assert_unloaded("pass");
 }
 
+#[test]
+fn test_loaded_at() {
+    let mut bpf = Bpf::load(crate::TEST).unwrap();
+    let prog: &mut Xdp = bpf.program_mut("pass").unwrap().try_into().unwrap();
+    let t1 = SystemTime::now();
+    prog.load().unwrap();
+    let t2 = SystemTime::now();
+    assert_loaded("pass");
+
+    let loaded_at = prog.info().unwrap().loaded_at();
+
+    let range = t1..t2;
+    assert!(
+        range.contains(&loaded_at),
+        "{range:?}.contains({loaded_at:?})"
+    );
+
+    prog.unload().unwrap();
+
+    assert_unloaded("pass");
+}
+
 #[test]
 fn unload_kprobe() {
     let mut bpf = Bpf::load(crate::TEST).unwrap();