APID-based virtual switch for SpaceOS inter-guest routing
1let test_apid_range () =
2 let r = Space_net.Config.apid_range 0x010 0x01F in
3 Alcotest.(check bool) "lo in range" true (Space_net.Config.in_range r 0x010);
4 Alcotest.(check bool) "hi in range" true (Space_net.Config.in_range r 0x01F);
5 Alcotest.(check bool) "mid in range" true (Space_net.Config.in_range r 0x015);
6 Alcotest.(check bool) "below range" false (Space_net.Config.in_range r 0x00F);
7 Alcotest.(check bool) "above range" false (Space_net.Config.in_range r 0x020)
8
9let test_system_range () =
10 Alcotest.(check bool)
11 "0x001 is system" true
12 (Space_net.Config.in_range Space_net.Config.system_range 0x001);
13 Alcotest.(check bool)
14 "0x00F is system" true
15 (Space_net.Config.in_range Space_net.Config.system_range 0x00F);
16 Alcotest.(check bool)
17 "0x010 not system" false
18 (Space_net.Config.in_range Space_net.Config.system_range 0x010)
19
20let test_idle_apid () =
21 Alcotest.(check int) "idle" 0x7FF Space_net.Config.idle_apid
22
23let test_socket_path () =
24 let config : Space_net.Config.t =
25 {
26 tenants =
27 [
28 {
29 name = "cam";
30 apids = Space_net.Config.apid_range 0x010 0x01F;
31 can_send_to = [];
32 };
33 ];
34 socket_dir = "/tmp/test";
35 }
36 in
37 let tenant = List.hd config.tenants in
38 Alcotest.(check string)
39 "socket path" "/tmp/test/cam.sock"
40 (Space_net.Config.socket_path config tenant)
41
42let test_pp () =
43 let config : Space_net.Config.t = { tenants = []; socket_dir = "/tmp/x" } in
44 let s = Fmt.to_to_string Space_net.Config.pp config in
45 Alcotest.(check bool) "contains tenants" true (String.length s > 0)
46
47let suite =
48 ( "config",
49 [
50 Alcotest.test_case "apid range" `Quick test_apid_range;
51 Alcotest.test_case "system range" `Quick test_system_range;
52 Alcotest.test_case "idle apid" `Quick test_idle_apid;
53 Alcotest.test_case "socket path" `Quick test_socket_path;
54 Alcotest.test_case "pp" `Quick test_pp;
55 ] )