From 2851ac4e11375e7870a9d7be23a307aff31f270b Mon Sep 17 00:00:00 2001
From: Ingela Anderton Andin <ingela@erlang.org>
Date: Thu, 27 Oct 2011 16:14:07 +0200
Subject: Avoid openssl processes surviving after test case has finished

If the server process is always closed first shutdown of
the openssl process will be gracious
---
 lib/ssl/test/ssl_to_openssl_SUITE.erl | 105 ++++++++++++++++------------------
 1 file changed, 50 insertions(+), 55 deletions(-)

(limited to 'lib/ssl/test')

diff --git a/lib/ssl/test/ssl_to_openssl_SUITE.erl b/lib/ssl/test/ssl_to_openssl_SUITE.erl
index 8ccbb3ffa1..0fd2ea1ffb 100644
--- a/lib/ssl/test/ssl_to_openssl_SUITE.erl
+++ b/lib/ssl/test/ssl_to_openssl_SUITE.erl
@@ -171,7 +171,8 @@ all() ->
      tls1_erlang_server_openssl_client_client_cert,
      tls1_erlang_server_erlang_client_client_cert,
      ciphers_rsa_signed_certs, ciphers_dsa_signed_certs,
-     erlang_client_bad_openssl_server, expired_session,
+     erlang_client_bad_openssl_server,
+     expired_session,
      ssl2_erlang_server_openssl_client].
 
 groups() -> 
@@ -225,7 +226,6 @@ erlang_client_openssl_server(Config) when is_list(Config) ->
   
     %% Clean close down!   Server needs to be closed first !!
     close_port(OpensslPort),
-
     ssl_test_lib:close(Client),
     process_flag(trap_exit, false),
     ok.
@@ -259,9 +259,9 @@ erlang_server_openssl_client(Config) when is_list(Config) ->
     port_command(OpenSslPort, Data),
     
     ssl_test_lib:check_result(Server, ok),
-    
-    ssl_test_lib:close(Server),
 
+    %% Clean close down!   Server needs to be closed first !!
+    ssl_test_lib:close(Server),
     close_port(OpenSslPort),
     process_flag(trap_exit, false),
     ok.
@@ -309,7 +309,6 @@ tls1_erlang_client_openssl_server_dsa_cert(Config) when is_list(Config) ->
    
     %% Clean close down!   Server needs to be closed first !!
     close_port(OpensslPort),
-
     ssl_test_lib:close(Client),
     process_flag(trap_exit, false),
     ok.
@@ -349,8 +348,8 @@ tls1_erlang_server_openssl_client_dsa_cert(Config) when is_list(Config) ->
     
     ssl_test_lib:check_result(Server, ok),
     
+    %% Clean close down!   Server needs to be closed first !!
     ssl_test_lib:close(Server),
-
     close_port(OpenSslPort),
     process_flag(trap_exit, false),
     ok.
@@ -398,7 +397,6 @@ ssl3_erlang_client_openssl_server_dsa_cert(Config) when is_list(Config) ->
    
     %% Clean close down!   Server needs to be closed first !!
     close_port(OpensslPort),
-
     ssl_test_lib:close(Client),
     process_flag(trap_exit, false),
     ok.
@@ -438,8 +436,8 @@ ssl3_erlang_server_openssl_client_dsa_cert(Config) when is_list(Config) ->
     
     ssl_test_lib:check_result(Server, ok),
     
+    %% Clean close down!   Server needs to be closed first !!
     ssl_test_lib:close(Server),
-
     close_port(OpenSslPort),
     process_flag(trap_exit, false),
     ok.
@@ -478,8 +476,8 @@ erlang_server_openssl_client_reuse_session(Config) when is_list(Config) ->
     
     ssl_test_lib:check_result(Server, ok),
     
+    %% Clean close down!   Server needs to be closed first !!
     ssl_test_lib:close(Server),
-
     close_port(OpenSslPort),
     process_flag(trap_exit, false),
     ok.
@@ -528,7 +526,6 @@ erlang_client_openssl_server_renegotiate(Config) when is_list(Config) ->
    
     %% Clean close down!   Server needs to be closed first !!
     close_port(OpensslPort),
-
     ssl_test_lib:close(Client),
     process_flag(trap_exit, false),
     ok.
