difftreelog
test run cpp test suite with criterion
in: master
5 files changed
tests/.gitignorediffbeforeafterboth--- a/tests/.gitignore
+++ b/tests/.gitignore
@@ -1,2 +1,5 @@
/cpp_test_suite
/go_testdata
+/go_builtin_benchmarks
+/cpp_benchmarks
+/cpp_perf_tests
tests/Cargo.tomldiffbeforeafterboth--- a/tests/Cargo.toml
+++ b/tests/Cargo.toml
@@ -29,5 +29,5 @@
bench = false
[[bench]]
-name = "prim_comparsion"
+name = "cpp_test_suite"
harness = false
tests/benches/cpp_test_suite.rsdiffbeforeafterboth1use std::{collections::HashMap, fs::read_dir, hint::black_box, path::Path};23use criterion::{Criterion, criterion_group, criterion_main};4use jrsonnet_evaluator::{5 FileImportResolver, State, apply_tla, manifest::JsonFormat, trace::PathResolver,6};78fn bench_entry(c: &mut Criterion, path: &Path) {9 c.bench_function(10 path.file_name()11 .expect("file path")12 .to_str()13 .expect("name is utf-8"),14 |b| {15 let mut s = State::builder();1617 s.context_initializer(jrsonnet_stdlib::ContextInitializer::new(18 PathResolver::Absolute,19 ))20 .import_resolver(FileImportResolver::new(vec![]));2122 let s = s.build();23 let _s = s.enter();2425 b.iter(|| {26 let imported = s.import(path).expect("evaluated");27 let res = apply_tla(&HashMap::new(), imported).expect("tla applied");28 black_box(res.manifest(JsonFormat::cli(3)))29 });30 },31 );32}33fn criterion_benchmark(c: &mut Criterion) {34 for entry in read_dir("go_builtin_benchmarks").expect("dir exists") {35 let entry = entry.expect("entry is valid");36 assert!(entry.metadata().expect("entry is valid").is_file());37 bench_entry(c, &entry.path());38 }39 for entry in read_dir("cpp_perf_tests").expect("dir exists") {40 let entry = entry.expect("entry is valid");41 assert!(entry.metadata().expect("entry is valid").is_file());42 bench_entry(c, &entry.path());43 }44 for entry in read_dir("cpp_benchmarks").expect("dir exists") {45 let entry = entry.expect("entry is valid");46 // Skip .gitignore47 if entry.path().extension().is_none() {48 continue;49 }50 assert!(entry.metadata().expect("entry is valid").is_file());51 bench_entry(c, &entry.path());52 }53}5455criterion_group!(benches, criterion_benchmark);56criterion_main!(benches);tests/benches/prim_comparsion.rsdiffbeforeafterboth--- a/tests/benches/prim_comparsion.rs
+++ /dev/null
@@ -1,32 +0,0 @@
-use std::hint::black_box;
-
-use criterion::{Criterion, criterion_group, criterion_main};
-use jrsonnet_evaluator::{State, manifest::JsonFormat, trace::PathResolver};
-
-fn criterion_benchmark(c: &mut Criterion) {
- c.bench_function("prim_comparison", |b| {
- let mut s = State::builder();
-
- s.context_initializer(jrsonnet_stdlib::ContextInitializer::new(
- PathResolver::Absolute,
- ));
-
- let s = s.build();
- let _s = s.enter();
-
- b.iter(|| {
- black_box(
- s.evaluate_snippet(
- "snippet",
- "([ i < j for i in std.range(1, 1000) for j in std.range(1, 1000)])",
- )
- .expect("evaluated")
- .manifest(JsonFormat::cli(3))
- .expect("manifested"),
- )
- });
- });
-}
-
-criterion_group!(benches, criterion_benchmark);
-criterion_main!(benches);
xtask/src/main.rsdiffbeforeafterboth--- a/xtask/src/main.rs
+++ b/xtask/src/main.rs
@@ -123,8 +123,18 @@
.run()?;
sh.remove_path("cpp_test_suite")?;
sh.remove_path("go_testdata")?;
+ sh.remove_path("cpp_perf_tests")?;
+ sh.remove_path("cpp_benchmarks")?;
+ sh.remove_path("go_builtin_benchmarks")?;
cmd!(sh, "mv {git_dir_path}/jsonnet/test_suite cpp_test_suite").run()?;
cmd!(sh, "mv {git_dir_path}/go-jsonnet/testdata go_testdata").run()?;
+ cmd!(sh, "mv {git_dir_path}/jsonnet/perf_tests cpp_perf_tests").run()?;
+ cmd!(sh, "mv {git_dir_path}/jsonnet/benchmarks cpp_benchmarks").run()?;
+ cmd!(
+ sh,
+ "mv {git_dir_path}/go-jsonnet/builtin-benchmarks go_builtin_benchmarks"
+ )
+ .run()?;
Ok(())
}