My agentic slop goes here. Not intended for anyone else!
1(** Simple test to debug connection issues *)
2
3open Eio.Std
4
5let () =
6 Logs.set_reporter (Logs_fmt.reporter ());
7 Logs.set_level (Some Logs.Debug);
8 Logs.Src.set_level Conpool.src (Some Logs.Debug);
9
10 Eio_main.run @@ fun env ->
11 Switch.run @@ fun sw ->
12
13 traceln "Starting simple server on 127.0.0.1:9000";
14
15 (* Start a simple echo server *)
16 let raw_bytes = Bytes.create 4 in
17 Bytes.set raw_bytes 0 (Char.chr 127);
18 Bytes.set raw_bytes 1 (Char.chr 0);
19 Bytes.set raw_bytes 2 (Char.chr 0);
20 Bytes.set raw_bytes 3 (Char.chr 1);
21 let ipaddr = Eio.Net.Ipaddr.of_raw (Bytes.to_string raw_bytes) in
22
23 let socket = Eio.Net.listen env#net ~sw ~reuse_addr:true ~backlog:10
24 (`Tcp (ipaddr, 9000))
25 in
26
27 Eio.Fiber.fork ~sw (fun () ->
28 Eio.Net.accept_fork socket ~sw ~on_error:raise (fun flow _addr ->
29 traceln "Server: accepted connection";
30 let buf = Eio.Buf_read.of_flow flow ~max_size:1024 in
31 let line = Eio.Buf_read.line buf in
32 traceln "Server: received: %s" line;
33 Eio.Flow.copy_string (line ^ "\n") flow;
34 Eio.Flow.close flow
35 )
36 );
37
38 Eio.Time.sleep env#clock 0.1;
39
40 traceln "Creating connection pool";
41 let pool = Conpool.create ~sw ~net:env#net ~clock:env#clock () in
42
43 traceln "Testing connection";
44 let endpoint = Conpool.Endpoint.make ~host:"127.0.0.1" ~port:9000 in
45
46 let response = Conpool.with_connection pool endpoint (fun flow ->
47 traceln "Client: sending message";
48 Eio.Flow.copy_string "test message\n" flow;
49 let buf = Eio.Buf_read.of_flow flow ~max_size:1024 in
50 let resp = Eio.Buf_read.line buf in
51 traceln "Client: received: %s" resp;
52 resp
53 ) in
54
55 traceln "Response: %s" response;
56 traceln "Test passed!"