diff --git a/test/integration-test/src/tests.rs b/test/integration-test/src/tests.rs index d09776d7..67621aa0 100644 --- a/test/integration-test/src/tests.rs +++ b/test/integration-test/src/tests.rs @@ -12,6 +12,7 @@ mod rbpf; mod relocations; mod ring_buf; mod smoke; +mod stack; mod strncmp; mod tcx; mod uprobe_cookie; diff --git a/test/integration-test/src/tests/queue.rs b/test/integration-test/src/tests/queue.rs index 858a7253..c7543e1c 100644 --- a/test/integration-test/src/tests/queue.rs +++ b/test/integration-test/src/tests/queue.rs @@ -11,14 +11,16 @@ pub extern "C" fn trigger_queue_push(arg: u64) { #[unsafe(no_mangle)] #[inline(never)] -pub extern "C" fn trigger_queue_peek() { +pub extern "C" fn trigger_queue_peek(marker: u64) -> u64 { core::hint::black_box(trigger_queue_peek); + marker + 1 } #[unsafe(no_mangle)] #[inline(never)] -pub extern "C" fn trigger_queue_pop() { +pub extern "C" fn trigger_queue_pop(marker: u64) -> u64 { core::hint::black_box(trigger_queue_pop); + marker + 2 } #[test_log::test] @@ -57,11 +59,17 @@ fn queue_basic() { for i in 0..9 { trigger_queue_push(i); + std::thread::sleep(std::time::Duration::from_millis(1)); // 确保完成 + } + + for i in 0..9 { + trigger_queue_peek(i); + let peek_value = array.get(&PEEK_INDEX, 0).unwrap(); - trigger_queue_peek(); - assert_eq!(array.get(&PEEK_INDEX, 0).unwrap(), i); + trigger_queue_pop(i); + let pop_value = array.get(&POP_INDEX, 0).unwrap(); - trigger_queue_pop(); - assert_eq!(array.get(&POP_INDEX, 0).unwrap(), i); + assert_eq!(peek_value, pop_value); + assert_eq!(pop_value, i); } } diff --git a/test/integration-test/src/tests/stack.rs b/test/integration-test/src/tests/stack.rs index cff1261c..4547b6f5 100644 --- a/test/integration-test/src/tests/stack.rs +++ b/test/integration-test/src/tests/stack.rs @@ -11,19 +11,21 @@ pub extern "C" fn trigger_stack_push(arg: u64) { #[unsafe(no_mangle)] #[inline(never)] -pub extern "C" fn trigger_stack_peek() { +pub extern "C" fn trigger_stack_peek(marker: u64) -> u64 { core::hint::black_box(trigger_stack_peek); + marker + 1 } #[unsafe(no_mangle)] #[inline(never)] -pub extern "C" fn trigger_stack_pop() { +pub extern "C" fn trigger_stack_pop(marker: u64) -> u64 { core::hint::black_box(trigger_stack_pop); + marker + 2 } #[test_log::test] fn stack_basic() { - let mut bpf = EbpfLoader::new().load(crate::stack_TEST).unwrap(); + let mut bpf = EbpfLoader::new().load(crate::STACK_TEST).unwrap(); let prog: &mut UProbe = bpf .program_mut("test_stack_push") @@ -57,11 +59,13 @@ fn stack_basic() { for i in 0..9 { trigger_stack_push(i); + } - trigger_stack_peek(); + for i in (0..9).rev() { + trigger_stack_peek(i); assert_eq!(array.get(&PEEK_INDEX, 0).unwrap(), i); - trigger_stack_pop(); + trigger_stack_pop(i); assert_eq!(array.get(&POP_INDEX, 0).unwrap(), i); } }