summaryrefslogtreecommitdiff
path: root/lib/ssl/test/ssl_packet_SUITE.erl
diff options
context:
space:
mode:
Diffstat (limited to 'lib/ssl/test/ssl_packet_SUITE.erl')
-rw-r--r--lib/ssl/test/ssl_packet_SUITE.erl255
1 files changed, 212 insertions, 43 deletions
diff --git a/lib/ssl/test/ssl_packet_SUITE.erl b/lib/ssl/test/ssl_packet_SUITE.erl
index fcf223d332..a65173f172 100644
--- a/lib/ssl/test/ssl_packet_SUITE.erl
+++ b/lib/ssl/test/ssl_packet_SUITE.erl
@@ -21,11 +21,198 @@
%%
-module(ssl_packet_SUITE).
-%% Note: This directive should only be used in test suites.
--compile(export_all).
+-behaviour(ct_suite).
-include_lib("common_test/include/ct.hrl").
+%% Callback functions
+-export([all/0,
+ groups/0,
+ init_per_suite/1,
+ end_per_suite/1,
+ init_per_group/2,
+ end_per_group/2,
+ init_per_testcase/2,
+ end_per_testcase/2]).
+
+%% Testcases
+-export([packet_raw_passive_many_small/0,
+ packet_raw_passive_many_small/1,
+ packet_0_passive_many_small/0,
+ packet_0_passive_many_small/1,
+ packet_1_passive_many_small/0,
+ packet_1_passive_many_small/1,
+ packet_2_passive_many_small/0,
+ packet_2_passive_many_small/1,
+ packet_4_passive_many_small/0,
+ packet_4_passive_many_small/1,
+ packet_raw_passive_some_big/0,
+ packet_raw_passive_some_big/1,
+ packet_0_passive_some_big/0,
+ packet_0_passive_some_big/1,
+ packet_1_passive_some_big/0,
+ packet_1_passive_some_big/1,
+ packet_2_passive_some_big/0,
+ packet_2_passive_some_big/1,
+ packet_4_passive_some_big/0,
+ packet_4_passive_some_big/1,
+ packet_wait_passive/0,
+ packet_wait_passive/1,
+ packet_size_passive/0,
+ packet_size_passive/1,
+ header_decode_one_byte_passive/0,
+ header_decode_one_byte_passive/1,
+ header_decode_two_bytes_passive/0,
+ header_decode_two_bytes_passive/1,
+ header_decode_two_bytes_two_sent_passive/0,
+ header_decode_two_bytes_two_sent_passive/1,
+ header_decode_two_bytes_one_sent_passive/0,
+ header_decode_two_bytes_one_sent_passive/1,
+ packet_httph_passive/0,
+ packet_httph_passive/1,
+ packet_httph_bin_passive/0,
+ packet_httph_bin_passive/1,
+ packet_http_error_passive/0,
+ packet_http_error_passive/1,
+ packet_baddata_passive/0,
+ packet_baddata_passive/1,
+ packet_raw_active_once_many_small/0,
+ packet_raw_active_once_many_small/1,
+ packet_0_active_once_many_small/0,
+ packet_0_active_once_many_small/1,
+ packet_1_active_once_many_small/0,
+ packet_1_active_once_many_small/1,
+ packet_2_active_once_many_small/0,
+ packet_2_active_once_many_small/1,
+ packet_4_active_once_many_small/0,
+ packet_4_active_once_many_small/1,
+ packet_raw_active_once_some_big/0,
+ packet_raw_active_once_some_big/1,
+ packet_0_active_once_some_big/0,
+ packet_0_active_once_some_big/1,
+ packet_1_active_once_some_big/0,
+ packet_1_active_once_some_big/1,
+ packet_2_active_once_some_big/0,
+ packet_2_active_once_some_big/1,
+ packet_4_active_once_some_big/0,
+ packet_4_active_once_some_big/1,
+ packet_httph_active_once/0,
+ packet_httph_active_once/1,
+ packet_httph_bin_active_once/0,
+ packet_httph_bin_active_once/1,
+ packet_raw_active_many_small/0,
+ packet_raw_active_many_small/1,
+ packet_0_active_many_small/0,
+ packet_0_active_many_small/1,
+ packet_1_active_many_small/0,
+ packet_1_active_many_small/1,
+ packet_2_active_many_small/0,
+ packet_2_active_many_small/1,
+ packet_4_active_many_small/0,
+ packet_4_active_many_small/1,
+ packet_raw_active_some_big/0,
+ packet_raw_active_some_big/1,
+ packet_0_active_some_big/0,
+ packet_0_active_some_big/1,
+ packet_1_active_some_big/0,
+ packet_1_active_some_big/1,
+ packet_2_active_some_big/0,
+ packet_2_active_some_big/1,
+ packet_4_active_some_big/0,
+ packet_4_active_some_big/1,
+ packet_wait_active/0,
+ packet_wait_active/1,
+ packet_size_active/0,
+ packet_size_active/1,
+ packet_switch/0,
+ packet_switch/1,
+ header_decode_one_byte_active/0,
+ header_decode_one_byte_active/1,
+ header_decode_two_bytes_active/0,
+ header_decode_two_bytes_active/1,
+ header_decode_two_bytes_two_sent_active/0,
+ header_decode_two_bytes_two_sent_active/1,
+ header_decode_two_bytes_one_sent_active/0,
+ header_decode_two_bytes_one_sent_active/1,
+ packet_httph_active/0,
+ packet_httph_active/1,
+ packet_httph_bin_active/0,
+ packet_httph_bin_active/1,
+ packet_baddata_active/0,
+ packet_baddata_active/1,
+ packet_cdr_decode/0,
+ packet_cdr_decode/1,
+ packet_cdr_decode_list/0,
+ packet_cdr_decode_list/1,
+ packet_http_decode/0,
+ packet_http_decode/1,
+ packet_http_decode_list/0,
+ packet_http_decode_list/1,
+ packet_http_bin_decode_multi/0,
+ packet_http_bin_decode_multi/1,
+ packet_line_decode/0,
+ packet_line_decode/1,
+ packet_line_decode_list/0,
+ packet_line_decode_list/1,
+ packet_asn1_decode/0,
+ packet_asn1_decode/1,
+ packet_asn1_decode_list/0,
+ packet_asn1_decode_list/1,
+ packet_sunrm_decode/0,
+ packet_sunrm_decode/1,
+ packet_sunrm_decode_list/0,
+ packet_sunrm_decode_list/1,
+ packet_send_to_large/0,
+ packet_send_to_large/1,
+ packet_tpkt_decode/0,
+ packet_tpkt_decode/1,
+ packet_tpkt_decode_list/0,
+ packet_tpkt_decode_list/1,
+ reject_packet_opt/0,
+ reject_packet_opt/1
+ ]).
+
+%% Apply export
+-export([send_raw/3,
+ passive_raw/3,
+ passive_recv_packet/3,
+ send/3,
+ send_incomplete/3,
+ active_once_raw/4,
+ active_once_packet/3,
+ active_raw/3,
+ active_once_raw/3,
+ active_packet/3,
+ assert_packet_opt/2,
+ server_packet_decode/2,
+ client_packet_decode/2,
+ server_header_decode_active/3,
+ client_header_decode_active/3,
+ server_header_decode_passive/3,
+ client_header_decode_passive/3,
+ server_line_packet_decode/2,
+ server_line_packet_decode/4,
+ client_line_packet_decode/2,
+ client_line_packet_decode/5,
+ server_http_decode/2,
+ client_http_decode/2,
+ server_http_bin_decode/3,
+ client_http_bin_decode/3,
+ client_http_decode_list/2,
+ server_http_decode_error/2,
+ server_send_trailer/2,
+ client_http_decode_trailer_active/1,
+ client_http_decode_trailer_bin_active/1,
+ client_http_decode_trailer_active_once/1,
+ client_http_decode_trailer_bin_active_once/1,
+ client_http_decode_trailer_passive/1,
+ client_http_decode_trailer_bin_passive/1,
+ add_tpkt_header/1,
+ client_reject_packet_opt/2,
+ send_switch_packet/3,
+ recv_switch_packet/3
+ ]).
+
-define(BYTE(X), X:8/unsigned-big-integer).
-define(UINT16(X), X:16/unsigned-big-integer).
-define(UINT24(X), X:24/unsigned-big-integer).
@@ -41,7 +228,7 @@
-define(MANY, 1000).
-define(SOME, 50).
--define(BASE_TIMEOUT_SECONDS, 5).
+-define(BASE_TIMEOUT_SECONDS, 20).
-define(SOME_SCALE, 2).
-define(MANY_SCALE, 3).
@@ -54,7 +241,6 @@ all() ->
{group, 'tlsv1.2'},
{group, 'tlsv1.1'},
{group, 'tlsv1'},
- {group, 'sslv3'},
{group, 'dtlsv1.2'},
{group, 'dtlsv1'}
].
@@ -64,7 +250,6 @@ groups() ->
{'tlsv1.2', [], socket_packet_tests() ++ protocol_packet_tests()},
{'tlsv1.1', [], socket_packet_tests() ++ protocol_packet_tests()},
{'tlsv1', [], socket_packet_tests() ++ protocol_packet_tests()},
- {'sslv3', [], socket_packet_tests() ++ protocol_packet_tests()},
%% We will not support any packet types if the transport is
%% not reliable. We might support it for DTLS over SCTP in the future
{'dtlsv1.2', [], [reject_packet_opt]},
@@ -175,28 +360,10 @@ end_per_suite(_Config) ->
application:stop(crypto).
init_per_group(GroupName, Config) ->
- case ssl_test_lib:is_tls_version(GroupName) of
- true ->
- case ssl_test_lib:sufficient_crypto_support(GroupName) of
- true ->
- ssl_test_lib:init_tls_version(GroupName, Config);
- false ->
- {skip, "Missing crypto support"}
- end;
- _ ->
- ssl:stop(),
- ssl:start(),
- Config
- end.
-
+ ssl_test_lib:init_per_group(GroupName, Config).
end_per_group(GroupName, Config) ->
- case ssl_test_lib:is_tls_version(GroupName) of
- true ->
- ssl_test_lib:clean_tls_version(Config);
- false ->
- Config
- end.
+ ssl_test_lib:end_per_group(GroupName, Config).
init_per_testcase(_TestCase, Config) ->
ct:timetrap({seconds, ?BASE_TIMEOUT_SECONDS}),
@@ -594,8 +761,8 @@ packet_baddata_active(Config) when is_list(Config) ->
{packet, cdr} |
ClientOpts]}]),
receive
- {Client, {other, {ssl_error, _Socket,
- {invalid_packet, _}},{error,closed},1}} -> ok;
+ {Client, {ssl_error, _, {invalid_packet, _}}} ->
+ ok;
Unexpected ->
ct:fail({unexpected, Unexpected})
end,
@@ -629,7 +796,8 @@ packet_baddata_passive(Config) when is_list(Config) ->
ClientOpts]}]),
receive
- {Client, {other, {error, {invalid_packet, _}},{error,closed}, 1}} -> ok;
+ {Client, {error, {invalid_packet, _}}} ->
+ ok;
Unexpected ->
ct:fail({unexpected, Unexpected})
end,
@@ -662,11 +830,11 @@ packet_size_active(Config) when is_list(Config) ->
{packet, 4}, {packet_size, 10} |
ClientOpts]}]),
receive
- {Client, {other, {ssl_error, _Socket,
- {invalid_packet, _}},{error,closed},1}} -> ok;
+ {Client, {ssl_error, _, {invalid_packet, _}}}->
+ ok;
Unexpected ->
ct:fail({unexpected, Unexpected})
- end,
+ end,
ssl_test_lib:close(Server),
ssl_test_lib:close(Client).
@@ -697,7 +865,8 @@ packet_size_passive(Config) when is_list(Config) ->
{packet, 4}, {packet_size, 30} |
ClientOpts]}]),
receive
- {Client, {other, {error, {invalid_packet, _}},{error,closed},1}} -> ok;
+ {Client, {error, {invalid_packet, _}}} ->
+ ok;
Unexpected ->
ct:fail({unexpected, Unexpected})
end,
@@ -1132,7 +1301,7 @@ server_send_trailer(Socket, Trailer)->
client_http_decode_trailer_active(Socket) ->
receive
{ssl, Socket,
- {http_header,36,'Content-Encoding',undefined,"gzip"}} ->
+ {http_header,36,'Content-Encoding',"Content-Encoding","gzip"}} ->
ok;
Other1 ->
exit({?LINE, Other1})
@@ -1182,7 +1351,7 @@ packet_httph_bin_active(Config) when is_list(Config) ->
client_http_decode_trailer_bin_active(Socket) ->
receive
{ssl, Socket,
- {http_header,36,'Content-Encoding',undefined, <<"gzip">>}} ->
+ {http_header,36,'Content-Encoding',<<"Content-Encoding">>, <<"gzip">>}} ->
ok;
Other1 ->
exit({?LINE, Other1})
@@ -1234,7 +1403,7 @@ client_http_decode_trailer_active_once(Socket) ->
ssl:setopts(Socket, [{active, once}]),
receive
{ssl, Socket,
- {http_header,36,'Content-Encoding',undefined,"gzip"}} ->
+ {http_header,36,'Content-Encoding',"Content-Encoding","gzip"}} ->
ok;
Other1 ->
exit({?LINE, Other1})
@@ -1286,7 +1455,7 @@ client_http_decode_trailer_bin_active_once(Socket) ->
ssl:setopts(Socket, [{active, once}]),
receive
{ssl, Socket,
- {http_header,36,'Content-Encoding',undefined, <<"gzip">>}} ->
+ {http_header,36,'Content-Encoding',<<"Content-Encoding">>, <<"gzip">>}} ->
ok;
Other1 ->
exit({?LINE, Other1})
@@ -1337,7 +1506,7 @@ packet_httph_passive(Config) when is_list(Config) ->
ssl_test_lib:close(Client).
client_http_decode_trailer_passive(Socket) ->
- {ok,{http_header,36,'Content-Encoding',undefined,"gzip"}} = ssl:recv(Socket, 0),
+ {ok,{http_header,36,'Content-Encoding',"Content-Encoding","gzip"}} = ssl:recv(Socket, 0),
{ok, http_eoh} = ssl:recv(Socket, 0),
ok.
@@ -1377,7 +1546,7 @@ packet_httph_bin_passive(Config) when is_list(Config) ->
ssl_test_lib:close(Client).
client_http_decode_trailer_bin_passive(Socket) ->
- {ok,{http_header,36,'Content-Encoding',undefined,<<"gzip">>}} = ssl:recv(Socket, 0),
+ {ok,{http_header,36,'Content-Encoding',<<"Content-Encoding">>,<<"gzip">>}} = ssl:recv(Socket, 0),
{ok, http_eoh} = ssl:recv(Socket, 0),
ok.
@@ -2055,8 +2224,8 @@ passive_recv_packet(Socket, Data, N) ->
case ssl:recv(Socket, 0, 10000) of
{ok, Data} ->
passive_recv_packet(Socket, Data, N-1);
- Other ->
- {other, Other, ssl:connection_information(Socket, [session_id, cipher_suite]), N}
+ {error, _} = Other ->
+ Other
end.
send(Socket,_, 0) ->
@@ -2137,9 +2306,9 @@ active_packet(Socket, _, 0) ->
active_packet(Socket, Data, N) ->
receive
{ssl, Socket, Data} ->
- active_packet(Socket, Data, N -1);
+ active_packet(Socket, Data, N-1);
Other ->
- {other, Other, ssl:connection_information(Socket, [session_id, cipher_suite]),N}
+ Other
end.
assert_packet_opt(Socket, Type) ->
@@ -2150,7 +2319,7 @@ server_packet_decode(Socket, Packet) ->
{ssl, Socket, Packet} -> ok;
Other1 -> exit({?LINE, Other1})
end,
- ok = ssl:send(Socket, Packet),
+ spawn(fun() -> ssl:send(Socket, Packet) end),
receive
{ssl, Socket, Packet} -> ok;
Other2 -> exit({?LINE, Other2})