2 * Copyright (c) 2015, Facebook, Inc.
5 * This source code is licensed under the MIT license found in the
6 * LICENSE file in the "hack" directory of this source tree.
13 module IntVal
= struct
16 let prefix = Prefix.make
()
18 let description = "Test_IntVal"
21 let expect ~msg
bool =
26 Printexc.(get_callstack
100 |> print_raw_backtrace stderr
);
30 let expect_equals ~name
value expected
=
34 | Some n
-> Printf.sprintf
"(Some '%d')" n
39 "Expected key %s to equal %s, got %s"
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);
50 SharedMem.connect
handle ~worker_id
:0
52 let test_serialize_deserialize () =
54 let entry = SharedMem.serialize_raw x
in
55 let y = SharedMem.deserialize_raw
entry in
58 (Format.sprintf
"%s value not preserved via serialize/deserialize" kind
)
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")
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
) =
88 let num_workers = 0 in
93 SharedMem.global_size
= 16;
98 shm_use_sharded_hashtbl
= false;
105 ignore
(handle : SharedMem.handle);
109 List.map
setup_test list
111 let () = Unit_test.run_all
(tests ())