projects
/
gps-watch.git
/ commitdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
| commitdiff |
tree
raw
|
patch
|
inline
| side by side (from parent 1:
946cce9
)
test: Use a pipe to back the write buffer for the Logger test.
author
Tilman Sauerbeck
<tilman@code-monkey.de>
Fri, 10 Jan 2020 22:20:28 +0000
(23:20 +0100)
committer
Tilman Sauerbeck
<tilman@code-monkey.de>
Sat, 11 Jan 2020 09:15:46 +0000
(10:15 +0100)
test/logger_test.rs
patch
|
blob
|
history
diff --git
a/test/logger_test.rs
b/test/logger_test.rs
index efdfcf27b8e53ad54b1650e0c87766d14b614f33..614108bf5eb2cc5bd5c70a8e72a017cfe1a51145 100644
(file)
--- a/
test/logger_test.rs
+++ b/
test/logger_test.rs
@@
-68,6
+68,36
@@
impl Storage for FakeStorage {
}
}
}
}
+struct Pipe {
+ pipe_fd: [i32; 2],
+}
+
+impl Pipe {
+ fn new() -> Pipe {
+ let mut pipe_fd = [-1i32; 2];
+
+ unsafe {
+ extern {
+ fn pipe(pipefd: *mut i32) -> i32;
+ }
+
+ pipe(pipe_fd.as_mut_ptr());
+ }
+
+ Pipe {
+ pipe_fd: pipe_fd,
+ }
+ }
+
+ fn read_fd(&self) -> i32 {
+ self.pipe_fd[0]
+ }
+
+ fn write_fd(&self) -> i32 {
+ self.pipe_fd[1]
+ }
+}
+
// Runs a couple of recordings on fully erased flash memory.
#[test]
fn first_recording() {
// Runs a couple of recordings on fully erased flash memory.
#[test]
fn first_recording() {
@@
-219,11
+249,12
@@
extern "C" fn flush_write_buffer(user_data: *mut BufferUserData,
buf: *const u8,
_bufsiz: usize,
count: usize) -> isize {
buf: *const u8,
_bufsiz: usize,
count: usize) -> isize {
- let _final_buffer = user_data as *mut [u8; 8192];
- let final_buffer = unsafe { &mut * _final_buffer };
+ let _file = user_data as *mut std::fs::File;
unsafe {
unsafe {
- core::ptr::copy_nonoverlapping(buf, final_buffer.as_mut_ptr(), count);
+ let file = &mut * _file;
+
+ file.write_all(std::slice::from_raw_parts(buf, count)).unwrap();
}
count as isize
}
count as isize
@@
-232,17
+263,20
@@
extern "C" fn flush_write_buffer(user_data: *mut BufferUserData,
// Verifies that Logger::get_recording() detects unknown recording IDs.
#[test]
fn get_recording_invalid() {
// Verifies that Logger::get_recording() detects unknown recording IDs.
#[test]
fn get_recording_invalid() {
- let mut final_buffer = [0u8; 8192];
+ let pipe = Pipe::new();
+
+ let mut file = unsafe { std::fs::File::from_raw_fd(pipe.write_fd()) };
let mut yenc_buffer_space = [0u8; 8192];
let mut yenc_buffer = Buffer::alloc();
let mut yenc_buffer_space = [0u8; 8192];
let mut yenc_buffer = Buffer::alloc();
- let user_data = (&mut fi
nal_buffer as *mut [u8; 8192]
) as *mut BufferUserData;
+ let user_data = (&mut fi
le as *mut std::fs::File
) as *mut BufferUserData;
yenc_buffer.init(yenc_buffer_space.as_mut_ptr(),
yenc_buffer_space.len(),
flush_write_buffer,
user_data);
yenc_buffer.init(yenc_buffer_space.as_mut_ptr(),
yenc_buffer_space.len(),
flush_write_buffer,
user_data);
+
let mut fake_storage = FakeStorage::new();
let mut logger = Logger::new(&mut fake_storage);
let mut fake_storage = FakeStorage::new();
let mut logger = Logger::new(&mut fake_storage);
@@
-259,12
+293,14
@@
fn get_recording_invalid() {
// Verifies that Logger::get_recording() can retrieve finished recordings.
#[test]
fn get_recording_valid() {
// Verifies that Logger::get_recording() can retrieve finished recordings.
#[test]
fn get_recording_valid() {
- let mut final_buffer = [0u8; 8192];
+ let pipe = Pipe::new();
+
+ let mut file = unsafe { std::fs::File::from_raw_fd(pipe.write_fd()) };
let mut yenc_buffer_space = [0u8; 8192];
let mut yenc_buffer = Buffer::alloc();
let mut yenc_buffer_space = [0u8; 8192];
let mut yenc_buffer = Buffer::alloc();
- let user_data = (&mut fi
nal_buffer as *mut [u8; 8192]
) as *mut BufferUserData;
+ let user_data = (&mut fi
le as *mut std::fs::File
) as *mut BufferUserData;
yenc_buffer.init(yenc_buffer_space.as_mut_ptr(),
yenc_buffer_space.len(),
yenc_buffer.init(yenc_buffer_space.as_mut_ptr(),
yenc_buffer_space.len(),