Loïc Hoguin 13 лет назад
Родитель
Сommit
ed50a5556a
2 измененных файлов с 86 добавлено и 7 удалено
  1. 54 7
      test/acceptor_SUITE.erl
  2. 32 0
      test/acceptor_SUITE_data/cert.pem

+ 54 - 7
test/acceptor_SUITE.erl

@@ -16,17 +16,31 @@
 
 -include_lib("common_test/include/ct.hrl").
 
--export([all/0, groups/0, init_per_suite/1, end_per_suite/1]). %% ct.
--export([tcp_echo/1]). %% tcp.
+%% ct.
+-export([all/0]).
+-export([groups/0]).
+-export([init_per_suite/1]).
+-export([end_per_suite/1]).
+-export([init_per_group/2]).
+-export([end_per_group/2]).
+
+%% ssl.
+-export([ssl_echo/1]).
+
+%% tcp.
+-export([tcp_echo/1]).
 
 %% ct.
 
 all() ->
-	[{group, tcp}].
+	[{group, tcp}, {group, ssl}].
 
 groups() ->
-	Tests = [tcp_echo],
-	[{tcp, Tests}].
+	[{tcp, [
+		tcp_echo
+	]}, {ssl, [
+		ssl_echo
+	]}].
 
 init_per_suite(Config) ->
 	application:start(ranch),
@@ -36,6 +50,39 @@ end_per_suite(_) ->
 	application:stop(ranch),
 	ok.
 
+init_per_group(ssl, Config) ->
+	application:start(crypto),
+	application:start(public_key),
+	application:start(ssl),
+	Config;
+init_per_group(_, Config) ->
+	Config.
+
+end_per_group(ssl, _) ->
+	application:stop(ssl),
+	application:stop(public_key),
+	application:stop(crypto),
+	ok;
+end_per_group(_, _) ->
+	ok.
+
+%% ssl.
+
+ssl_echo(Config) ->
+	{ok, _} = ranch:start_listener(ssl_echo, 1,
+		ranch_ssl, [{port, 0},
+			{certfile, ?config(data_dir, Config) ++ "cert.pem"}],
+		echo_protocol, []),
+	Port = ranch:get_port(ssl_echo),
+	{ok, Socket} = ssl:connect("localhost", Port,
+		[binary, {active, false}, {packet, raw},
+		{certfile, ?config(data_dir, Config) ++ "cert.pem"}]),
+	ok = ssl:send(Socket, <<"SSL Ranch is working!">>),
+	{ok, <<"SSL Ranch is working!">>} = ssl:recv(Socket, 21, 1000),
+	ok = ranch:stop_listener(ssl_echo),
+	{error, closed} = ssl:recv(Socket, 0, 1000),
+	ok.
+
 %% tcp.
 
 tcp_echo(_) ->
@@ -44,8 +91,8 @@ tcp_echo(_) ->
 	Port = ranch:get_port(tcp_echo),
 	{ok, Socket} = gen_tcp:connect("localhost", Port,
 		[binary, {active, false}, {packet, raw}]),
-	ok = gen_tcp:send(Socket, <<"Ranch is working!">>),
-	{ok, <<"Ranch is working!">>} = gen_tcp:recv(Socket, 0, 1000),
+	ok = gen_tcp:send(Socket, <<"TCP Ranch is working!">>),
+	{ok, <<"TCP Ranch is working!">>} = gen_tcp:recv(Socket, 21, 1000),
 	ok = ranch:stop_listener(tcp_echo),
 	{error, closed} = gen_tcp:recv(Socket, 0, 1000),
 	ok.

+ 32 - 0
test/acceptor_SUITE_data/cert.pem

@@ -0,0 +1,32 @@
+-----BEGIN PRIVATE KEY-----
+MIICdwIBADANBgkqhkiG9w0BAQEFAASCAmEwggJdAgEAAoGBANcQOH8U6JHnmXtf
+20T5Ue7HSfxql75a56tr1ofrHM4P2P7ek/eP04+W2pFrQ3wLGEcnIVHY1xuUeBr+
+GUIBxNzsB2fKGJHDD4RwYCplzxNGVt1F7VXe3fOCdzsNTUYO9YXHF+lsY3afQ6e1
+yb+OR2MFoVX7JCbYvFoJ4XtqCleRAgMBAAECgYANVT0ba9FrUj9qraurYAWbVxGY
+K4eSzpH0R7A6JvJXOBZM3sGvpGQKT+DnCQ5a/1kW+C8Rou7bD95OVhh8xh1NM9ZV
+Ho6McI80iA9FtSVxIecDyteDQOlz2YISgFsnuhnWm6bMVr+S2s9pOIyyQmQNEbV9
+WbYv6URnp7E7YoIinQJBAPdusE4jQlnPR3bBeRVeQ+gwtp0yTznE49rOi5d5Kbk8
+0NWd4KCozPZQnLWZpX/Hh3UcF3AWBII7jScySg2ocFcCQQDegpqSGEeXZReIJ8/Y
+t3yuGK/F0iTMfwXD5Cn7rau5XSzQ4EvdUFSzlLf1i3mSGlLKQ2XIxNEny2gBD6cT
+UuZXAkEA45HWbcdYGyndXIgNSW3tnvxOuL2wyD0iI/ibwrEZgtlAaXhPRPR7rn/t
+4chywtdM6pTvqZNWikEjTc2e9njY+QJABq9j13nVRM4ru9J+YyN4In7pYQckReSX
+FsCXJlGcdDBBdXEXtmmAcfjI4h6zo1kZHayStUp8gjaRRF7lBSabdwJBALZiddQ7
+HX03nFOvEFe0kygtTGDQywmRA0ZLtGwKpruRCSfkd0GGHR28L4RYGOs/MLMS9na+
+RJfoCyHrn4Tp9Fs=
+-----END PRIVATE KEY-----
+-----BEGIN CERTIFICATE-----
+MIICgDCCAemgAwIBAgIJALu4ZVz5MZO5MA0GCSqGSIb3DQEBBQUAMFkxCzAJBgNV
+BAYTAkFVMRMwEQYDVQQIDApTb21lLVN0YXRlMSEwHwYDVQQKDBhJbnRlcm5ldCBX
+aWRnaXRzIFB0eSBMdGQxEjAQBgNVBAMMCWxvY2FsaG9zdDAeFw0xMjA2MTEwNTM5
+MDNaFw0zOTEwMjgwNTM5MDNaMFkxCzAJBgNVBAYTAkFVMRMwEQYDVQQIDApTb21l
+LVN0YXRlMSEwHwYDVQQKDBhJbnRlcm5ldCBXaWRnaXRzIFB0eSBMdGQxEjAQBgNV
+BAMMCWxvY2FsaG9zdDCBnzANBgkqhkiG9w0BAQEFAAOBjQAwgYkCgYEA1xA4fxTo
+keeZe1/bRPlR7sdJ/GqXvlrnq2vWh+sczg/Y/t6T94/Tj5bakWtDfAsYRychUdjX
+G5R4Gv4ZQgHE3OwHZ8oYkcMPhHBgKmXPE0ZW3UXtVd7d84J3Ow1NRg71hccX6Wxj
+dp9Dp7XJv45HYwWhVfskJti8Wgnhe2oKV5ECAwEAAaNQME4wHQYDVR0OBBYEFFXs
+nTn66qjp1VqeF816Jg4OJd3yMB8GA1UdIwQYMBaAFFXsnTn66qjp1VqeF816Jg4O
+Jd3yMAwGA1UdEwQFMAMBAf8wDQYJKoZIhvcNAQEFBQADgYEAHwfPJWK5UsWns79S
+jZvdzZ3UPVz0UYj/9Nv/bhxN8HaD1Osj4lFHUiqnTXm7r3hD962lcqRA0dUvVUTv
+Ftz5BEqsjUPkLvN4E4ZG0O5mh8mAEm2M3Ok9eDyZW/8c1kX7r82YnF+8TzI+IIu5
+uZ/oqqAeTL/F3oTcTKSbA3WBrpg=
+-----END CERTIFICATE-----