File 0039-dtls-Test-case-fixes.patch of Package erlang

From e7f5271f8f990b0a49a8ec8da08f1fc49f36bec6 Mon Sep 17 00:00:00 2001
From: Ingela Anderton Andin <ingela@erlang.org>
Date: Thu, 9 Mar 2017 15:36:00 +0100
Subject: [PATCH 1/2] dtls: Test case fixes

---
 lib/ssl/test/ssl_basic_SUITE.erl              | 31 ++++++++------
 lib/ssl/test/ssl_certificate_verify_SUITE.erl |  2 +-
 lib/ssl/test/ssl_test_lib.erl                 |  4 ++
 lib/ssl/test/ssl_to_openssl_SUITE.erl         | 60 ++++++++++-----------------
 4 files changed, 45 insertions(+), 52 deletions(-)

diff --git a/lib/ssl/test/ssl_basic_SUITE.erl b/lib/ssl/test/ssl_basic_SUITE.erl
index bff6d254f..86426bdb6 100644
--- a/lib/ssl/test/ssl_basic_SUITE.erl
+++ b/lib/ssl/test/ssl_basic_SUITE.erl
@@ -4040,11 +4040,11 @@ prf_create_plan(TlsVersions, PRFs, Results) ->
 prf_ciphers_and_expected(TlsVer, PRFs, Results) ->
     case TlsVer of
         TlsVer when TlsVer == sslv3 orelse TlsVer == tlsv1
-                    orelse TlsVer == 'tlsv1.1' ->
+                    orelse TlsVer == 'tlsv1.1' orelse TlsVer == 'dtlsv1' ->
             Ciphers = ssl:cipher_suites(),
             {_, Expected} = lists:keyfind(md5sha, 1, Results),
             [[{tls_ver, TlsVer}, {ciphers, Ciphers}, {expected, Expected}, {prf, md5sha}]];
-        'tlsv1.2' ->
+        TlsVer when  TlsVer == 'tlsv1.2' orelse  TlsVer == 'dtlsv1.2'->
             lists:foldl(
               fun(PRF, Acc) ->
                       Ciphers = prf_get_ciphers(TlsVer, PRF),
@@ -4059,21 +4059,20 @@ prf_ciphers_and_expected(TlsVer, PRFs, Results) ->
                       end
               end, [], PRFs)
     end.
-prf_get_ciphers(TlsVer, PRF) ->
-    case TlsVer of
-        'tlsv1.2' ->
-            lists:filter(
-              fun(C) when tuple_size(C) == 4 andalso
-                          element(4, C) == PRF -> 
-			  true;
-                 (_) -> false
-              end, ssl:cipher_suites())
-    end.
+prf_get_ciphers(_, PRF) ->
+    lists:filter(
+      fun(C) when tuple_size(C) == 4 andalso
+                  element(4, C) == PRF -> 
+              true;
+         (_) -> 
+              false
+      end, 
+      ssl:cipher_suites()).
 prf_run_test(_, TlsVer, [], _, Prf) ->
     ct:fail({error, cipher_list_empty, TlsVer, Prf});
 prf_run_test(Config, TlsVer, Ciphers, Expected, Prf) ->
     {ClientNode, ServerNode, Hostname} = ssl_test_lib:run_where(Config),
