From d3bb7652baffbb9f3bb00fe44fb9b7996a1d26bc Mon Sep 17 00:00:00 2001 From: Simon Cruanes Date: Mon, 5 Jun 2023 13:04:35 -0400 Subject: [PATCH] test: test running multiple pools in succession, then all at once --- test/t_fib.ml | 20 +++++++++++++++----- 1 file changed, 15 insertions(+), 5 deletions(-) diff --git a/test/t_fib.ml b/test/t_fib.ml index 0d5310af..38e3cb50 100644 --- a/test/t_fib.ml +++ b/test/t_fib.ml @@ -1,7 +1,5 @@ open Moonpool -let pool = Pool.create ~min:4 () - let rec fib x = if x <= 1 then 1 @@ -9,10 +7,13 @@ let rec fib x = fib (x - 1) + fib (x - 2) let () = assert (List.init 10 fib = [ 1; 1; 2; 3; 5; 8; 13; 21; 34; 55 ]) -let fibs = Array.init 30 (fun n -> Fut.spawn ~on:pool (fun () -> fib n)) -let res = Fut.join_array fibs |> Fut.wait_block -let () = +let run_test () = + let pool = Pool.create ~min:4 () in + let fibs = Array.init 30 (fun n -> Fut.spawn ~on:pool (fun () -> fib n)) in + let res = Fut.join_array fibs |> Fut.wait_block in + Pool.shutdown pool; + assert ( res = Ok @@ -48,3 +49,12 @@ let () = 514229; 832040; |]) + +let () = + for _i = 1 to 4 do + run_test () + done; + + (* now make sure we can do this with multiple pools in parallel *) + let jobs = Array.init 4 (fun _ -> Thread.create run_test ()) in + Array.iter Thread.join jobs