From b48efd0bcfd99b9d129835bdb9d411c8f061aee3 Mon Sep 17 00:00:00 2001
From: Siri Hansen <siri@erlang.org>
Date: Mon, 22 Apr 2013 14:53:04 +0200
Subject: [jinterface] Clean up hanging java nodes after each test case

---
 lib/jinterface/test/jinterface_SUITE.erl |  1 +
 lib/jinterface/test/jitu.erl             | 38 +++++++++++++++++++++++++++++---
 lib/jinterface/test/nc_SUITE.erl         |  1 +
 3 files changed, 37 insertions(+), 3 deletions(-)

(limited to 'lib')

diff --git a/lib/jinterface/test/jinterface_SUITE.erl b/lib/jinterface/test/jinterface_SUITE.erl
index b438da12d0..1388f966e8 100644
--- a/lib/jinterface/test/jinterface_SUITE.erl
+++ b/lib/jinterface/test/jinterface_SUITE.erl
@@ -188,6 +188,7 @@ end_per_testcase(_Case,Config) ->
 	undefined -> ok;
 	Pid -> exit(Pid,kill)
     end,
+    jitu:kill_all_jnodes(),
     ?t:timetrap_cancel(?config(watch_dog,Config)),
     ok.
 
diff --git a/lib/jinterface/test/jitu.erl b/lib/jinterface/test/jitu.erl
index 0e1af0ff22..a029c063bc 100644
--- a/lib/jinterface/test/jitu.erl
+++ b/lib/jinterface/test/jitu.erl
@@ -27,7 +27,10 @@
 	 java/4,
 	 java/5,
 	 init_all/1,
-	 finish_all/1]).
+	 finish_all/1,
+	 kill_all_jnodes/0]).
+
+-include("ct.hrl").
 
 %%
 %% Lots of stuff here are originating from java_client_erl_server_SUITE.erl
@@ -51,10 +54,33 @@ java(Java, Dir, Class, Args, Props) ->
 init_all(Config) when is_list(Config) ->
     case find_executable(["java"]) of
 	false -> {skip,"Found no Java VM"};
-	Path -> [{java,Path}|Config]
+	Path ->
+	    Pid = spawn(fun() ->
+				ets:new(jitu_tab,[set,named_table,public]),
+				receive stop -> ets:delete(jitu_tab) end
+			end),
+	    [{java,Path},{tab_proc,Pid}|Config]
     end.
 
-finish_all(Config) -> Config.
+finish_all(Config) ->
+    kill_all_jnodes(),
+    ?config(tab_proc,Config) ! stop,
+    Config.
+
+kill_all_jnodes() ->
+    Jnodes = ets:tab2list(jitu_tab),
+    [begin
+%	 ct:pal("Killing OsPid=~w started with ~p",[OsPid,_Cmd]),
+	 kill_os_process(os:type(),integer_to_list(OsPid))
+     end || {OsPid,_Cmd} <- Jnodes],
+    ets:delete_all_objects(jitu_tab),
+    ok.
+
+kill_os_process({win32,_},OsPid) ->
+    os:cmd("taskkill /PID " ++ OsPid);
+kill_os_process(_,OsPid) ->
+    os:cmd("kill " ++ OsPid).
+
 
 %%
 %% Internal stuff...
@@ -110,6 +136,12 @@ cmd(Cmd) ->
     io:format("cmd: ~s~n", [Cmd]),
     case catch open_port({spawn,Cmd}, PortOpts) of
 	Port when is_port(Port) ->
+	    case erlang:port_info(Port,os_pid) of
+		{os_pid,OsPid} ->
+		    ets:insert(jitu_tab,{OsPid,Cmd});
+		_ ->
+		    ok
+	    end,
 	    Result = cmd_loop(Port, []),
 	    io:format("cmd res: ~w~n", [Result]),
 	    case Result of
diff --git a/lib/jinterface/test/nc_SUITE.erl b/lib/jinterface/test/nc_SUITE.erl
index 63c78ebdaa..4d6ebec4d7 100644
--- a/lib/jinterface/test/nc_SUITE.erl
+++ b/lib/jinterface/test/nc_SUITE.erl
@@ -111,6 +111,7 @@ init_per_testcase(Case, Config) ->
     [{watchdog, WatchDog}| Config].
 
 end_per_testcase(_Case, Config) ->
