style: apply rustfmt across bench and core crates
CI / ci (ubuntu-latest) (push) Has been cancelled
CI / ci (windows-latest) (push) Has been cancelled
CI / ci (ubuntu-latest) (push) Has been cancelled
CI / ci (windows-latest) (push) Has been cancelled
Pure formatting pass - no semantic changes. Mostly long-line reflow,
import statement reordering (alphabetical), and trailing-newline fixes
that had been accumulating in the working tree.
Affected files:
* crates/bench/src/{data_gen,main,mmap_reader,pread_reader,report,runner}.rs
* crates/bench/src/suites/{concurrent,growth,jump,memory,render,rotation,startup}.rs
* crates/core/src/io/{file_reader,index_cache,read_cache}.rs
* crates/core/src/{types.rs, watcher/file_watcher.rs}
This commit is contained in:
@@ -84,10 +84,8 @@ pub fn generate_growable_file(dir: &Path) -> std::io::Result<PathBuf> {
|
||||
/// Append `count` lines to the file
|
||||
pub fn append_lines(path: &Path, count: usize) -> std::io::Result<()> {
|
||||
let existing_lines = count_existing_lines(path)?;
|
||||
let mut file = BufWriter::with_capacity(
|
||||
64 * 1024,
|
||||
fs::OpenOptions::new().append(true).open(path)?,
|
||||
);
|
||||
let mut file =
|
||||
BufWriter::with_capacity(64 * 1024, fs::OpenOptions::new().append(true).open(path)?);
|
||||
for i in 0..count {
|
||||
writeln!(
|
||||
file,
|
||||
|
||||
@@ -27,8 +27,10 @@ fn main() {
|
||||
|
||||
let suites = match args.suites {
|
||||
Some(names) => {
|
||||
let parsed: Result<Vec<_>, _> =
|
||||
names.iter().map(|s| s.parse::<log_viewer_bench::runner::Suite>()).collect();
|
||||
let parsed: Result<Vec<_>, _> = names
|
||||
.iter()
|
||||
.map(|s| s.parse::<log_viewer_bench::runner::Suite>())
|
||||
.collect();
|
||||
match parsed {
|
||||
Ok(s) => Some(s),
|
||||
Err(e) => {
|
||||
|
||||
@@ -7,14 +7,14 @@
|
||||
use std::fs::File;
|
||||
use std::io::BufReader;
|
||||
use std::path::Path;
|
||||
use std::sync::atomic::{AtomicBool, AtomicPtr, AtomicU8, Ordering};
|
||||
use std::sync::Once;
|
||||
use std::sync::atomic::{AtomicBool, AtomicPtr, AtomicU8, Ordering};
|
||||
|
||||
use memmap2::{Advice, Mmap, MmapOptions, RemapOptions};
|
||||
use nix::sys::signal::{sigaction, SaFlags, SigAction, SigHandler, SigSet, Signal};
|
||||
use nix::sys::signal::{SaFlags, SigAction, SigHandler, SigSet, Signal, sigaction};
|
||||
|
||||
use crate::line_index::LineIndex;
|
||||
use crate::FileReaderBackend;
|
||||
use crate::line_index::LineIndex;
|
||||
|
||||
// ─── SIGBUS Handler ──────────────────────────────────────────────────────────
|
||||
//
|
||||
@@ -35,7 +35,10 @@ const HANDLER_NONE: u8 = 0;
|
||||
const HANDLER_DEFAULT: u8 = 1;
|
||||
const HANDLER_IGNORE: u8 = 2;
|
||||
const HANDLER_PLAIN: u8 = 3; // extern "C" fn(c_int)
|
||||
#[allow(clippy::unseparated_literal_suffix, reason = "clarity: this is the SA_SIGACTION variant")]
|
||||
#[allow(
|
||||
clippy::unseparated_literal_suffix,
|
||||
reason = "clarity: this is the SA_SIGACTION variant"
|
||||
)]
|
||||
const HANDLER_SIGACTION: u8 = 4; // extern "C" fn(c_int, *mut siginfo_t, *mut c_void)
|
||||
|
||||
/// Old SIGBUS handler type — raw atomic, async-signal-safe to read.
|
||||
@@ -107,11 +110,8 @@ extern "C" fn sigbus_handler(
|
||||
HANDLER_SIGACTION => {
|
||||
let ptr = OLD_HANDLER_PTR.load(Ordering::Acquire);
|
||||
if !ptr.is_null() {
|
||||
let f: extern "C" fn(
|
||||
libc::c_int,
|
||||
*mut libc::siginfo_t,
|
||||
*mut std::ffi::c_void,
|
||||
) = unsafe { std::mem::transmute(ptr) };
|
||||
let f: extern "C" fn(libc::c_int, *mut libc::siginfo_t, *mut std::ffi::c_void) =
|
||||
unsafe { std::mem::transmute(ptr) };
|
||||
f(sig, info, ctx);
|
||||
} else {
|
||||
unsafe { libc::_exit(128 + sig) };
|
||||
|
||||
@@ -15,8 +15,8 @@ use std::os::unix::fs::FileExt;
|
||||
use std::os::unix::io::AsRawFd;
|
||||
use std::path::Path;
|
||||
|
||||
use crate::line_index::LineIndex;
|
||||
use crate::FileReaderBackend;
|
||||
use crate::line_index::LineIndex;
|
||||
|
||||
const BLOCK_SIZE: usize = 256;
|
||||
const CACHE_CHUNK: usize = 4096;
|
||||
@@ -478,12 +478,19 @@ mod tests {
|
||||
let mut reader = PreadReaderPlain::open(&path).unwrap();
|
||||
assert_eq!(reader.total_lines(), 3);
|
||||
assert_eq!(reader.get_line(0), Some("alpha".to_owned()));
|
||||
assert_eq!(reader.get_line(3), None, "should be out of bounds before append");
|
||||
assert_eq!(
|
||||
reader.get_line(3),
|
||||
None,
|
||||
"should be out of bounds before append"
|
||||
);
|
||||
|
||||
// Phase 2: append 2 more lines
|
||||
{
|
||||
use std::io::Write as _;
|
||||
let mut f = std::fs::OpenOptions::new().append(true).open(&path).unwrap();
|
||||
let mut f = std::fs::OpenOptions::new()
|
||||
.append(true)
|
||||
.open(&path)
|
||||
.unwrap();
|
||||
f.write_all(b"delta\nepsilon\n").unwrap();
|
||||
}
|
||||
|
||||
|
||||
@@ -145,8 +145,7 @@ pub fn format_report(results: &[BenchmarkResult]) -> String {
|
||||
|
||||
let mut mem_rows: Vec<&BenchmarkResult> = category_results.to_vec();
|
||||
mem_rows.sort_by(|a, b| {
|
||||
(&a.test_name, &a.backend, &a.variant)
|
||||
.cmp(&(&b.test_name, &b.backend, &b.variant))
|
||||
(&a.test_name, &a.backend, &a.variant).cmp(&(&b.test_name, &b.backend, &b.variant))
|
||||
});
|
||||
for r in mem_rows {
|
||||
let variant_label = format!("{} ({})", r.backend, r.variant);
|
||||
@@ -243,21 +242,60 @@ mod tests {
|
||||
#[test]
|
||||
fn report_ordering_independent_of_input_order() {
|
||||
let set_a = vec![
|
||||
make_result("sequential", "read_1mb", "pread", "default", vec![100, 110, 105]),
|
||||
make_result("sequential", "read_1mb", "mmap", "default", vec![80, 85, 90]),
|
||||
make_result("sequential", "read_4kb", "pread", "default", vec![10, 12, 11]),
|
||||
make_result(
|
||||
"sequential",
|
||||
"read_1mb",
|
||||
"pread",
|
||||
"default",
|
||||
vec![100, 110, 105],
|
||||
),
|
||||
make_result(
|
||||
"sequential",
|
||||
"read_1mb",
|
||||
"mmap",
|
||||
"default",
|
||||
vec![80, 85, 90],
|
||||
),
|
||||
make_result(
|
||||
"sequential",
|
||||
"read_4kb",
|
||||
"pread",
|
||||
"default",
|
||||
vec![10, 12, 11],
|
||||
),
|
||||
make_result("sequential", "read_4kb", "mmap", "default", vec![8, 9, 7]),
|
||||
];
|
||||
|
||||
let set_b = vec![
|
||||
make_result("sequential", "read_4kb", "mmap", "default", vec![8, 9, 7]),
|
||||
make_result("sequential", "read_1mb", "mmap", "default", vec![80, 85, 90]),
|
||||
make_result("sequential", "read_4kb", "pread", "default", vec![10, 12, 11]),
|
||||
make_result("sequential", "read_1mb", "pread", "default", vec![100, 110, 105]),
|
||||
make_result(
|
||||
"sequential",
|
||||
"read_1mb",
|
||||
"mmap",
|
||||
"default",
|
||||
vec![80, 85, 90],
|
||||
),
|
||||
make_result(
|
||||
"sequential",
|
||||
"read_4kb",
|
||||
"pread",
|
||||
"default",
|
||||
vec![10, 12, 11],
|
||||
),
|
||||
make_result(
|
||||
"sequential",
|
||||
"read_1mb",
|
||||
"pread",
|
||||
"default",
|
||||
vec![100, 110, 105],
|
||||
),
|
||||
];
|
||||
|
||||
let report_a = format_report(&set_a);
|
||||
let report_b = format_report(&set_b);
|
||||
assert_eq!(report_a, report_b, "Reports must be identical regardless of input order");
|
||||
assert_eq!(
|
||||
report_a, report_b,
|
||||
"Reports must be identical regardless of input order"
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -154,7 +154,11 @@ mod tests {
|
||||
("concurrent", Suite::Concurrent),
|
||||
];
|
||||
for (s, expected_suite) in expected {
|
||||
assert_eq!(Suite::from_str(s).unwrap(), expected_suite, "failed to parse '{s}'");
|
||||
assert_eq!(
|
||||
Suite::from_str(s).unwrap(),
|
||||
expected_suite,
|
||||
"failed to parse '{s}'"
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -1,5 +1,6 @@
|
||||
use std::collections::HashMap;
|
||||
|
||||
use crate::FileReaderBackend;
|
||||
use crate::metrics::MetricsCollector;
|
||||
use crate::mmap_reader::{
|
||||
MmapReaderPhaseAware, MmapReaderPlain, MmapReaderPopulate, MmapReaderRandom,
|
||||
@@ -8,7 +9,6 @@ use crate::mmap_reader::{
|
||||
use crate::pread_reader::{PreadReaderPlain, PreadReaderRandom, PreadReaderSequential};
|
||||
use crate::runner::BenchConfig;
|
||||
use crate::types::BenchmarkResult;
|
||||
use crate::FileReaderBackend;
|
||||
|
||||
pub fn run(config: &BenchConfig) -> Vec<BenchmarkResult> {
|
||||
let mut results = Vec::new();
|
||||
|
||||
@@ -1,12 +1,12 @@
|
||||
use std::collections::HashMap;
|
||||
|
||||
use crate::FileReaderBackend;
|
||||
use crate::data_gen;
|
||||
use crate::metrics::MetricsCollector;
|
||||
use crate::mmap_reader::MmapReaderPlain;
|
||||
use crate::pread_reader::PreadReaderPlain;
|
||||
use crate::runner::BenchConfig;
|
||||
use crate::types::BenchmarkResult;
|
||||
use crate::FileReaderBackend;
|
||||
|
||||
pub fn run(config: &BenchConfig) -> Vec<BenchmarkResult> {
|
||||
let mut results = Vec::new();
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
use std::collections::HashMap;
|
||||
|
||||
use super::FRAME_LINES;
|
||||
use crate::FileReaderBackend;
|
||||
use crate::metrics::MetricsCollector;
|
||||
use crate::mmap_reader::{
|
||||
MmapReaderPhaseAware, MmapReaderPlain, MmapReaderPopulate, MmapReaderRandom,
|
||||
@@ -9,7 +10,6 @@ use crate::mmap_reader::{
|
||||
use crate::pread_reader::{PreadReaderPlain, PreadReaderRandom, PreadReaderSequential};
|
||||
use crate::runner::BenchConfig;
|
||||
use crate::types::BenchmarkResult;
|
||||
use crate::FileReaderBackend;
|
||||
|
||||
pub fn run(config: &BenchConfig) -> Vec<BenchmarkResult> {
|
||||
let mut results = Vec::new();
|
||||
|
||||
@@ -1,5 +1,6 @@
|
||||
use std::collections::HashMap;
|
||||
|
||||
use crate::FileReaderBackend;
|
||||
use crate::metrics::MetricsCollector;
|
||||
use crate::mmap_reader::{
|
||||
MmapReaderPhaseAware, MmapReaderPlain, MmapReaderPopulate, MmapReaderRandom,
|
||||
@@ -8,7 +9,6 @@ use crate::mmap_reader::{
|
||||
use crate::pread_reader::{PreadReaderPlain, PreadReaderRandom, PreadReaderSequential};
|
||||
use crate::runner::BenchConfig;
|
||||
use crate::types::BenchmarkResult;
|
||||
use crate::FileReaderBackend;
|
||||
|
||||
pub fn run(config: &BenchConfig) -> Vec<BenchmarkResult> {
|
||||
let mut results = Vec::new();
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
use std::collections::HashMap;
|
||||
|
||||
use super::FRAME_LINES;
|
||||
use crate::FileReaderBackend;
|
||||
use crate::metrics::MetricsCollector;
|
||||
use crate::mmap_reader::{
|
||||
MmapReaderPhaseAware, MmapReaderPlain, MmapReaderPopulate, MmapReaderRandom,
|
||||
@@ -9,7 +10,6 @@ use crate::mmap_reader::{
|
||||
use crate::pread_reader::{PreadReaderPlain, PreadReaderRandom, PreadReaderSequential};
|
||||
use crate::runner::BenchConfig;
|
||||
use crate::types::BenchmarkResult;
|
||||
use crate::FileReaderBackend;
|
||||
|
||||
pub fn run(config: &BenchConfig) -> Vec<BenchmarkResult> {
|
||||
let mut results = Vec::new();
|
||||
@@ -248,7 +248,11 @@ mod tests {
|
||||
assert!(
|
||||
!ranges_overlap(pos[i].1, pos[j].1),
|
||||
"overlap: {:?} @ {} vs {:?} @ {} (total={})",
|
||||
pos[i].0, pos[i].1, pos[j].0, pos[j].1, total
|
||||
pos[i].0,
|
||||
pos[i].1,
|
||||
pos[j].0,
|
||||
pos[j].1,
|
||||
total
|
||||
);
|
||||
}
|
||||
}
|
||||
@@ -269,7 +273,10 @@ mod tests {
|
||||
assert!(
|
||||
!ranges_overlap(pos[i].1, pos[j].1),
|
||||
"overlap at total=104: {:?} @ {} vs {:?} @ {}",
|
||||
pos[i].0, pos[i].1, pos[j].0, pos[j].1
|
||||
pos[i].0,
|
||||
pos[i].1,
|
||||
pos[j].0,
|
||||
pos[j].1
|
||||
);
|
||||
}
|
||||
}
|
||||
@@ -283,7 +290,10 @@ mod tests {
|
||||
assert!(
|
||||
!ranges_overlap(pos[i].1, pos[j].1),
|
||||
"overlap at total=105: {:?} @ {} vs {:?} @ {}",
|
||||
pos[i].0, pos[i].1, pos[j].0, pos[j].1
|
||||
pos[i].0,
|
||||
pos[i].1,
|
||||
pos[j].0,
|
||||
pos[j].1
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,12 +1,12 @@
|
||||
use std::collections::HashMap;
|
||||
|
||||
use crate::FileReaderBackend;
|
||||
use crate::data_gen;
|
||||
use crate::metrics::MetricsCollector;
|
||||
use crate::mmap_reader::{self, MmapReaderPlain};
|
||||
use crate::pread_reader::PreadReaderPlain;
|
||||
use crate::runner::BenchConfig;
|
||||
use crate::types::BenchmarkResult;
|
||||
use crate::FileReaderBackend;
|
||||
|
||||
pub fn run(config: &BenchConfig) -> Vec<BenchmarkResult> {
|
||||
let mut results = Vec::new();
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
use std::collections::HashMap;
|
||||
use std::path::Path;
|
||||
|
||||
use crate::FileReaderBackend;
|
||||
use crate::metrics::MetricsCollector;
|
||||
use crate::mmap_reader::{
|
||||
MmapReaderPhaseAware, MmapReaderPlain, MmapReaderPopulate, MmapReaderRandom,
|
||||
@@ -9,7 +10,6 @@ use crate::mmap_reader::{
|
||||
use crate::pread_reader::{PreadReaderPlain, PreadReaderRandom, PreadReaderSequential};
|
||||
use crate::runner::BenchConfig;
|
||||
use crate::types::BenchmarkResult;
|
||||
use crate::FileReaderBackend;
|
||||
|
||||
pub fn run(config: &BenchConfig) -> Vec<BenchmarkResult> {
|
||||
let mut results = Vec::new();
|
||||
|
||||
Reference in New Issue
Block a user