4 type t_f
= Csexp.t
-> (unit, string) result
Lwt.t
option
9 Job.do_wait ~
now ~jitter
1
11 |> Assrt.equals_string __LOC__
"1970-01-01T000100Z";
12 Job.do_wait ~
now ~jitter
10
14 |> Assrt.equals_string __LOC__
"1970-01-01T170300Z";
15 Job.do_wait ~
now ~jitter
13 (* maximum wait interval *)
17 |> Assrt.equals_string __LOC__
"1970-01-06T163100Z";
18 Job.do_wait ~
now ~jitter
14 (* maximum wait all interval summed up *)
20 |> Assrt.equals_string __LOC__
"1970-01-12T090300Z"
22 let test_compute_fn () =
25 let now = Job.do_wait ~
now ~jitter
10 |> Job.rfc3339
26 and nonce
= "foo bar baz" |> Bytes.of_string
|> Job.compute_nonce
in
27 Job.compute_fn
now 10 nonce
28 |> Assrt.equals_string __LOC__
"1970-01-01T170300Z.10.776976811.s"
31 Logr.debug
(fun m
-> m
"%s" "job_test.job");
32 let run_job_yes : t_f
= function
34 Logr.debug
(fun m
-> m
"%s run_job_yes: %s" "job_test.job" s
);
35 Some
(Lwt.return
(Ok
()))
38 Logr.debug
(fun m
-> m
"%s run_job_no" "job_test.job");
40 (* call functions from fkts with argument v until first return Some _ *)
41 let run_until_some (fkts
: t_f list
) (v
: Csexp.t
) =
42 fkts
|> List.fold_left
45 | Some _
as r
-> r
(* we have a result, don't call more workers *)
52 |> run_until_some [run_job_no; run_job_no; run_job_yes; run_job_yes; run_job_no]
54 | _
,None
-> Lwt.return
()
59 fn
|> Assrt.equals_string __LOC__
"fil" |> Lwt.return
61 x
|> Assrt.equals_string __LOC__
"" |> Lwt.return
65 let now = Ptime.epoch
in
67 Job.do_wait ~
now ~
jitter 3 |> Job.rfc3339
68 |> Assrt.equals_string __LOC__
"1970-01-01T000700Z";
69 Job.do_wait ~
now ~
jitter 13 |> Job.rfc3339
70 |> Assrt.equals_string __LOC__
"1970-01-06T163100Z";
72 Job.do_wait ~
now ~
jitter 3 |> Job.rfc3339
73 |> Assrt.equals_string __LOC__
"1970-01-01T000639Z";
74 Job.do_wait ~
now ~
jitter 13 |> Job.rfc3339
75 |> Assrt.equals_string __LOC__
"1970-01-06T094127Z";
82 Lwt_main.run
(test_job ())