Skip to content

Commit 4fad447

Browse files
committed
Add more test utils to reduce boilerplate code
1 parent 36bc937 commit 4fad447

File tree

14 files changed

+163
-149
lines changed

14 files changed

+163
-149
lines changed

spdlog/benches/compare_with_cpp_spdlog.rs

Lines changed: 16 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,12 @@ use spdlog::{
1616
};
1717
use test::black_box;
1818

19+
include!(concat!(
20+
env!("OUT_DIR"),
21+
"/test_utils/common_for_integration_test.rs"
22+
));
23+
use test_utils::*;
24+
1925
static LOGS_PATH: Lazy<PathBuf> = Lazy::new(|| {
2026
let path = common::BENCH_LOGS_PATH.join("compare_with_cpp_spdlog");
2127
fs::create_dir_all(&path).unwrap();
@@ -35,21 +41,20 @@ fn bench_threaded_logging(threads: usize, iters: usize) {
3541
info!("Multi threaded: {} threads, {} messages", threads, iters);
3642
info!("**********************************************************************");
3743

38-
let logger = Logger::builder()
39-
.sink(Arc::new(
44+
let logger = build_test_logger(|b| {
45+
b.sink(Arc::new(
4046
FileSink::builder()
4147
.path(LOGS_PATH.join("FileSink.log"))
4248
.truncate(true)
4349
.build()
4450
.unwrap(),
4551
))
4652
.name("basic_mt")
47-
.build()
48-
.unwrap();
53+
});
4954
bench_mt(logger, threads, iters);
5055

51-
let logger = Logger::builder()
52-
.sink(Arc::new(
56+
let logger = build_test_logger(|b| {
57+
b.sink(Arc::new(
5358
RotatingFileSink::builder()
5459
.base_path(LOGS_PATH.join("RotatingFileSink_FileSize.log"))
5560
.rotation_policy(RotationPolicy::FileSize(FILE_SIZE))
@@ -58,28 +63,22 @@ fn bench_threaded_logging(threads: usize, iters: usize) {
5863
.unwrap(),
5964
))
6065
.name("rotating_mt")
61-
.build()
62-
.unwrap();
66+
});
6367
bench_mt(logger, threads, iters);
6468

65-
let logger = Logger::builder()
66-
.sink(Arc::new(
69+
let logger = build_test_logger(|b| {
70+
b.sink(Arc::new(
6771
RotatingFileSink::builder()
6872
.base_path(LOGS_PATH.join("RotatingFileSink_Daily.log"))
6973
.rotation_policy(RotationPolicy::Daily { hour: 0, minute: 0 })
7074
.build()
7175
.unwrap(),
7276
))
7377
.name("daily_mt")
74-
.build()
75-
.unwrap();
78+
});
7679
bench_mt(logger, threads, iters);
7780

78-
let logger = Logger::builder()
79-
.name("level-off")
80-
.level_filter(LevelFilter::Off)
81-
.build()
82-
.unwrap();
81+
let logger = build_test_logger(|b| b.name("level-off").level_filter(LevelFilter::Off));
8382
bench_mt(logger, threads, iters);
8483
}
8584

spdlog/benches/pattern.rs

Lines changed: 19 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -7,11 +7,17 @@ use std::{cell::RefCell, sync::Arc};
77
use spdlog::{
88
formatter::{pattern, Formatter, FullFormatter, Pattern, PatternFormatter},
99
prelude::*,
10-
sink::{Sink, WriteSink},
10+
sink::Sink,
1111
Record, StringBuf,
1212
};
1313
use test::Bencher;
1414

15+
include!(concat!(
16+
env!("OUT_DIR"),
17+
"/test_utils/common_for_integration_test.rs"
18+
));
19+
use test_utils::*;
20+
1521
#[derive(Clone)]
1622
struct BenchSink<F> {
1723
formatter: F,
@@ -61,7 +67,7 @@ impl<F: Formatter> Sink for BenchSink<F> {
6167

6268
fn bench_formatter(bencher: &mut Bencher, formatter: impl Formatter + 'static) {
6369
let bench_sink = Arc::new(BenchSink::new(formatter));
64-
let logger = Logger::builder().sink(bench_sink).build().unwrap();
70+
let logger = build_test_logger(|b| b.sink(bench_sink));
6571

6672
bencher.iter(|| info!(logger: logger, "payload"));
6773
}
@@ -79,34 +85,20 @@ fn bench_1_full_formatter(bencher: &mut Bencher) {
7985
fn bench_2_full_pattern(bencher: &mut Bencher) {
8086
let pattern = pattern!("[{date} {time}.{millisecond}] [{level}] {payload}{eol}");
8187

82-
let full_formatter = Arc::new(
83-
WriteSink::builder()
84-
.formatter(Box::new(FullFormatter::new()))
85-
.target(Vec::new())
86-
.build()
87-
.unwrap(),
88-
);
89-
90-
let full_pattern = Arc::new(
91-
WriteSink::builder()
92-
.formatter(Box::new(PatternFormatter::new(pattern.clone())))
93-
.target(Vec::new())
94-
.build()
95-
.unwrap(),
96-
);
97-
98-
let combination = Logger::builder()
99-
.sink(full_formatter.clone())
100-
.sink(full_pattern.clone())
101-
.build()
102-
.unwrap();
88+
let full_formatter = Arc::new(StringSink::with(|b| {
89+
b.formatter(Box::new(FullFormatter::new()))
90+
}));
91+
92+
let full_pattern = Arc::new(StringSink::with(|b| {
93+
b.formatter(Box::new(PatternFormatter::new(pattern.clone())))
94+
}));
95+
96+
let combination =
97+
build_test_logger(|b| b.sink(full_formatter.clone()).sink(full_pattern.clone()));
10398

10499
info!(logger: combination, "test payload");
105100

106-
assert_eq!(
107-
String::from_utf8(full_formatter.clone_target()).unwrap(),
108-
String::from_utf8(full_pattern.clone_target()).unwrap()
109-
);
101+
assert_eq!(full_formatter.clone_string(), full_pattern.clone_string());
110102

111103
bench_pattern(bencher, pattern)
112104
}

spdlog/benches/spdlog_rs.rs

Lines changed: 11 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,12 @@ use spdlog::{
1515
};
1616
use test::Bencher;
1717

18+
include!(concat!(
19+
env!("OUT_DIR"),
20+
"/test_utils/common_for_integration_test.rs"
21+
));
22+
use test_utils::*;
23+
1824
required_multi_thread_feature!();
1925

2026
static LOGS_PATH: Lazy<PathBuf> = Lazy::new(|| {
@@ -74,11 +80,10 @@ impl Mode {
7480
fn bench_any(bencher: &mut Bencher, mode: Mode, sink: Arc<dyn Sink>) {
7581
sink.set_error_handler(Some(|err| panic!("an error occurred: {err}")));
7682

77-
let mut logger_builder = Logger::builder();
78-
logger_builder
79-
.error_handler(mode.error_handler())
80-
.sink(mode.final_sink(sink));
81-
let logger = logger_builder.build().unwrap();
83+
let logger = build_test_logger(|b| {
84+
b.error_handler(mode.error_handler())
85+
.sink(mode.final_sink(sink))
86+
});
8287

8388
bencher.iter(|| info!(logger: logger, bench_log_message!()))
8489
}
@@ -133,10 +138,7 @@ fn bench_4_rotating_daily(bencher: &mut Bencher) {
133138

134139
#[bench]
135140
fn bench_5_level_off(bencher: &mut Bencher) {
136-
let logger = Logger::builder()
137-
.level_filter(LevelFilter::Off)
138-
.build()
139-
.unwrap();
141+
let logger = build_test_logger(|b| b.level_filter(LevelFilter::Off));
140142

141143
bencher.iter(|| info!(logger: logger, bench_log_message!()))
142144
}

spdlog/build.rs

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -43,6 +43,10 @@ fn generate_code_test_utils() -> Result<(), Box<dyn Error>> {
4343
.map(|line| format!("# {}\n", line))
4444
.collect::<String>(),
4545
)?;
46+
write_generated_code(
47+
out_dir.join("common_for_integration_test.rs"),
48+
format!("#[allow(dead_code)]\nmod test_utils {{\n{}\n}}", input),
49+
)?;
4650
write_generated_code(
4751
out_dir.join("common_for_unit_test.rs"),
4852
input.replace("spdlog::", "crate::"),

spdlog/src/formatter/pattern_formatter/mod.rs

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -81,7 +81,7 @@ use crate::{
8181
///
8282
/// info!(logger: doctest, "Interesting log message");
8383
/// # assert_eq!(
84-
/// # String::from_utf8(sink.clone_target()).unwrap(),
84+
/// # sink.clone_string(),
8585
/// /* Output */ "[info] Interesting log message"
8686
/// # );
8787
/// ```
@@ -106,7 +106,7 @@ use crate::{
106106
///
107107
/// info!(logger: doctest, "Interesting log message");
108108
/// # assert_eq!(
109-
/// # String::from_utf8(sink.clone_target()).unwrap(),
109+
/// # sink.clone_string(),
110110
/// /* Output */ "[{escaped}] Interesting log message"
111111
/// # );
112112
/// ```
@@ -135,7 +135,7 @@ use crate::{
135135
///
136136
/// info!(logger: doctest, "Interesting log message");
137137
/// # assert_eq!(
138-
/// # String::from_utf8(sink.clone_target()).unwrap(),
138+
/// # sink.clone_string(),
139139
/// /* Output */ "[info] Interesting log message"
140140
/// // ^^^^^^ <- style range
141141
/// # );
@@ -182,7 +182,7 @@ use crate::{
182182
///
183183
/// info!(logger: doctest, "Interesting log message");
184184
/// # assert_eq!(
185-
/// # String::from_utf8(sink.clone_target()).unwrap(),
185+
/// # sink.clone_string(),
186186
/// /* Output */ "[info] Interesting log message - My own pattern"
187187
/// # );
188188
/// ```
@@ -251,7 +251,7 @@ use crate::{
251251
///
252252
/// info!(logger: doctest, "Interesting log message");
253253
/// # assert_eq!(
254-
/// # String::from_utf8(sink.clone_target()).unwrap(),
254+
/// # sink.clone_string(),
255255
/// /* Output */ "[info] Interesting log message - 0 1 2"
256256
/// # );
257257
/// ```

spdlog/src/lib.rs

Lines changed: 1 addition & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -726,12 +726,7 @@ mod tests {
726726
fn test_default_logger() {
727727
let test_sink = Arc::new(CounterSink::new());
728728

729-
let test_logger = Arc::new(
730-
test_logger_builder()
731-
.sink(test_sink.clone())
732-
.build()
733-
.unwrap(),
734-
);
729+
let test_logger = Arc::new(build_test_logger(|b| b.sink(test_sink.clone())));
735730
let empty_logger = Arc::new(Logger::builder().build().unwrap());
736731

737732
set_default_logger(empty_logger.clone());

spdlog/src/log_crate_proxy.rs

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -103,9 +103,8 @@ mod tests {
103103
log::set_max_level(log::LevelFilter::Debug);
104104

105105
let sink = Arc::new(CounterSink::new());
106-
crate::log_crate_proxy().set_logger(Some(Arc::new(
107-
test_logger_builder().sink(sink.clone()).build().unwrap(),
108-
)));
106+
crate::log_crate_proxy()
107+
.set_logger(Some(Arc::new(build_test_logger(|b| b.sink(sink.clone())))));
109108

110109
assert_eq!(sink.log_count(), 0);
111110

spdlog/src/logger.rs

Lines changed: 7 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -302,11 +302,12 @@ impl Logger {
302302
/// # Examples
303303
///
304304
/// ```
305+
#[doc = include_str!(concat!(env!("OUT_DIR"), "/test_utils/common_for_doc_test.rs"))]
305306
/// # use std::sync::Arc;
306-
/// # use spdlog::{prelude::*, sink::WriteSink};
307+
/// # use spdlog::prelude::*;
307308
/// #
308309
/// # fn main() -> Result<(), Box<dyn std::error::Error>> {
309-
/// # let test_sink = Arc::new(WriteSink::builder().target(vec![]).build().unwrap());
310+
/// # let test_sink = Arc::new(test_utils::StringSink::new());
310311
/// let old: Arc<Logger> = /* ... */
311312
/// # Arc::new(Logger::builder().build().unwrap());
312313
/// // Fork from an existing logger and add a new sink.
@@ -318,9 +319,9 @@ impl Logger {
318319
///
319320
/// # info!(logger: new, "first line");
320321
/// info!(logger: new, "this record will be written to `new_sink`");
321-
/// # assert_eq!(String::from_utf8(test_sink.clone_target()).unwrap().lines().count(), 2);
322+
/// # assert_eq!(test_sink.clone_string().lines().count(), 2);
322323
/// info!(logger: old, "this record will not be written to `new_sink`");
323-
/// # assert_eq!(String::from_utf8(test_sink.clone_target()).unwrap().lines().count(), 2);
324+
/// # assert_eq!(test_sink.clone_string().lines().count(), 2);
324325
/// # Ok(()) }
325326
/// ```
326327
pub fn fork_with<F>(self: &Arc<Self>, modifier: F) -> Result<Arc<Self>>
@@ -789,12 +790,7 @@ mod tests {
789790
#[test]
790791
fn fork_logger() {
791792
let test_sink = (Arc::new(CounterSink::new()), Arc::new(CounterSink::new()));
792-
let logger = Arc::new(
793-
test_logger_builder()
794-
.sink(test_sink.0.clone())
795-
.build()
796-
.unwrap(),
797-
);
793+
let logger = Arc::new(build_test_logger(|b| b.sink(test_sink.0.clone())));
798794

799795
assert!(logger.name().is_none());
800796
assert_eq!(test_sink.0.log_count(), 0);
@@ -847,12 +843,7 @@ mod tests {
847843
.is_none());
848844

849845
let test_sink = (Arc::new(CounterSink::new()), Arc::new(CounterSink::new()));
850-
let old = Arc::new(
851-
test_logger_builder()
852-
.sink(test_sink.0.clone())
853-
.build()
854-
.unwrap(),
855-
);
846+
let old = Arc::new(build_test_logger(|b| b.sink(test_sink.0.clone())));
856847
old.set_flush_period(Some(Duration::from_secs(1)));
857848
std::thread::sleep(Duration::from_millis(1250));
858849

spdlog/src/sink/async_sink/async_pool_sink.rs

Lines changed: 9 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -239,17 +239,16 @@ mod tests {
239239
fn default_thread_pool() {
240240
let counter_sink = Arc::new(CounterSink::new());
241241
let build_logger = || {
242-
Logger::builder()
243-
.sink(Arc::new(
242+
build_test_logger(|b| {
243+
b.sink(Arc::new(
244244
AsyncPoolSink::builder()
245245
.sink(counter_sink.clone())
246246
.build()
247247
.unwrap(),
248248
))
249249
.level_filter(LevelFilter::All)
250250
.flush_level_filter(LevelFilter::MoreSevereEqual(Level::Error))
251-
.build()
252-
.unwrap()
251+
})
253252
};
254253

255254
assert_eq!(counter_sink.log_count(), 0);
@@ -288,8 +287,8 @@ mod tests {
288287
fn custom_thread_pool() {
289288
let counter_sink = Arc::new(CounterSink::new());
290289
let thread_pool = Arc::new(ThreadPool::builder().build().unwrap());
291-
let logger = Logger::builder()
292-
.sink(Arc::new(
290+
let logger = build_test_logger(|b| {
291+
b.sink(Arc::new(
293292
AsyncPoolSink::builder()
294293
.sink(counter_sink.clone())
295294
.thread_pool(thread_pool)
@@ -298,8 +297,7 @@ mod tests {
298297
))
299298
.level_filter(LevelFilter::All)
300299
.flush_level_filter(LevelFilter::MoreSevereEqual(Level::Error))
301-
.build()
302-
.unwrap();
300+
});
303301

304302
assert_eq!(counter_sink.log_count(), 0);
305303
assert_eq!(counter_sink.flush_count(), 0);
@@ -326,8 +324,8 @@ mod tests {
326324
// The default thread pool is not used here to avoid race when tests are run in
327325
// parallel.
328326
let thread_pool = Arc::new(ThreadPool::builder().build().unwrap());
329-
let logger = Logger::builder()
330-
.sink(Arc::new(
327+
let logger = build_test_logger(|b| {
328+
b.sink(Arc::new(
331329
AsyncPoolSink::builder()
332330
.sink(counter_sink.clone())
333331
.thread_pool(thread_pool)
@@ -336,8 +334,7 @@ mod tests {
336334
))
337335
.level_filter(LevelFilter::All)
338336
.flush_level_filter(LevelFilter::MoreSevereEqual(Level::Warn))
339-
.build()
340-
.unwrap();
337+
});
341338

342339
assert_eq!(counter_sink.log_count(), 0);
343340
assert_eq!(counter_sink.flush_count(), 0);

0 commit comments

Comments
 (0)