diff options
author | Loïc Hoguin <[email protected]> | 2017-11-03 17:52:18 +0000 |
---|---|---|
committer | Loïc Hoguin <[email protected]> | 2017-11-03 17:52:18 +0000 |
commit | da304799fee8ac93ce83d9349bb8128af3985671 (patch) | |
tree | e33da406c01c4dadc2f569d0b179b587934e41cd /test | |
parent | af58babd940f0add48c9ff6e47a4196f91417728 (diff) | |
download | cowboy-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.erl | 61 |
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), |