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 "<message>\n%!"].

On 16 June 2015 at 16:03, Kenneth Adam Miller <kennethadammiller@gmail.com> 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?