File: test.ml

package info (click to toggle)
ocaml-posix 4.0.2-2
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid
  • size: 1,384 kB
  • sloc: ml: 9,495; ansic: 45; sh: 14; makefile: 5
file content (67 lines) | stat: -rw-r--r-- 2,455 bytes parent folder | download
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
open Posix_resource

let test_getrlimit () =
  Printf.printf "Testing getrlimit...\n%!";
  let rlim = getrlimit rlimit_nofile in
  Printf.printf "  ✓ RLIMIT_NOFILE: cur=%s, max=%s\n%!"
    (Unsigned.UInt64.to_string rlim.rlim_cur)
    (Unsigned.UInt64.to_string rlim.rlim_max);
  assert (Unsigned.UInt64.(compare rlim.rlim_cur zero) > 0);
  Printf.printf "  ✓ getrlimit test passed\n%!"

let test_setrlimit () =
  Printf.printf "\nTesting setrlimit...\n%!";
  let orig = getrlimit rlimit_nofile in
  (* Try to set to same value (should always succeed) *)
  setrlimit rlimit_nofile orig;
  let new_rlim = getrlimit rlimit_nofile in
  assert (Unsigned.UInt64.equal orig.rlim_cur new_rlim.rlim_cur);
  Printf.printf "  ✓ setrlimit test passed\n%!"

let test_getrusage () =
  Printf.printf "\nTesting getrusage...\n%!";
  let ru = getrusage rusage_self in
  Printf.printf "  ✓ User time: %s\n%!"
    (Posix_time2.Timeval.to_string ru.ru_utime);
  Printf.printf "  ✓ System time: %s\n%!"
    (Posix_time2.Timeval.to_string ru.ru_stime);
  Printf.printf "  ✓ Max RSS: %Ld KB\n%!" ru.ru_maxrss;
  Printf.printf "  ✓ getrusage test passed\n%!"

let test_priority () =
  Printf.printf "\nTesting priority functions...\n%!";
  let prio = getpriority prio_process 0 in
  Printf.printf "  ✓ Current process priority: %d\n%!" prio;
  (* Try to set to same priority (should succeed for normal users) *)
  setpriority prio_process 0 prio;
  let new_prio = getpriority prio_process 0 in
  assert (prio = new_prio);
  Printf.printf "  ✓ priority test passed\n%!"

let test_rlim_infinity () =
  Printf.printf "\nTesting RLIM_INFINITY constant...\n%!";
  Printf.printf "  ✓ RLIM_INFINITY = %s\n%!"
    (Unsigned.UInt64.to_string rlim_infinity);
  assert (Unsigned.UInt64.(compare rlim_infinity zero) > 0);
  Printf.printf "  ✓ RLIM_INFINITY test passed\n%!"

let test_constants () =
  Printf.printf "\nTesting resource constants...\n%!";
  assert (rlimit_cpu >= 0);
  assert (rlimit_fsize >= 0);
  assert (rlimit_data >= 0);
  assert (rlimit_stack >= 0);
  assert (rlimit_core >= 0);
  assert (rlimit_nofile >= 0);
  assert (rlimit_as >= 0);
  Printf.printf "  ✓ Resource constants test passed\n%!"

let () =
  Printf.printf "=== Running posix-resource tests ===\n\n%!";
  test_constants ();
  test_getrlimit ();
  test_setrlimit ();
  test_getrusage ();
  test_priority ();
  test_rlim_infinity ();
  Printf.printf "\n=== All tests passed! ===\n%!"