Sign Up
Log In
Log In
or
Sign Up
Places
All Projects
Status Monitor
Collapse sidebar
home:Ledest:erlang:23
erlang
0393-ssl-Add-test-cases-to-cover-handling-of-ma...
Overview
Repositories
Revisions
Requests
Users
Attributes
Meta
File 0393-ssl-Add-test-cases-to-cover-handling-of-max-session-.patch of Package erlang
From 3fb2290222391dadc9afd679975ad0303035ff4d Mon Sep 17 00:00:00 2001 From: Ingela Anderton Andin <ingela@erlang.org> Date: Wed, 28 Apr 2021 10:48:24 +0200 Subject: [PATCH] ssl: Add test cases to cover handling of max session table --- lib/ssl/test/ssl_session_SUITE.erl | 119 +++++++++++++++++++++++++++-- 1 file changed, 114 insertions(+), 5 deletions(-) diff --git a/lib/ssl/test/ssl_session_SUITE.erl b/lib/ssl/test/ssl_session_SUITE.erl index 552be7ddd6..57e8944fe2 100644 --- a/lib/ssl/test/ssl_session_SUITE.erl +++ b/lib/ssl/test/ssl_session_SUITE.erl @@ -41,7 +41,7 @@ ]). %% Test cases --export([reuse_session/0, + -export([reuse_session/0, reuse_session/1, reuse_session_expired/0, reuse_session_expired/1, @@ -53,6 +53,10 @@ no_reuses_session_server_restart_new_cert/1, no_reuses_session_server_restart_new_cert_file/0, no_reuses_session_server_restart_new_cert_file/1, + client_max_session_table/0, + client_max_session_table/1, + server_max_session_table/0, + server_max_session_table/1, session_table_stable_size_on_tcp_close/0, session_table_stable_size_on_tcp_close/1 ]). @@ -87,7 +91,10 @@ session_tests() -> server_does_not_want_to_reuse_session, explicit_session_reuse, no_reuses_session_server_restart_new_cert, - no_reuses_session_server_restart_new_cert_file]. + no_reuses_session_server_restart_new_cert_file, + client_max_session_table, + server_max_session_table + ]. tls_session_tests() -> [session_table_stable_size_on_tcp_close]. @@ -124,9 +131,29 @@ init_per_testcase(reuse_session_expired, Config) -> ssl_test_lib:ct_log_supported_protocol_versions(Config), ct:timetrap({seconds, 30}), Config; -init_per_testcase(_, Config) -> +init_per_testcase(client_max_session_table, Config) -> + Versions = ssl_test_lib:protocol_version(Config), + ssl:stop(), + application:load(ssl), + ssl_test_lib:clean_env(), + ssl_test_lib:set_protocol_versions(Versions), + application:set_env(ssl, session_cache_client_max, 2), + ssl:start(), ssl_test_lib:ct_log_supported_protocol_versions(Config), - ct:timetrap({seconds, 15}), + ct:timetrap({seconds, 30}), + Config; +init_per_testcase(server_max_session_table, Config) -> + Versions = ssl_test_lib:protocol_version(Config), + ssl:stop(), + application:load(ssl), + ssl_test_lib:clean_env(), + ssl_test_lib:set_protocol_versions(Versions), + application:set_env(ssl, session_cache_server_max, 2), + ssl:start(), + ssl_test_lib:ct_log_supported_protocol_versions(Config), + ct:timetrap({seconds, 30}), + Config; +init_per_testcase(_, Config) -> Config. end_per_testcase(reuse_session_expired, Config) -> @@ -337,7 +364,7 @@ no_reuses_session_server_restart_new_cert(Config) when is_list(Config) -> {from, self()}, {options, [{reuse_sessions, save} | ClientOpts]}]), SessionInfo = receive - {Server, Info} -> + {Server, Info} -> Info end, @@ -424,6 +451,25 @@ no_reuses_session_server_restart_new_cert_file(Config) when is_list(Config) -> ssl_test_lib:close(Server1), ssl_test_lib:close(Client1). + +client_max_session_table() -> + [{doc, "Check that max session table limit handling set max to 1 in init_per_testcase"}]. + +client_max_session_table(Config) when is_list(Config)-> + ClientOpts = ssl_test_lib:ssl_options(client_rsa_verify_opts, Config), + ServerOpts = ssl_test_lib:ssl_options(server_rsa_verify_opts, Config), + {ClientNode, ServerNode, HostName} = ssl_test_lib:run_where(Config), + test_max_session_limit(ClientOpts,ServerOpts,ClientNode, ServerNode, HostName). + +server_max_session_table() -> + [{doc, "Check that max session table limit handling set max to 1 in init_per_testcase"}]. + +server_max_session_table(Config) when is_list(Config)-> + ClientOpts = ssl_test_lib:ssl_options(client_rsa_verify_opts, Config), + ServerOpts = ssl_test_lib:ssl_options(server_rsa_verify_opts, Config), + {ClientNode, ServerNode, HostName} = ssl_test_lib:run_where(Config), + test_max_session_limit(ClientOpts,ServerOpts,ClientNode, ServerNode, HostName). + session_table_stable_size_on_tcp_close() -> [{doc, "Check that new sessions are cleanup when connection is closed abruptly during first handshake"}]. @@ -593,3 +639,66 @@ connection_states(Random) -> server_random = undefined, exportable = undefined}, sequence_number => 0,server_verify_data => undefined,max_fragment_length => undefined}}. + + + +test_max_session_limit(ClientOpts, ServerOpts, ClientNode, ServerNode, HostName) -> + Server0 = + ssl_test_lib:start_server([{node, ServerNode}, {port, 0}, + {from, self()}, + {mfa, {ssl_test_lib, no_result, []}}, + {tcp_options, [{active, false}]}, + {options, ServerOpts}]), + Port0 = ssl_test_lib:inet_port(Server0), + + Client0 = ssl_test_lib:start_client([{node, ClientNode}, + {port, Port0}, {host, HostName}, + {mfa, {ssl_test_lib, session_id, []}}, + {from, self()}, {options, [{reuse_sessions, save} | ClientOpts]}]), + SID0 = receive + {Client0, Id0} -> + Id0 + end, + + + Server0 ! listen, + + Client1 = ssl_test_lib:start_client([{node, ClientNode}, + {port, Port0}, {host, HostName}, + {mfa, {ssl_test_lib, session_id, []}}, + {from, self()}, {options, [{reuse_sessions, save} | ClientOpts]}]), + + SID1 = receive + {Client1, Id1} -> + Id1 + end, + + false = SID0 == SID1, + + + Server0 ! listen, + + Client2 = ssl_test_lib:start_client([{node, ClientNode}, + {port, Port0}, {host, HostName}, + {mfa, {ssl_test_lib, session_id, []}}, + {from, self()}, {options, [{reuse_sessions, save}| ClientOpts]}]), + + + SID2 = receive + {Client2, Id2} -> + Id2 + end, + + Server0 ! listen, + + Client3 = ssl_test_lib:start_client([{node, ClientNode}, + {port, Port0}, {host, HostName}, + {mfa, {ssl_test_lib, session_id, []}}, + {from, self()}, {options, [{reuse_session, SID2}| ClientOpts]}]), + + receive + {Client3, SID2} -> + ok; + Other -> + ct:fail({{expected, SID2}, {got,Other}}) + end. -- 2.26.2
Locations
Projects
Search
Status Monitor
Help
OpenBuildService.org
Documentation
API Documentation
Code of Conduct
Contact
Support
@OBShq
Terms
openSUSE Build Service is sponsored by
The Open Build Service is an
openSUSE project
.
Sign Up
Log In
Places
Places
All Projects
Status Monitor