Created
January 11, 2017 22:45
-
-
Save pdonadeo/78eae3520fac9b7983827c8257158e31 to your computer and use it in GitHub Desktop.
A minimal SSL test for Async_ssl
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
open Core.Std | |
open Async.Std | |
open Async_ssl.Std | |
open Log.Global | |
(* ocamlbuild -use-ocamlfind -pkgs async_ssl src/test_ssl2.native *) | |
let get_ssl () = | |
(* Connect the socket *) | |
Tcp.connect (Tcp.to_host_and_port "github.com" 443) >>= fun (socket, net_to_ssl, ssl_to_net) -> | |
(* Connect SSL *) | |
let net_to_ssl = Reader.pipe net_to_ssl in | |
let ssl_to_net = Writer.pipe ssl_to_net in | |
let app_to_ssl, app_wr = Pipe.create () in | |
let app_rd, ssl_to_app = Pipe.create () in | |
Ssl.client | |
~version:Async_ssl.Ssl.Version.Tlsv1_2 | |
~app_to_ssl | |
~ssl_to_app | |
~net_to_ssl | |
~ssl_to_net () |> Deferred.Or_error.ok_exn >>= fun connection -> | |
info "Ssl.client"; | |
Reader.of_pipe (Info.of_string "ssl_reader") app_rd >>= fun app_rd -> | |
Writer.of_pipe (Info.of_string "ssl_writer") app_wr >>= fun (app_wr,_) -> | |
(* Wait 0.5 seconds *) | |
(after (sec 0.5)) >>= fun () -> | |
(* Close *) | |
don't_wait_for ( | |
Writer.close app_wr >>= fun () -> | |
Reader.close app_rd >>= fun () -> | |
Async_ssl.Ssl.Connection.close connection; | |
info "Ssl.connection.close"; | |
return () | |
); | |
return () | |
let gc_loop () = | |
let rec loop () = | |
info "Gc.compact ()"; | |
Gc.compact (); | |
(after (sec 60.)) >>= loop in | |
loop () | |
let rec loop ?(i=1) () = | |
info "Ssl.client number %06d" i; | |
get_ssl () >>= fun () -> | |
(after (sec 0.5)) >>= fun () -> | |
loop ~i:(i+1) () | |
let main () = | |
loop () |> don't_wait_for; | |
gc_loop () |> don't_wait_for; | |
Deferred.never () | |
let () = Command.(async ~summary:"SSL test 2" Spec.empty main |> run) |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment