1 module Hh_bucket
= Bucket
(* Bucket is shadowed by Core_kernel *)
8 let to_string = string_of_int
14 SharedMem.NoCache
(SharedMem.Immediate
) (IntKey
)
18 let prefix = Prefix.make
()
20 let description = "Test_Ids"
24 WorkerController.register_entry_point ~restore
:(fun () ~
(worker_id
: int) ->
25 Hh_logger.set_id
(Printf.sprintf
"test_workers %d" worker_id
))
28 Daemon.check_entry_point
();
30 let num_workers = 4 in
35 SharedMem.global_size
= 0;
36 heap_size
= 10 * 1024 * 1024;
52 ~nbr_procs
:num_workers
53 ~gc_control
:(Gc.get
())
57 let ids_per_job = 100 in
58 (* Ensure all ids within a job increase monotonically. *)
60 let ids = Array.create ~len
:ids_per_job 0 in
62 for i
= 0 to ids_per_job - 1 do
63 let id = Ident.tmp
() in
68 Printf.printf
"Adding job %d\n" job_id
;
72 (* Also add some ids from the master process *)
77 if i < num_jobs then (
83 let merge () () = () in
84 MultiWorker.call
(Some
workers) ~neutral
:() ~
job ~
merge ~
next;
86 (* Ensure ids are globally unique. *)
87 let all_ids_len = num_jobs * ids_per_job in
88 let all_ids = Array.create ~len
:all_ids_len 0 in
89 for job_id = 0 to num_jobs - 1 do
90 let ids = Ids.find_unsafe
job_id in
91 for i = 0 to ids_per_job - 1 do
92 all_ids.((job_id * ids_per_job) + i) <- ids.(i)
96 Array.sort ~
compare:( - ) all_ids;
99 for i = 0 to all_ids_len - 1 do
100 let id = all_ids.(i) in