Skip to content

Commit 1e230e3

Browse files
authored
Add benchmarks for validation engine (#42)
Fixes #12
1 parent 71934fb commit 1e230e3

2 files changed

Lines changed: 51 additions & 0 deletions

File tree

‎Cargo.toml‎

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,11 @@ serde_json = "1.0"
2525
tempfile = "3.10"
2626
assert_cmd = "2.0"
2727
predicates = "3.1"
28+
criterion = "0.5"
29+
30+
[[bench]]
31+
name = "validation_bench"
32+
harness = false
2833

2934
[[bin]]
3035
name = "envcheck"

‎benches/validation_bench.rs‎

Lines changed: 46 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,46 @@
1+
use criterion::{black_box, criterion_group, criterion_main, Criterion};
2+
use envcheck::config::{Config, ToolCheck, EnvVarCheck, FileCheck};
3+
use envcheck::validators::run_all_validations;
4+
5+
fn bench_validation(c: &mut Criterion) {
6+
let config = Config {
7+
version: "1".to_string(),
8+
tools: vec![
9+
ToolCheck {
10+
name: "node".to_string(),
11+
version: Some(">=18.0.0".to_string()),
12+
required: true,
13+
},
14+
ToolCheck {
15+
name: "git".to_string(),
16+
version: None,
17+
required: true,
18+
},
19+
],
20+
env_vars: vec![
21+
EnvVarCheck {
22+
name: "PATH".to_string(),
23+
required: true,
24+
pattern: None,
25+
},
26+
],
27+
ports: vec![3000, 5432, 6379, 8080],
28+
files: vec![
29+
FileCheck {
30+
path: "Cargo.toml".to_string(),
31+
required: true,
32+
is_directory: false,
33+
permissions: None,
34+
},
35+
],
36+
};
37+
38+
c.bench_function("run_all_validations", |b| {
39+
b.iter(|| {
40+
let _ = run_all_validations(black_box(&config));
41+
})
42+
});
43+
}
44+
45+
criterion_group!(benches, bench_validation);
46+
criterion_main!(benches);

0 commit comments

Comments
 (0)