aboutsummaryrefslogtreecommitdiffstats
path: root/lib/kernel/test/ch.erl
diff options
context:
space:
mode:
Diffstat (limited to 'lib/kernel/test/ch.erl')
-rw-r--r--lib/kernel/test/ch.erl84
1 files changed, 84 insertions, 0 deletions
diff --git a/lib/kernel/test/ch.erl b/lib/kernel/test/ch.erl
new file mode 100644
index 0000000000..25d1b4354c
--- /dev/null
+++ b/lib/kernel/test/ch.erl
@@ -0,0 +1,84 @@
+%%
+%% %CopyrightBegin%
+%%
+%% Copyright Ericsson AB 1996-2009. All Rights Reserved.
+%%
+%% The contents of this file are subject to the Erlang Public License,
+%% Version 1.1, (the "License"); you may not use this file except in
+%% compliance with the License. You should have received a copy of the
+%% Erlang Public License along with this software. If not, it can be
+%% retrieved online at http://www.erlang.org/.
+%%
+%% Software distributed under the License is distributed on an "AS IS"
+%% basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See
+%% the License for the specific language governing rights and limitations
+%% under the License.
+%%
+%% %CopyrightEnd%
+%%
+-module(ch).
+-behaviour(gen_server).
+
+%% External exports
+-export([start_link/1]).
+
+%% gen_server callbacks
+-export([init/1, handle_call/3, handle_info/2, terminate/2,
+ handle_cast/2, code_change/3]).
+
+start_link(Name) -> gen_server:start_link(ch, Name, []).
+
+%%-----------------------------------------------------------------
+%% Callback functions from gen_server
+%%-----------------------------------------------------------------
+init(Name) ->
+ process_flag(trap_exit, true),
+ global:re_register_name(Name, self()),
+ St = application:start_type(),
+ St1 = case St of
+ normal ->
+ normal;
+ local ->
+ local;
+ {takeover, _N} ->
+ takeover;
+ {failover, _N} ->
+ failover;
+ Else ->
+ Else
+ end,
+
+ %% Slow start to make sure that applications are started
+ %% "at the same time". (otp_2973)
+ case Name of
+ {ch,77} -> timer:sleep(100);
+ _ -> ok
+ end,
+
+ (catch global:send(Name, {st_type,{st, St1}})),
+ {ok, []}.
+
+handle_call({get_pid_key, Key}, _, State) ->
+ Res = application:get_key(Key),
+ {reply, Res, State};
+
+handle_call(get_pid_all_key, _, State) ->
+ Res = application:get_all_key(),
+ {reply, Res, State}.
+
+handle_info({st_type, Msg}, State) ->
+ timer:sleep(1000),
+ (catch global:send(st_type, Msg)),
+ {noreply, State};
+
+handle_info(_, State) ->
+ {noreply, State}.
+
+terminate(_Reason, _State) ->
+ ok.
+
+handle_cast(_, State) ->
+ {noreply, State}.
+
+code_change(_OldVsn, State, _Extra) ->
+ {ok, State}.