@@ -577,7 +574,6 @@ erlang_client_openssl_server_no_wrap_sequence_number(Config) when is_list(Config
 
     %% Clean close down!   Server needs to be closed first !!
     close_port(OpensslPort),
-
     ssl_test_lib:close(Client),
     process_flag(trap_exit, false),
     ok.
@@ -618,8 +614,8 @@ erlang_server_openssl_client_no_wrap_sequence_number(Config) when is_list(Config
     
     ssl_test_lib:check_result(Server, ok),
     
+    %% Clean close down!   Server needs to be closed first !!
     ssl_test_lib:close(Server),
-
     close_port(OpenSslPort),
     process_flag(trap_exit, false),
     ok.
@@ -666,7 +662,6 @@ erlang_client_openssl_server_no_server_ca_cert(Config) when is_list(Config) ->
 
     %% Clean close down!   Server needs to be closed first !!
     close_port(OpensslPort),
-
     ssl_test_lib:close(Client),
     process_flag(trap_exit, false),
     ok.
@@ -677,6 +672,7 @@ ssl3_erlang_client_openssl_server(doc) ->
 ssl3_erlang_client_openssl_server(suite) ->
     [];
 ssl3_erlang_client_openssl_server(Config) when is_list(Config) ->
+    process_flag(trap_exit, true),
     ServerOpts = ?config(server_opts, Config),  
     ClientOpts = ?config(client_opts, Config),  
 
@@ -703,11 +699,11 @@ ssl3_erlang_client_openssl_server(Config) when is_list(Config) ->
 					{options, 
 					 [{versions, [sslv3]} | ClientOpts]}]),
     ssl_test_lib:check_result(Client, ok),
-    
-    ssl_test_lib:close(Client),
-    %% Clean close down!
+
+    %% Clean close down!   Server needs to be closed first !!
     close_port(OpensslPort),
-    test_server:sleep(?SLEEP),
+    ssl_test_lib:close(Client),
+    process_flag(trap_exit, false),
     ok.
 
 %%--------------------------------------------------------------------
@@ -717,6 +713,7 @@ ssl3_erlang_server_openssl_client(doc) ->
 ssl3_erlang_server_openssl_client(suite) ->
     [];
 ssl3_erlang_server_openssl_client(Config) when is_list(Config) ->
+    process_flag(trap_exit, true),
     ServerOpts = ?config(server_opts, Config),  
     
     {_, ServerNode, _} = ssl_test_lib:run_where(Config),
@@ -737,10 +734,10 @@ ssl3_erlang_server_openssl_client(Config) when is_list(Config) ->
     OpenSslPort =  open_port({spawn, Cmd}, [stderr_to_stdout]), 
 
     ssl_test_lib:check_result(Server, ok),
-    
-    close_port(OpenSslPort), %% openssl server first
+    %% Clean close down!   Server needs to be closed first !!
     ssl_test_lib:close(Server),
-    test_server:sleep(?SLEEP),
+    close_port(OpenSslPort),
+    process_flag(trap_exit, false),
     ok.
 
 %%--------------------------------------------------------------------
@@ -782,7 +779,7 @@ ssl3_erlang_client_openssl_server_client_cert(Config) when is_list(Config) ->
     
     ssl_test_lib:check_result(Client, ok),
   
-    %% Clean close down!
+    %% Clean close down!   Server needs to be closed first !!
     close_port(OpensslPort), 
     ssl_test_lib:close(Client),
     process_flag(trap_exit, false),
@@ -827,9 +824,9 @@ ssl3_erlang_server_openssl_client_client_cert(Config) when is_list(Config) ->
     
     ssl_test_lib:check_result(Server, ok),
     
-    close_port(OpenSslPort), %% openssl server first
+    %% Clean close down!   Server needs to be closed first !!
+    close_port(OpenSslPort),
     ssl_test_lib:close(Server),
-    %% Clean close down!
     process_flag(trap_exit, false),
     ok.
 
@@ -910,10 +907,10 @@ tls1_erlang_client_openssl_server(Config) when is_list(Config) ->
 					 [{versions, [tlsv1]} | ClientOpts]}]),
     
     ssl_test_lib:check_result(Client, ok),
-    
-    ssl_test_lib:close(Client),
-    %% Clean close down!
+
+    %% Clean close down!   Server needs to be closed first !!
     close_port(OpensslPort),
+    ssl_test_lib:close(Client),
     process_flag(trap_exit, false),
     ok.
 
@@ -946,9 +943,9 @@ tls1_erlang_server_openssl_client(Config) when is_list(Config) ->
      
     ssl_test_lib:check_result(Server, ok),
     
-    %% Clean close down!
-    close_port(OpenSslPort),
+    %% Clean close down!   Server needs to be closed first !!
     ssl_test_lib:close(Server),
+    close_port(OpenSslPort),
     process_flag(trap_exit, false),
     ok.
 
@@ -992,7 +989,7 @@ tls1_erlang_client_openssl_server_client_cert(Config) when is_list(Config) ->
     
     ssl_test_lib:check_result(Client, ok),
   
-    %% Clean close down!
+    %% Clean close down!   Server needs to be closed first !!
     close_port(OpensslPort),
     ssl_test_lib:close(Client),
     process_flag(trap_exit, false),