-    BaseOpts = [{active, true}, {versions, [TlsVer]}, {ciphers, Ciphers}],
+    BaseOpts = [{active, true}, {versions, [TlsVer]}, {ciphers, Ciphers}, {protocol, tls_or_dtls(TlsVer)}],
     ServerOpts = BaseOpts ++ proplists:get_value(server_opts, Config),
     ClientOpts = BaseOpts ++ proplists:get_value(client_opts, Config),
     Server = ssl_test_lib:start_server(
@@ -4771,3 +4770,9 @@ wait_for_send(Socket) ->
     %% Make sure TLS process processed send message event
     _ = ssl:connection_information(Socket).
 
+tls_or_dtls('dtlsv1') ->
+    dtls;
+tls_or_dtls('dtlsv1.2') ->
+    dtls;
+tls_or_dtls(_) ->
+    tls.
diff --git a/lib/ssl/test/ssl_certificate_verify_SUITE.erl b/lib/ssl/test/ssl_certificate_verify_SUITE.erl
index 4552a4f57..66b0c09b7 100644
--- a/lib/ssl/test/ssl_certificate_verify_SUITE.erl
+++ b/lib/ssl/test/ssl_certificate_verify_SUITE.erl
@@ -155,7 +155,7 @@ init_per_testcase(_TestCase, Config) ->
     ssl:stop(),
     ssl:start(),
     ssl_test_lib:ct_log_supported_protocol_versions(Config),
-    ct:timetrap({seconds, 5}),
+    ct:timetrap({seconds, 10}),
     Config.
 
 end_per_testcase(_TestCase, Config) ->     
diff --git a/lib/ssl/test/ssl_test_lib.erl b/lib/ssl/test/ssl_test_lib.erl
index 7a644968f..4b740c79d 100644
--- a/lib/ssl/test/ssl_test_lib.erl
+++ b/lib/ssl/test/ssl_test_lib.erl
@@ -1190,6 +1190,10 @@ check_sane_openssl_version(Version) ->
 		    false;
 		{'tlsv1.1', "OpenSSL 0" ++ _} ->
 		    false;
+                {'dtlsv1', "OpenSSL 0" ++ _} ->
+		    false;
+		{'dtlsv1.2', "OpenSSL 0" ++ _} ->
+		    false;
 		{_, _} ->
 		    true
 	    end;
diff --git a/lib/ssl/test/ssl_to_openssl_SUITE.erl b/lib/ssl/test/ssl_to_openssl_SUITE.erl
index 7a1dce70c..48fd2b7ea 100644
--- a/lib/ssl/test/ssl_to_openssl_SUITE.erl
+++ b/lib/ssl/test/ssl_to_openssl_SUITE.erl
@@ -88,9 +88,8 @@ dtls_all_versions_tests() ->
      %%erlang_client_openssl_server,
      erlang_server_openssl_client,
      %%erlang_client_openssl_server_dsa_cert,
-     erlang_server_openssl_client_dsa_cert
-     %% This one works but gets port EXIT first some times 
-     %%erlang_server_openssl_client_reuse_session
+     erlang_server_openssl_client_dsa_cert,
+     erlang_server_openssl_client_reuse_session
      %%erlang_client_openssl_server_renegotiate,
      %%erlang_client_openssl_server_nowrap_seqnum,
      %%erlang_server_openssl_client_nowrap_seqnum,
@@ -168,13 +167,18 @@ init_per_group(basic, Config) ->
 init_per_group(GroupName, Config) ->
     case ssl_test_lib:is_tls_version(GroupName) of
 	true ->
-	    case ssl_test_lib:check_sane_openssl_version(GroupName) of
-		true ->
-		    ssl_test_lib:init_tls_version(GroupName, Config);
-		false ->
-		    {skip, openssl_does_not_support_version}
-	    end;
-	_ ->
+            case ssl_test_lib:supports_ssl_tls_version(GroupName) of
+                true ->
+                    case ssl_test_lib:check_sane_openssl_version(GroupName) of
+                        true ->
+                            ssl_test_lib:init_tls_version(GroupName, Config);
+                        false ->
+                            {skip, openssl_does_not_support_version}
+                    end;
+                false ->
+                    {skip, openssl_does_not_support_version}
+            end; 
+        _ ->
 	    ssl:start(),
 	    Config
     end.
@@ -995,20 +999,7 @@ ssl2_erlang_server_openssl_client(Config) when is_list(Config) ->
     true = port_command(OpenSslPort, Data),
     
     ct:log("Ports ~p~n", [[erlang:port_info(P) || P <- erlang:ports()]]), 
-    receive
-	{'EXIT', OpenSslPort, _} = Exit ->
-	    ct:log("Received: ~p ~n", [Exit]),
-	    ok
-    end,
-    receive 
-	{'EXIT', _, _} = UnkownExit ->
-	    Msg = lists:flatten(io_lib:format("Received: ~p ~n", [UnkownExit])),
-	    ct:log(Msg),
-	    ct:comment(Msg),
-	    ok
-    after 0 ->
-	    ok
-    end,		
+    consume_port_exit(OpenSslPort),
     ssl_test_lib:check_result(Server, {error, {tls_alert, "handshake failure"}}),
     process_flag(trap_exit, false).
 %%--------------------------------------------------------------------
@@ -1039,20 +1030,7 @@ ssl2_erlang_server_openssl_client_comp(Config) when is_list(Config) ->
     true = port_command(OpenSslPort, Data),
     
     ct:log("Ports ~p~n", [[erlang:port_info(P) || P <- erlang:ports()]]), 
-    receive
-	{'EXIT', OpenSslPort, _} = Exit ->
-	    ct:log("Received: ~p ~n", [Exit]),
-	    ok
-    end,
-    receive 
-	{'EXIT', _, _} = UnkownExit ->
-	    Msg = lists:flatten(io_lib:format("Received: ~p ~n", [UnkownExit])),
-	    ct:log(Msg),
-	    ct:comment(Msg),
-	    ok
-    after 0 ->
-	    ok
-    end,		
+    consume_port_exit(OpenSslPort),
     ssl_test_lib:check_result(Server, {error, {tls_alert, "protocol version"}}),
     process_flag(trap_exit, false).
 
@@ -1873,3 +1851,9 @@ openssl_client_args(false, Hostname, Port, ServerName) ->
 openssl_client_args(true, Hostname, Port, ServerName) ->
     ["s_client",  "-no_ssl2", "-connect", Hostname ++ ":" ++ 
 	 integer_to_list(Port), "-servername", ServerName].
+
+consume_port_exit(OpenSSLPort) ->
+    receive    	
+        {'EXIT', OpenSSLPort, _} ->
+            ok
+    end.
-- 
2.12.0

openSUSE Build Service is sponsored by