aboutsummaryrefslogtreecommitdiffstats
path: root/test
diff options
context:
space:
mode:
authorLoïc Hoguin <[email protected]>2017-11-03 17:52:18 +0000
committerLoïc Hoguin <[email protected]>2017-11-03 17:52:18 +0000
commitda304799fee8ac93ce83d9349bb8128af3985671 (patch)
treee33da406c01c4dadc2f569d0b179b587934e41cd /test
parentaf58babd940f0add48c9ff6e47a4196f91417728 (diff)
downloadcowboy-da304799fee8ac93ce83d9349bb8128af3985671.tar.gz
cowboy-da304799fee8ac93ce83d9349bb8128af3985671.tar.bz2
cowboy-da304799fee8ac93ce83d9349bb8128af3985671.zip
Add a terminate event to the tracer and more tests
Diffstat (limited to 'test')
-rw-r--r--test/tracer_SUITE.erl61
1 files changed, 57 insertions, 4 deletions
diff --git a/test/tracer_SUITE.erl b/test/tracer_SUITE.erl
index 40ede6c..6f83fd3 100644
--- a/test/tracer_SUITE.erl
+++ b/test/tracer_SUITE.erl
@@ -93,16 +93,69 @@ do_get(Path, Config) ->
{ok, _Body} = gun:await_body(ConnPid, Ref),
gun:close(ConnPid).
-%% We only care about cowboy_req:reply/4 calls.
+%% We only care about cowboy_req:reply/4 calls and init/terminate events.
do_tracer_callback(Pid) ->
fun
- (init, _) -> undefined;
- (Event={trace_ts, _, call, {cowboy_req, reply, _}, _}, State) -> Pid ! Event, State;
- (_, State) -> State
+ (Event, _) when Event =:= init; Event =:= terminate ->
+ Pid ! Event,
+ undefined;
+ (Event={trace_ts, _, call, {cowboy_req, reply, _}, _}, State) ->
+ Pid ! Event,
+ State;
+ (_, State) ->
+ State
end.
%% Tests.
+init(Config) ->
+ doc("Ensure the init event is triggered."),
+ Ref = config(ref, Config),
+ Opts = ranch:get_protocol_options(Ref),
+ ranch:set_protocol_options(Ref, Opts#{
+ tracer_callback => do_tracer_callback(self()),
+ tracer_match_specs => [fun(_,_,_) -> true end]
+ }),
+ do_get("/", Config),
+ receive
+ init ->
+ ok
+ after 100 ->
+ error(timeout)
+ end.
+
+terminate(Config) ->
+ doc("Ensure the terminate event is triggered."),
+ Ref = config(ref, Config),
+ Opts = ranch:get_protocol_options(Ref),
+ ranch:set_protocol_options(Ref, Opts#{
+ tracer_callback => do_tracer_callback(self()),
+ tracer_match_specs => [fun(_,_,_) -> true end]
+ }),
+ do_get("/", Config),
+ receive
+ terminate ->
+ ok
+ after 100 ->
+ error(timeout)
+ end.
+
+empty(Config) ->
+ doc("Empty match specs unconditionally enable tracing."),
+ Ref = config(ref, Config),
+ Opts = ranch:get_protocol_options(Ref),
+ ranch:set_protocol_options(Ref, Opts#{
+ tracer_callback => do_tracer_callback(self()),
+ tracer_match_specs => []
+ }),
+ do_get("/", Config),
+ receive
+ {trace_ts, _, call, {cowboy_req, reply, [200, _, _, _]}, _} ->
+ ok
+ after 100 ->
+ error(timeout)
+ end.
+
predicate_true(Config) ->
doc("Predicate function returns true, unconditionally enable tracing."),
Ref = config(ref, Config),