@@ -1037,9 +1034,9 @@ tls1_erlang_server_openssl_client_client_cert(Config) when is_list(Config) ->
     
     ssl_test_lib:check_result(Server, ok),
     
-    %% Clean close down!
-    close_port(OpenSslPort),
+    %% Clean close down!   Server needs to be closed first !!
     ssl_test_lib:close(Server),
+    close_port(OpenSslPort),
     process_flag(trap_exit, false),
     ok.
 
@@ -1074,9 +1071,7 @@ tls1_erlang_server_erlang_client_client_cert(Config) when is_list(Config) ->
 					 [{versions, [tlsv1]} | ClientOpts]}]),
     
     ssl_test_lib:check_result(Server, ok, Client, ok),
-    
     ssl_test_lib:close(Server),
-    %% Clean close down!
     process_flag(trap_exit, false),
     ok.
 %%--------------------------------------------------------------------
@@ -1174,8 +1169,8 @@ cipher(CipherSuite, Version, Config, ClientOpts, ServerOpts) ->
     
     Result = ssl_test_lib:wait_for_result(Client, ok),    
 
+    %% Clean close down!   Server needs to be closed first !!
     close_port(OpenSslPort),
-    %% Clean close down!
     ssl_test_lib:close(Client),
     
     Return = case Result of
@@ -1202,26 +1197,26 @@ erlang_client_bad_openssl_server(Config) when is_list(Config) ->
     Port = ssl_test_lib:inet_port(node()),
     CertFile = proplists:get_value(certfile, ServerOpts),
     KeyFile = proplists:get_value(keyfile, ServerOpts),
-   
+
     Cmd = "openssl s_server -accept " ++ integer_to_list(Port)  ++ 
-	" -cert " ++ CertFile ++ " -key " ++ KeyFile ++ "", 
-    
+ 	" -cert " ++ CertFile ++ " -key " ++ KeyFile ++ "",
+
     test_server:format("openssl cmd: ~p~n", [Cmd]),
 
     OpensslPort =  open_port({spawn, Cmd}, [stderr_to_stdout]), 
-
+    
     wait_for_openssl_server(),
     
     Client0 = ssl_test_lib:start_client([{node, ClientNode}, {port, Port}, 
-					{host, Hostname},
-					{from, self()}, 
-					{mfa, {?MODULE, server_sent_garbage, []}},
-					{options, 
-					 [{versions, [tlsv1]} | ClientOpts]}]),
+					 {host, Hostname},
+					 {from, self()}, 
+ 					{mfa, {?MODULE, server_sent_garbage, []}},
+					 {options,
+					  [{versions, [tlsv1]} | ClientOpts]}]),
     
     %% Send garbage
     port_command(OpensslPort, ?OPENSSL_GARBAGE),
-    
+
     test_server:sleep(?SLEEP),
 
     Client0 ! server_sent_garbage,
@@ -1231,17 +1226,16 @@ erlang_client_bad_openssl_server(Config) when is_list(Config) ->
     ssl_test_lib:close(Client0),
     
     %% Make sure openssl does not hang and leave zombie process
-    Client1 = ssl_test_lib:start_client([{node, ClientNode}, {port, Port}, 
-					 {host, Hostname},
-					 {from, self()}, 
-					 {mfa, {ssl_test_lib, no_result_msg, []}},
-					 {options, 
-					  [{versions, [tlsv1]} | ClientOpts]}]),
-    
-    ssl_test_lib:close(Client1),
-    
-    %% Clean close down!
+    Client1 = ssl_test_lib:start_client([{node, ClientNode}, {port, Port},
+ 					 {host, Hostname},
+ 					 {from, self()},
+ 					 {mfa, {ssl_test_lib, no_result_msg, []}},
+ 					 {options,
+ 					  [{versions, [tlsv1]} | ClientOpts]}]),
+
+    %% Clean close down!   Server needs to be closed first !!
     close_port(OpensslPort),
+    ssl_test_lib:close(Client1),
     process_flag(trap_exit, false),
     ok.
 
@@ -1300,6 +1294,7 @@ expired_session(Config) when is_list(Config) ->
 				   {mfa, {ssl_test_lib, no_result, []}},
 				   {from, self()},  {options, ClientOpts}]),  
 
+    %% Clean close down!   Server needs to be closed first !!
     close_port(OpensslPort),
     ssl_test_lib:close(Client2),
     process_flag(trap_exit, false).
@@ -1332,8 +1327,8 @@ ssl2_erlang_server_openssl_client(Config) when is_list(Config) ->
     
     ssl_test_lib:check_result(Server, {error,"protocol version"}),
     
+    %% Clean close down!   Server needs to be closed first !!
     ssl_test_lib:close(Server),
-
     close_port(OpenSslPort),
     process_flag(trap_exit, false),
     ok.
-- 
cgit v1.2.3