diff options
author | Siri Hansen <[email protected]> | 2013-05-02 07:49:45 +0200 |
---|---|---|
committer | Siri Hansen <[email protected]> | 2013-05-02 07:49:45 +0200 |
commit | ed1bbb32e7030644e29fea79316b380a658b3605 (patch) | |
tree | f3f486a83adfa97628bc561cd22576bdb7905316 /lib/jinterface/test/jitu.erl | |
parent | 0c5dc8d7a6079706dfdf44d4abc22e756eb12863 (diff) | |
parent | 1158dcc96c3a6a32a042bd6cc361f1c035e9cca1 (diff) | |
download | otp-ed1bbb32e7030644e29fea79316b380a658b3605.tar.gz otp-ed1bbb32e7030644e29fea79316b380a658b3605.tar.bz2 otp-ed1bbb32e7030644e29fea79316b380a658b3605.zip |
Merge branch 'maint'
Diffstat (limited to 'lib/jinterface/test/jitu.erl')
-rw-r--r-- | lib/jinterface/test/jitu.erl | 38 |
1 files changed, 35 insertions, 3 deletions
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 |