1: %% 2: %% %CopyrightBegin% 3: %% 4: %% Copyright Ericsson AB 2009-2012. All Rights Reserved. 5: %% 6: %% The contents of this file are subject to the Erlang Public License, 7: %% Version 1.1, (the "License"); you may not use this file except in 8: %% compliance with the License. You should have received a copy of the 9: %% Erlang Public License along with this software. If not, it can be 10: %% retrieved online at http://www.erlang.org/. 11: %% 12: %% Software distributed under the License is distributed on an "AS IS" 13: %% basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See 14: %% the License for the specific language governing rights and limitations 15: %% under the License. 16: %% 17: %% %CopyrightEnd% 18: 19: -module(reltool_wx_SUITE). 20: 21: -export([all/0, suite/0,groups/0,init_per_group/2,end_per_group/2, 22: init_per_suite/1, end_per_suite/1, 23: init_per_testcase/2, end_per_testcase/2]). 24: 25: -compile(export_all). 26: 27: -include("reltool_test_lib.hrl"). 28: 29: %% Initialization functions. 30: init_per_suite(Config) -> 31: reltool_test_lib:wx_init_per_suite(Config). 32: 33: end_per_suite(Config) -> 34: reltool_test_lib:wx_end_per_suite(Config). 35: 36: init_per_testcase(Func,Config) -> 37: reltool_test_lib:init_per_testcase(Func,Config). 38: end_per_testcase(Func,Config) -> 39: reltool_test_lib:end_per_testcase(Func,Config). 40: 41: %% SUITE specification 42: suite() -> [{ct_hooks,[ts_install_cth]}]. 43: 44: all() -> 45: [start_all_windows]. 46: 47: groups() -> 48: []. 49: 50: init_per_group(_GroupName, Config) -> 51: Config. 52: 53: end_per_group(_GroupName, Config) -> 54: Config. 55: 56: 57: %% The test cases 58: 59: %% Display all windows and see if something crashes 60: start_all_windows(TestInfo) when is_atom(TestInfo) -> 61: reltool_test_lib:tc_info(TestInfo); 62: start_all_windows(_Config) -> 63: {ok, SysPid} = ?msym({ok, _}, reltool:start([{trap_exit, false}])), 64: erlang:monitor(process,SysPid), 65: {ok, AppPid} = ?msym({ok, _}, reltool_sys_win:open_app(SysPid, stdlib)), 66: erlang:monitor(process,AppPid), 67: {ok, ModPid} = ?msym({ok, _}, reltool_app_win:open_mod(AppPid, escript)), 68: erlang:monitor(process,ModPid), 69: 70: %% Let all windows get started 71: timer:sleep(timer:seconds(10)), 72: 73: %% Test that server pid can be fetched, and that server is alive 74: {ok, Server} = ?msym({ok,_}, reltool:get_server(SysPid)), 75: ?m(true, erlang:is_process_alive(Server)), 76: ?m({ok,{sys,[]}}, reltool:get_config(Server)), 77: 78: %% Terminate 79: check_no_win_crash(), 80: ?m(ok, reltool:stop(SysPid)), 81: wait_terminate([{sys,SysPid},{app,AppPid},{mod,ModPid}]), 82: 83: ok. 84: 85: 86: %%%----------------------------------------------------------------- 87: %%% Internal functions 88: check_no_win_crash() -> 89: receive {'DOWN',_,_,_,_} = Down -> 90: ct:log("Unexpected termination of window:~n~p",[Down]), 91: ct:fail("window crashed") 92: after 0 -> 93: ok 94: end. 95: 96: wait_terminate([]) -> 97: ok; 98: wait_terminate([{Win,P}|Rest]) -> 99: receive 100: {'DOWN',_,process,P,shutdown} -> 101: wait_terminate(Rest); 102: {'DOWN',_,process,P,Reason} -> 103: ct:log("~p window terminated with unexpected reason:~n~p", 104: [Win,Reason]), 105: ct:fail("unexpected exit reason from window") 106: end.