+    jitu:kill_all_jnodes(),
     WatchDog = ?config(watchdog, Config),
     test_server:timetrap_cancel(WatchDog).
 
-- 
cgit v1.2.3


From d8d2844cfa1fa97fdf345415802e9db3e8e61c5b Mon Sep 17 00:00:00 2001
From: Siri Hansen <siri@erlang.org>
Date: Mon, 22 Apr 2013 14:54:08 +0200
Subject: [jinterface] Set max heap size for jvm when running echo_server

The test cases nc_SUITE:decompress_roundtrip and
nc_SUITE:compress_roundtrip fails on some machines with
OutOfMemoryException. This commit sets the max heap size for the jvm
to 256M in nc_SUITE in order to get around this.
---
 lib/jinterface/test/nc_SUITE.erl | 9 ++++++---
 1 file changed, 6 insertions(+), 3 deletions(-)

(limited to 'lib')

diff --git a/lib/jinterface/test/nc_SUITE.erl b/lib/jinterface/test/nc_SUITE.erl
index 4d6ebec4d7..87f22c9a67 100644
--- a/lib/jinterface/test/nc_SUITE.erl
+++ b/lib/jinterface/test/nc_SUITE.erl
@@ -696,15 +696,18 @@ run_server(Server, Config, Action, ExtraArgs) ->
     true = register(Name, self()),
     JName = make_name(),
     spawn_link(fun () ->
+		       %% Setting max memory to 256. This is due to
+		       %% echo_server sometimes failing with
+		       %% OutOfMemoryException one some test machines.
 		       ok = jitu:java(?config(java, Config),
 				      ?config(data_dir, Config),
 				      atom_to_list(Server),
 				      [JName,
 				       erlang:get_cookie(),
 				       node(),
-				       Name]++ExtraArgs
-				     ),
-						%,"-DOtpConnection.trace=3"),
+				       Name]++ExtraArgs,
+				      " -Xmx256m"),
+				      %% " -Xmx256m -DOtpConnection.trace=3"),
 		       Name ! {done, JName}
 	       end),
     receive
-- 
cgit v1.2.3


From a7c002d0f70526257fcf07d7a4b7320d541da931 Mon Sep 17 00:00:00 2001
From: Siri Hansen <siri@erlang.org>
Date: Mon, 22 Apr 2013 14:57:45 +0200
Subject: [jinterface] Extend timetrap timers in nc_SUITE and jinterface_SUITE

---
 lib/jinterface/test/jinterface_SUITE.erl | 2 +-
 lib/jinterface/test/nc_SUITE.erl         | 2 +-
 2 files changed, 2 insertions(+), 2 deletions(-)

(limited to 'lib')

diff --git a/lib/jinterface/test/jinterface_SUITE.erl b/lib/jinterface/test/jinterface_SUITE.erl
index 1388f966e8..de8d611efc 100644
--- a/lib/jinterface/test/jinterface_SUITE.erl
+++ b/lib/jinterface/test/jinterface_SUITE.erl
@@ -180,7 +180,7 @@ init_per_testcase(Case, _Config)
        Case =:= kill_mbox_from_erlang ->
     {skip, "Not yet implemented"};
 init_per_testcase(_Case,Config) ->
-    Dog = ?t:timetrap({seconds,10}),
+    Dog = ?t:timetrap({seconds,30}),
     [{watch_dog,Dog}|Config].
 
 end_per_testcase(_Case,Config) ->
diff --git a/lib/jinterface/test/nc_SUITE.erl b/lib/jinterface/test/nc_SUITE.erl
index 87f22c9a67..f1493a3cc9 100644
--- a/lib/jinterface/test/nc_SUITE.erl
+++ b/lib/jinterface/test/nc_SUITE.erl
@@ -105,7 +105,7 @@ end_per_suite(Config) ->
 init_per_testcase(Case, Config) ->
     T = case atom_to_list(Case) of
 	    "unicode"++_ -> 240;
-	    _ -> 30
+	    _ -> 120
 	end,
     WatchDog = test_server:timetrap(test_server:seconds(T)),
     [{watchdog, WatchDog}| Config].
-- 
cgit v1.2.3