From bb8ddc6d95844f92f4a3bfd7bfd3073f63bcbf45 Mon Sep 17 00:00:00 2001
From: Peter Andersson
Date: Thu, 26 Feb 2015 17:42:10 +0100
Subject: Add API functions for reading CT event manager references
---
lib/common_test/src/ct.erl | 14 ++++++++++++++
lib/common_test/src/ct_master.erl | 13 +++++++++++++
lib/common_test/test/ct_event_handler_SUITE.erl | 8 +++++++-
3 files changed, 34 insertions(+), 1 deletion(-)
(limited to 'lib/common_test')
diff --git a/lib/common_test/src/ct.erl b/lib/common_test/src/ct.erl
index 85afdc7834..0dc80142e0 100644
--- a/lib/common_test/src/ct.erl
+++ b/lib/common_test/src/ct.erl
@@ -52,6 +52,7 @@
-module(ct).
-include("ct.hrl").
+-include("ct_util.hrl").
%% Command line user interface for running tests
-export([install/1, run/1, run/2, run/3,
@@ -77,6 +78,7 @@
%% Other interface functions
-export([get_status/0, abort_current_testcase/1,
+ get_event_mgr_ref/0,
encrypt_config_file/2, encrypt_config_file/3,
decrypt_config_file/2, decrypt_config_file/3]).
@@ -1004,6 +1006,18 @@ get_testdata(Key) ->
abort_current_testcase(Reason) ->
test_server_ctrl:abort_current_testcase(Reason).
+%%%-----------------------------------------------------------------
+%%% @spec get_event_mgr_ref() -> EvMgrRef
+%%% EvMgrRef = atom()
+%%%
+%%% @doc Call this function in order to get a reference to the
+%%% CT event manager. The reference can be used to e.g. add
+%%% a user specific event handler while tests are running.
+%%% Example:
+%%% gen_event:add_handler(ct:get_event_mgr_ref(), my_ev_h, [])
+get_event_mgr_ref() ->
+ ?CT_EVMGR_REF.
+
%%%-----------------------------------------------------------------
%%% @spec encrypt_config_file(SrcFileName, EncryptFileName) ->
%%% ok | {error,Reason}
diff --git a/lib/common_test/src/ct_master.erl b/lib/common_test/src/ct_master.erl
index b42ff73846..0a41a0ed15 100644
--- a/lib/common_test/src/ct_master.erl
+++ b/lib/common_test/src/ct_master.erl
@@ -25,6 +25,7 @@
-export([run/1,run/3,run/4]).
-export([run_on_node/2,run_on_node/3]).
-export([run_test/1,run_test/2]).
+-export([get_event_mgr_ref/0]).
-export([basic_html/1]).
-export([abort/0,abort/1,progress/0]).
@@ -291,6 +292,18 @@ abort(Node) when is_atom(Node) ->
progress() ->
call(progress).
+%%%-----------------------------------------------------------------
+%%% @spec get_event_mgr_ref() -> MasterEvMgrRef
+%%% MasterEvMgrRef = atom()
+%%%
+%%% @doc Call this function in order to get a reference to the
+%%% CT master event manager. The reference can be used to e.g.
+%%% add a user specific event handler while tests are running.
+%%% Example:
+%%% gen_event:add_handler(ct_master:get_event_mgr_ref(), my_ev_h, [])
+get_event_mgr_ref() ->
+ ?CT_MEVMGR_REF.
+
%%%-----------------------------------------------------------------
%%% @spec basic_html(Bool) -> ok
%%% Bool = true | false
diff --git a/lib/common_test/test/ct_event_handler_SUITE.erl b/lib/common_test/test/ct_event_handler_SUITE.erl
index b534a7141d..d6cd9c6912 100644
--- a/lib/common_test/test/ct_event_handler_SUITE.erl
+++ b/lib/common_test/test/ct_event_handler_SUITE.erl
@@ -29,6 +29,7 @@
-compile(export_all).
-include_lib("common_test/include/ct.hrl").
+-include_lib("common_test/src/ct_util.hrl").
%-include_lib("common_test/include/ct_event.hrl").
@@ -59,7 +60,7 @@ end_per_testcase(TestCase, Config) ->
suite() -> [{ct_hooks,[ts_install_cth]}].
all() ->
- [start_stop, results].
+ [start_stop, results, event_mgrs].
groups() ->
[].
@@ -176,5 +177,10 @@ results(Config) when is_list(Config) ->
ok = ct_test_support:verify_events(TestEvents++TestEvents, Events, Config).
+event_mgrs(_) ->
+ ?CT_EVMGR_REF = ct:get_event_mgr_ref(),
+ ?CT_MEVMGR_REF = ct_master:get_event_mgr_ref().
+
+
%%%-----------------------------------------------------------------
%%% HELP FUNCTIONS
--
cgit v1.2.3
From d603d51333b2bdc58658ef8bfe7f2a2a8ed074a5 Mon Sep 17 00:00:00 2001
From: Peter Andersson
Date: Thu, 26 Feb 2015 23:11:38 +0100
Subject: Add documentation
---
lib/common_test/doc/src/event_handler_chapter.xml | 9 +++++++++
lib/common_test/src/ct.erl | 2 +-
lib/common_test/src/ct_master.erl | 2 +-
3 files changed, 11 insertions(+), 2 deletions(-)
(limited to 'lib/common_test')
diff --git a/lib/common_test/doc/src/event_handler_chapter.xml b/lib/common_test/doc/src/event_handler_chapter.xml
index 45f01c12ec..f39f391818 100644
--- a/lib/common_test/doc/src/event_handler_chapter.xml
+++ b/lib/common_test/doc/src/event_handler_chapter.xml
@@ -59,6 +59,15 @@
Event handlers plugged into this manager will receive the events from
all the test nodes as well as information from the CT Master server
itself.
+
+ User specific event handlers may be plugged into a Common Test event
+ manager, either by telling Common Test to install them before the test
+ run (see below), or by adding the handlers dynamically during the test
+ run by means of
+ gen_event:add_handler/3 or gen_event:add_sup_handler/3.
+ In the latter scenario, the reference of the Common Test event manager is
+ required. To get it, call ct:get_event_mgr_ref/0 or (on the CT
+ Master node) ct_master:get_event_mgr_ref/0.
diff --git a/lib/common_test/src/ct.erl b/lib/common_test/src/ct.erl
index 0dc80142e0..9d8fce2789 100644
--- a/lib/common_test/src/ct.erl
+++ b/lib/common_test/src/ct.erl
@@ -1014,7 +1014,7 @@ abort_current_testcase(Reason) ->
%%% CT event manager. The reference can be used to e.g. add
%%% a user specific event handler while tests are running.
%%% Example:
-%%% gen_event:add_handler(ct:get_event_mgr_ref(), my_ev_h, [])
+%%% gen_event:add_handler(ct:get_event_mgr_ref(), my_ev_h, [])
get_event_mgr_ref() ->
?CT_EVMGR_REF.
diff --git a/lib/common_test/src/ct_master.erl b/lib/common_test/src/ct_master.erl
index 0a41a0ed15..2cdb259899 100644
--- a/lib/common_test/src/ct_master.erl
+++ b/lib/common_test/src/ct_master.erl
@@ -300,7 +300,7 @@ progress() ->
%%% CT master event manager. The reference can be used to e.g.
%%% add a user specific event handler while tests are running.
%%% Example:
-%%% gen_event:add_handler(ct_master:get_event_mgr_ref(), my_ev_h, [])
+%%% gen_event:add_handler(ct_master:get_event_mgr_ref(), my_ev_h, [])
get_event_mgr_ref() ->
?CT_MEVMGR_REF.
--
cgit v1.2.3