require CURLOPT_PRIVATE and CURLINFO_PRIVATE
[ocurl.git] / examples / test_memory_leaks.ml
blobec9bf550b2b137bb8515446bbe379b41bb020298
1 open Curl
3 let count1 = 200
4 let leak1 = 1024 * 1024
6 let test1 () =
7 let h = init () in
8 let s = String.make leak1 'c' in
9 set_httppost h [CURLFORM_CONTENT ("part", s, DEFAULT)];
10 cleanup h
12 let rss () =
13 let path = Printf.sprintf "/proc/%d/statm" (Unix.getpid ()) in
14 try
15 let ch = open_in path in
16 let n = Scanf.fscanf ch "%_d %d" (fun x -> 4*1024*x) in close_in_noerr ch; n
17 with exn -> Printf.eprintf "Error opening %s (%s), ignoring\n%!" path (Printexc.to_string exn); 0
19 let () =
20 let rss1 = rss () in
21 for i = 0 to count1 do
22 test1 ();
23 Gc.compact ();
24 done;
25 let rss2 = rss () in
26 Printf.printf "RSS %d -> %d %s\n%!" rss1 rss2 (if rss2 - rss1 < count1 * leak1 / 10 then "OK" else "LEAKING")