This commit is contained in:
parent
aa2ff7b2f0
commit
2f3113f55d
11742 changed files with 1223940 additions and 0 deletions
73
unikernel/duniverse/httpun/lib_test/helpers.ml
Normal file
73
unikernel/duniverse/httpun/lib_test/helpers.ml
Normal file
|
|
@ -0,0 +1,73 @@
|
|||
open Httpun
|
||||
|
||||
let maybe_serialize_body f body =
|
||||
match body with
|
||||
| None -> ()
|
||||
| Some body -> Faraday.write_string f body
|
||||
|
||||
let request_to_string ?body r =
|
||||
let f = Faraday.create 0x1000 in
|
||||
Httpun_private.Serialize.write_request f r;
|
||||
maybe_serialize_body f body;
|
||||
Faraday.serialize_to_string f
|
||||
|
||||
let response_to_string ?body r =
|
||||
let f = Faraday.create 0x1000 in
|
||||
Httpun_private.Serialize.write_response f r;
|
||||
maybe_serialize_body f body;
|
||||
Faraday.serialize_to_string f
|
||||
|
||||
module Read_operation = struct
|
||||
type t = [ `Read | `Yield | `Close ]
|
||||
|
||||
let pp_hum fmt (t : t) =
|
||||
let str =
|
||||
match t with
|
||||
| `Read -> "Read"
|
||||
| `Yield -> "Yield"
|
||||
| `Close -> "Close"
|
||||
in
|
||||
Format.pp_print_string fmt str
|
||||
;;
|
||||
end
|
||||
|
||||
module Write_operation = struct
|
||||
type t = [ `Write of Bigstringaf.t IOVec.t list | `Yield | `Close of int ]
|
||||
|
||||
let iovecs_to_string iovecs =
|
||||
let len = IOVec.lengthv iovecs in
|
||||
let bytes = Bytes.create len in
|
||||
let dst_off = ref 0 in
|
||||
List.iter (fun { IOVec.buffer; off = src_off; len } ->
|
||||
Bigstringaf.unsafe_blit_to_bytes buffer ~src_off bytes ~dst_off:!dst_off ~len;
|
||||
dst_off := !dst_off + len)
|
||||
iovecs;
|
||||
Bytes.unsafe_to_string bytes
|
||||
;;
|
||||
|
||||
let pp_hum fmt (t : t) =
|
||||
match t with
|
||||
| `Write iovecs -> Format.fprintf fmt "Write %S" (iovecs_to_string iovecs)
|
||||
| `Yield -> Format.pp_print_string fmt "Yield"
|
||||
| `Close len -> Format.fprintf fmt "Close %i" len
|
||||
;;
|
||||
|
||||
let to_write_as_string t =
|
||||
match t with
|
||||
| `Write iovecs -> Some (iovecs_to_string iovecs)
|
||||
| `Close _ | `Yield -> None
|
||||
;;
|
||||
end
|
||||
|
||||
let write_operation = Alcotest.of_pp Write_operation.pp_hum
|
||||
let read_operation = Alcotest.of_pp Read_operation.pp_hum
|
||||
|
||||
module Headers = struct
|
||||
include Headers
|
||||
|
||||
let (@) a b = Headers.add_list a (Headers.to_list b)
|
||||
|
||||
let connection_close = Headers.of_list ["connection", "close"]
|
||||
let encoding_chunked = Headers.of_list ["transfer-encoding", "chunked"]
|
||||
let encoding_fixed n = Headers.of_list ["content-length", string_of_int n]
|
||||
end
|
||||
Loading…
Add table
Add a link
Reference in a new issue