Skip to content

Commit ce9836e

Browse files
committed
Properly remove tempdir after db bench
1 parent 41c07dc commit ce9836e

File tree

1 file changed

+24
-16
lines changed

1 file changed

+24
-16
lines changed

src/test/db_benchmark/db_benchmark.ml

Lines changed: 24 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -10,9 +10,11 @@ module Single_file_db = Single_file_impl.Make ()
1010

1111
module Multi_file_db = Multi_file_impl.Make ()
1212

13-
let init_db (type db) (module Db : Common.Database with type t = db) name =
13+
let init_db (type db) (module Db : Common.Database with type t = db) ~root name
14+
=
1415
(* Initialization: create DB and warmup *)
15-
let dir = Common.make_temp_dir (Printf.sprintf "db_bench_%s" name) in
16+
let dir = root ^/ name in
17+
Unix.mkdir_p dir ;
1618
let db = Db.create dir in
1719
Common.Ops.warmup (module Db) db ;
1820
eprintf "Warmup complete for %s\n" name ;
@@ -35,21 +37,23 @@ let make_read_bench (type db) (module Db : Common.Database with type t = db)
3537
let max_key = (Common.warmup_blocks * Common.keys_per_block) - 1 in
3638
fun () -> Common.Ops.random_read (module Db) db ~min_key ~max_key
3739

38-
let test ~name (type db) (module Db : Common.Database with type t = db)
40+
let test ~root ~name (type db) (module Db : Common.Database with type t = db)
3941
(f : (module Common.Database with type t = db) -> db -> unit -> unit) =
4042
Bench.Test.create_with_initialization ~name (fun `init ->
41-
init_db (module Db) name |> f (module Db) )
43+
init_db ~root (module Db) name |> f (module Db) )
4244

4345
(* Create all benchmarks *)
44-
let all_benchmarks () =
45-
[ test ~name:"rocksdb_write" (module Rocksdb_db) make_write_bench
46-
; test ~name:"rocksdb_read" (module Rocksdb_db) make_read_bench
47-
; test ~name:"lmdb_write" (module Lmdb_db) make_write_bench
48-
; test ~name:"lmdb_read" (module Lmdb_db) make_read_bench
49-
; test ~name:"single_file_write" (module Single_file_db) make_write_bench
50-
; test ~name:"single_file_read" (module Single_file_db) make_read_bench
51-
; test ~name:"multi_file_write" (module Multi_file_db) make_write_bench
52-
; test ~name:"multi_file_read" (module Multi_file_db) make_read_bench
46+
let all_benchmarks ~root () =
47+
[ test ~root ~name:"rocksdb_write" (module Rocksdb_db) make_write_bench
48+
; test ~root ~name:"rocksdb_read" (module Rocksdb_db) make_read_bench
49+
; test ~root ~name:"lmdb_write" (module Lmdb_db) make_write_bench
50+
; test ~root ~name:"lmdb_read" (module Lmdb_db) make_read_bench
51+
; test ~root ~name:"single_file_write"
52+
(module Single_file_db)
53+
make_write_bench
54+
; test ~root ~name:"single_file_read" (module Single_file_db) make_read_bench
55+
; test ~root ~name:"multi_file_write" (module Multi_file_db) make_write_bench
56+
; test ~root ~name:"multi_file_read" (module Multi_file_db) make_read_bench
5357
]
5458

5559
(* Filter benchmarks based on BENCHMARKS environment variable *)
@@ -83,6 +87,10 @@ let () =
8387
(Common.warmup_blocks * Common.keys_per_block) ;
8488
Printf.printf "\n" ;
8589

86-
(* Run benchmarks *)
87-
let benchmarks = all_benchmarks () |> filter_benchmarks in
88-
Command.run (Bench.make_command benchmarks)
90+
let root = Common.make_temp_dir "db_bench" in
91+
try
92+
let benchmarks = all_benchmarks ~root () |> filter_benchmarks in
93+
Command.run (Bench.make_command benchmarks)
94+
with e ->
95+
Common.cleanup_temp_dir root ;
96+
raise e

0 commit comments

Comments
 (0)