From da304799fee8ac93ce83d9349bb8128af3985671 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Lo=C3=AFc=20Hoguin?= Date: Fri, 3 Nov 2017 17:52:18 +0000 Subject: Add a terminate event to the tracer and more tests --- test/tracer_SUITE.erl | 61 +++++++++++++++++++++++++++++++++++++++++++++++---- 1 file changed, 57 insertions(+), 4 deletions(-) (limited to 'test') 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), -- cgit v1.2.3