blob: 569f103818974a1986f5aa034e5382fe39bfa689 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
|
open Nock_lib
let rec find_project_root dir =
let pills_dir = Filename.concat dir "pills" in
if Sys.file_exists pills_dir && Sys.is_directory pills_dir then dir
else
let parent = Filename.dirname dir in
if String.equal parent dir then failwith "unable to locate project root containing pills/"
else find_project_root parent
let project_root =
match Sys.getenv_opt "NEOVERE_ROOT" with
| Some root -> root
| None ->
let exe_dir = Filename.dirname Sys.executable_name in
find_project_root exe_dir
let rec print_noun_structure noun depth =
let indent = String.make (depth * 2) ' ' in
match noun with
| Noun.Atom z ->
let size = Z.numbits z in
if size <= 64 then
Printf.printf "%sAtom: %s (0x%s, %d bits)\n"
indent (Z.to_string z) (Z.format "%x" z) size
else
Printf.printf "%sAtom: <large %d bits>\n" indent size
| Noun.Cell (h, t) ->
Printf.printf "%sCell:\n" indent;
Printf.printf "%s Head:\n" indent;
print_noun_structure h (depth + 2);
Printf.printf "%s Tail:\n" indent;
print_noun_structure t (depth + 2)
let () =
if Array.length Sys.argv < 2 then begin
Printf.printf "Usage: %s <event_number>\n" Sys.argv.(0);
exit 1
end;
let event_num = Int64.of_string Sys.argv.(1) in
let pier_path = Filename.concat project_root "test-pier" in
if not (Sys.file_exists pier_path) then begin
Printf.printf "Test pier not found at: %s\n" pier_path;
Printf.printf "Run test_pier_boot.exe first\n";
exit 1
end;
Printf.printf "\n╔═══════════════════════════════════════════════════════╗\n";
Printf.printf "║ Event Inspector ║\n";
Printf.printf "╚═══════════════════════════════════════════════════════╝\n\n";
let eventlog = Eventlog.create ~enabled:false pier_path in
Printf.printf "Reading event %Ld from test pier...\n\n" event_num;
let event = Eventlog.read_event eventlog event_num in
Printf.printf "Event structure:\n";
print_noun_structure event 0;
Printf.printf "\n";
(* Check if it's a timestamped event [timestamp data] *)
match event with
| Noun.Cell (Noun.Atom timestamp, event_data) ->
Printf.printf "✓ Event is properly timestamped!\n";
Printf.printf " Timestamp: %s\n" (Z.to_string timestamp);
Printf.printf " Timestamp (hex): 0x%s\n" (Z.format "%x" timestamp);
Printf.printf " Timestamp bits: %d\n" (Z.numbits timestamp);
Printf.printf "\n Event data structure:\n";
print_noun_structure event_data 2
| _ ->
Printf.printf "⚠ Event does NOT appear to be timestamped!\n";
Printf.printf " Expected: [timestamp event_data]\n";
Printf.printf " Got something else\n"
|