The first thing to try is to make sure that everything is getting flushed. For temporary debugging messages I strongly recommend just using [Core.Std.eprintf "\n%!"]. On 16 June 2015 at 16:03, Kenneth Adam Miller wrote: > I'm having trouble with OCaml Async. I wrote a small server with it, and > right now I'm trying to unit test that server. Here's my code for the > server: > > > let _main ()= > print_endline "Server running"; > let handler = print_endline in > let socket = Tcp.on_port 5554 in > let server = Tcp.Server.create socket (fun addr r w -> > (Reader.contents r) >>| handler; (Writer.write w "got it")) in > server > > > > In my unit test code I have: > > let test_shutdown test_ctxt = Thread_safe.block_on_async_exn (fun () -> ( > print_endline "test_shutdown"; > let server = Server._main () in > server >>= fun server -> > let where = Tcp.to_host_and_port "127.0.0.1" 5554 in > Tcp.connect where >>= fun s -> > let socket, r, w = s in > ignore (Writer.write w "kill"); > ignore (Writer.flushed w); > (Reader.recv r >>> function > | `Ok result -> print_endline ("writing shutdown to server" ^ > result) > | `Eof -> ()); > return () > )); () > > > > I see test_shutdown and Server running, but not sign of "writing shutdown > to server" or even "got it"; why isn't my server or even any of the > connection executing? >