mte/unikernel/duniverse/ocaml-crunch/test/consumer.ml
2025-11-11 02:07:51 +01:00

42 lines
1.6 KiB
OCaml

open Lwt.Infix
let key s = Mirage_kv.Key.v s
let size t1 key =
T1.get t1 key >|= function Ok r -> Ok (String.length r) | Error e -> Error e
let main =
T1.connect () >>= fun src ->
(T1.get src (key "a.ext") >|= function
| Ok res ->
if res = "foo\n" then print_endline "read a.ext successfully"
else Fmt.failwith "unexpected read value, expecting foo, read: %s" res
| Error e -> Fmt.failwith "error while reading 'a.ext': %a" T1.pp_error e)
>>= fun () ->
(size src (key "c") >>= function
| Error _ -> Fmt.failwith "error while calling size on 'c'"
| Ok l ->
if l = 4100 then
T1.get src (key "c") >|= function
| Error e -> Fmt.failwith "error while reading 'c': %a" T1.pp_error e
| Ok _ -> print_endline "read 'c' successfully"
else failwith "invalid size while reading 'c'")
>>= fun () ->
(size src (key "d") >>= function
| Error e -> Fmt.failwith "error while calling size on 'd': %a" T1.pp_error e
| Ok l ->
if l = 12300 then
T1.get src (key "d") >|= function
| Error e -> Fmt.failwith "error while reading 'd': %a" T1.pp_error e
| Ok _ -> print_endline "read 'd' successfully"
else Fmt.failwith "invalid size while reading 'd'")
>>= fun () ->
T1.get src (key "e/f") >|= function
| Error e -> Fmt.failwith "error while reading 'd': %a" T1.pp_error e
| Ok data ->
if data = "hallohallo\n" then print_endline "read e/f successfully"
else
Fmt.failwith "unexpected read value, expecting hallohallo, read: %s"
data
let () = Lwt_main.run main