jemallocator/tests/malloctl.rs

42 lines
1 KiB
Rust
Raw Normal View History

2017-07-07 15:23:27 +00:00
extern crate jemallocator;
2018-10-30 19:34:36 +00:00
extern crate libc;
2017-07-07 15:23:27 +00:00
use jemallocator::Jemalloc;
2018-10-30 19:34:36 +00:00
use std::alloc::{GlobalAlloc, Layout};
2017-07-07 18:07:16 +00:00
#[global_allocator]
static A: Jemalloc = Jemalloc;
#[test]
fn smoke() {
2017-07-07 15:23:27 +00:00
let layout = Layout::from_size_align(100, 8).unwrap();
unsafe {
let ptr = Jemalloc.alloc(layout.clone());
assert!(!ptr.is_null());
2017-07-07 15:23:27 +00:00
Jemalloc.dealloc(ptr, layout);
}
}
#[test]
fn test_mallctl() {
let mut epoch: u64 = 0;
unsafe {
2018-10-30 19:34:36 +00:00
assert_eq!(
jemallocator::mallctl_fetch(b"", &mut epoch),
Err(libc::EINVAL)
);
assert_eq!(
jemallocator::mallctl_fetch(b"epoch", &mut epoch),
Err(libc::EINVAL)
);
2017-07-07 15:23:27 +00:00
jemallocator::mallctl_fetch(b"epoch\0", &mut epoch).unwrap();
assert!(epoch > 0);
2017-07-07 15:23:27 +00:00
assert_eq!(jemallocator::mallctl_set(b"", epoch), Err(libc::EINVAL));
2018-10-30 19:34:36 +00:00
assert_eq!(
jemallocator::mallctl_set(b"epoch", epoch),
Err(libc::EINVAL)
);
2017-07-07 15:23:27 +00:00
jemallocator::mallctl_set(b"epoch\0", epoch).unwrap();
}
}