SpaceOS wire protocol codecs for host-guest communication
1open Space_wire
2
3let test_shared_mem_heartbeat () =
4 let buf = Bytes.make Shared_mem.page_size '\x00' in
5 Shared_mem.set_heartbeat buf 42L;
6 Alcotest.(check int64) "heartbeat" 42L (Shared_mem.heartbeat buf)
7
8let test_shared_mem_mission_time () =
9 let buf = Bytes.make Shared_mem.page_size '\x00' in
10 let t = Shared_mem.{ seconds = 1000L; nanos = 500_000_000 } in
11 Shared_mem.write_mission_time buf t;
12 let t' = Shared_mem.read_mission_time buf in
13 Alcotest.(check int64) "seconds" t.seconds t'.seconds;
14 Alcotest.(check int) "nanos" t.nanos t'.nanos;
15 (* time_version should be even after write *)
16 let v = Shared_mem.time_version buf in
17 Alcotest.(check bool) "version even" true (v land 1 = 0);
18 Alcotest.(check bool) "version > 0" true (v > 0)
19
20let test_shared_mem_health_string () =
21 let buf = Bytes.make Shared_mem.page_size '\x00' in
22 Shared_mem.set_health_string buf "nominal";
23 Alcotest.(check string) "health" "nominal" (Shared_mem.health_string buf)
24
25let test_shared_mem_command_word () =
26 let buf = Bytes.make Shared_mem.page_size '\x00' in
27 Shared_mem.set_host_cmd buf Shared_mem.cmd_shutdown;
28 let cmd = Shared_mem.host_cmd buf in
29 Alcotest.(check bool)
30 "shutdown set" true
31 (cmd land Shared_mem.cmd_shutdown <> 0);
32 Alcotest.(check bool)
33 "param_reload clear" true
34 (cmd land Shared_mem.cmd_param_reload = 0)
35
36let suite =
37 ( "shared_mem",
38 [
39 Alcotest.test_case "heartbeat" `Quick test_shared_mem_heartbeat;
40 Alcotest.test_case "mission time" `Quick test_shared_mem_mission_time;
41 Alcotest.test_case "health string" `Quick test_shared_mem_health_string;
42 Alcotest.test_case "command word" `Quick test_shared_mem_command_word;
43 ] )