Add flag shm_use_sharded_hashtbl placeholder
[hiphop-php.git] / hphp / hack / test / unit / heap / test_rawheap.ml
blob7f47a5e074a0ffbb580f5d27d30817f48def444d
1 (*
2 * Copyright (c) 2015, Facebook, Inc.
3 * All rights reserved.
5 * This source code is licensed under the MIT license found in the
6 * LICENSE file in the "hack" directory of this source tree.
9 *)
11 type key = Digest.t
13 module IntVal = struct
14 type t = int
16 let prefix = Prefix.make ()
18 let description = "Test_IntVal"
19 end
21 let expect ~msg bool =
22 if bool then
24 else (
25 print_endline msg;
26 Printexc.(get_callstack 100 |> print_raw_backtrace stderr);
27 exit 1
30 let expect_equals ~name value expected =
31 let str x =
32 match x with
33 | None -> "None"
34 | Some n -> Printf.sprintf "(Some '%d')" n
36 expect
37 ~msg:
38 (Printf.sprintf
39 "Expected key %s to equal %s, got %s"
40 name
41 (str expected)
42 (str value))
43 (value = expected)
45 let test_heap_handle () =
46 let handle = SharedMem.get_handle () in
47 expect ~msg:"" SharedMem.(handle.h_heap_size = 409600);
48 expect ~msg:"" SharedMem.(handle.h_global_size = 16);
49 (* no-op *)
50 SharedMem.connect handle ~worker_id:0
52 let test_serialize_deserialize () =
53 let test_val kind x =
54 let entry = SharedMem.serialize_raw x in
55 let y = SharedMem.deserialize_raw entry in
56 expect
57 ~msg:
58 (Format.sprintf "%s value not preserved via serialize/deserialize" kind)
59 (x = y)
61 test_val "int" 55;
62 test_val "list of ints" [1; 3; 5];
63 test_val "option of string" (Some "foobar")
65 let test_add_raw_get_raw () =
66 let test_key_val key value =
67 let entry = SharedMem.serialize_raw value in
68 let () = SharedMem.add_raw key entry in
69 let entry2 = SharedMem.get_raw key in
70 let value2 = SharedMem.deserialize_raw entry2 in
71 expect ~msg:(Format.sprintf "%s add/get failed" key) (value = value2)
73 test_key_val "foo" "bar";
74 test_key_val "baz" [1; 4; 6];
75 test_key_val "bar" (Some "option")
77 let tests () =
78 let list =
80 ("test_heap_handle", test_heap_handle);
81 ("test_serialize_deserialize", test_serialize_deserialize);
82 ("test_add_raw_get_raw", test_add_raw_get_raw);
85 let setup_test (name, test) =
86 ( name,
87 fun () ->
88 let num_workers = 0 in
89 let handle =
90 SharedMem.init
91 ~num_workers
93 SharedMem.global_size = 16;
94 heap_size = 409600;
95 dep_table_pow = 2;
96 hash_table_pow = 12;
97 shm_dirs = [];
98 shm_use_sharded_hashtbl = false;
99 shm_min_avail = 0;
100 log_level = 0;
101 sample_rate = 0.0;
102 compression = 0;
105 ignore (handle : SharedMem.handle);
106 test ();
107 true )
109 List.map setup_test list
111 let () = Unit_test.run_all (tests ())