SpaceOS wire protocol codecs for host-guest communication
1open Space_wire
2
3let encode codec v =
4 let ws = Wire.Codec.wire_size codec in
5 let buf = Bytes.create ws in
6 Wire.Codec.encode codec v buf 0;
7 Bytes.unsafe_to_string buf
8
9let decode codec s = Wire.Codec.decode codec (Bytes.of_string s) 0
10
11let test_dp_roundtrip () =
12 let dp =
13 Dp_payload.v ~block_offset:100 ~block_count:10 ~dp_class:1 ~priority:2
14 ~name:"science.dat" ~crc32:0xDEADBEEF
15 in
16 let encoded = encode Dp_payload.codec dp in
17 Alcotest.(check int) "dp size" 80 (String.length encoded);
18 let decoded = decode Dp_payload.codec encoded in
19 Alcotest.(check int) "block_offset" 100 decoded.block_offset;
20 Alcotest.(check int) "block_count" 10 decoded.block_count;
21 Alcotest.(check int) "dp_class" 1 decoded.dp_class;
22 Alcotest.(check int) "priority" 2 decoded.priority;
23 Alcotest.(check string)
24 "name_string" "science.dat"
25 (Dp_payload.name_string decoded);
26 Alcotest.(check int) "crc32" 0xDEADBEEF decoded.crc32
27
28let suite =
29 ("dp_payload", [ Alcotest.test_case "roundtrip" `Quick test_dp_roundtrip ])