ソースを参照

ft: 代码修改

master
SisMaker 3年前
コミット
9a4ae36555
4個のファイルの変更53行の追加37行の削除
  1. +32
    -1
      include/eTpf.hrl
  2. +15
    -24
      src/eTpf.erl
  3. +2
    -8
      src/utils/tpTermCut.erl
  4. +4
    -4
      test/lg_SUITE.erl

+ 32
- 1
include/eTpf.hrl ファイルの表示

@ -1,2 +1,33 @@
%% Ignore Msg Hole Name
-define(eTpfHole, '$eTpfHole').
-define(eTpfHole, '$eTpfHole').
%%
-define(MaxDepth, 3).
-define(MaxListSize, 32).
-define(MaxMapSize, 32).
-define(MaxTupleSize, 32).
-define(MaxBinSize, 128).
-define(MaxBitSize, ?MaxBinSize * 8).
-define(MaxNestStruct, 6).
%%
-export_type([input/0, userInput/0, traceOpts/0, tracerOpts/0]).
-type pattern() :: module() | {app, atom()} | {callback, module(), atom()}.
-type scope() :: {scope, [pid() | port() | all | processes | ports |existing | existing_processes | existing_ports |new | new_processes | new_ports]}.
-type input() :: [pattern() | scope()].
-type userInput() :: pattern() | input().
-type traceOpts() :: #{
mode => trace | profile
, poolId => any()
, poolSize => pos_integer()
, send => boolean()
, running => boolean()
}.
-type tracerOpts() :: #{
port => pos_integer()
}.

+ 15
- 24
src/eTpf.erl ファイルの表示

@ -1,5 +1,7 @@
-module(eTpf).
-include("eTpf.hrl").
-export([
trace/1
, trace/2
@ -10,42 +12,31 @@
]).
-type pattern() :: module() | {app, atom()} | {callback, module(), atom()}.
-type scope() :: {scope, [pid() | port() | all | processes | ports |existing | existing_processes | existing_ports |new | new_processes | new_ports]}.
-type input() :: [pattern() | scope()].
-export_type([input/0]).
%% The trace functions input is not as strict for user convenience.
-type user_input() :: pattern() | input().
-type opts() :: #{mode => trace | profile, pool_id => any(), pool_size => pos_integer(), send => boolean(), running => boolean()}.
-spec trace(user_input()) -> ok.
-spec trace(userInput()) -> ok.
trace(Input) ->
trace(Input, tpTracerConsole).
-spec trace(user_input(), module()) -> ok.
-spec trace(userInput(), module()) -> ok.
trace(Input, TracerMod) ->
trace(Input, TracerMod, undefined, #{}).
-spec trace(user_input(), module(), any()) -> ok.
-spec trace(userInput(), module(), tracerOpts()) -> ok.
trace(Input, TracerMod, TracerOpts) ->
trace(Input, TracerMod, TracerOpts, #{}).
-spec trace(user_input(), module(), any(), opts()) -> ok.
trace(Input, TracerMod, TracerOpts, Opts) when is_list(Input) ->
do_trace(Input, TracerMod, TracerOpts, Opts);
trace(Input, TracerMod, TracerOpts, Opts) ->
trace([Input], TracerMod, TracerOpts, Opts).
-spec trace(userInput(), module(), tracerOpts(), traceOpts()) -> ok.
trace(Input, TracerMod, TracerOpts, TraceOpts) when is_list(Input) ->
do_trace(Input, TracerMod, TracerOpts, TraceOpts);
trace(Input, TracerMod, TracerOpts, TraceOpts) ->
trace([Input], TracerMod, TracerOpts, TraceOpts).
do_trace(Input0, TracerMod, TracerOpts, Opts) ->
%% @todo Remove eventually?
do_trace(Input0, TracerMod, TracerOpts, TraceOpts) ->
_ = application:ensure_all_started(eTpf),
%% Start the pool of tracer processes.
PoolID = maps:get(pool_id, Opts, default),
PoolSize = maps:get(pool_size, Opts, erlang:system_info(schedulers)),
PoolID = maps:get(poolId, TraceOpts, default),
PoolSize = maps:get(poolSize, TraceOpts, erlang:system_info(schedulers)),
true = PoolSize > 0,
{ok, PoolPid} = supervisor:start_child(eTpf_sup, #{
id => PoolID,
@ -55,11 +46,11 @@ do_trace(Input0, TracerMod, TracerOpts, Opts) ->
}),
Tracers = tpTracerPool:tracers(PoolPid),
TracersMap = maps:from_list(lists:zip(lists:seq(0, length(Tracers) - 1), Tracers)),
Mode = maps:get(mode, Opts, trace),
Mode = maps:get(mode, TraceOpts, trace),
Input1 = flatten(Input0, []),
Input2 = ensure_pattern(Input1),
Input = ensure_scope(Input2),
trace_input(Input, #{mode => Mode, tracers => TracersMap}, Opts),
trace_input(Input, #{mode => Mode, tracers => TracersMap}, TraceOpts),
ok.
flatten([], Acc) ->

+ 2
- 8
src/utils/tpTermCut.erl ファイルの表示

@ -5,19 +5,13 @@
-export([cut/1]).
-export([cut/2]).
-define(MaxDepth, 5).
-define(MaxListSize, 32).
-define(MaxMapSize, 32).
-define(MaxTupleSize, 32).
-define(MaxBinSize, 128).
-define(MaxBitSize, ?MaxBinSize * 8).
-define(MaxNestStruct, 5).
cut(Term) ->
cut(Term, 1).
cut(_, Depth) when Depth > ?MaxDepth ->
'$truncated';
'$truncated11';
cut(Bits, _) when is_bitstring(Bits), bit_size(Bits) > ?MaxBitSize ->
<<CutBits:?MaxBinSize/binary, _/bits>> = Bits,
<<CutBits/binary, "$truncated">>;

+ 4
- 4
test/lg_SUITE.erl ファイルの表示

@ -204,7 +204,7 @@ send_true(Config) ->
socket_tracer(_) ->
doc("Send events to a socket."),
Port = 61234,
eTpf:trace(lists, tpTracerSocket, Port, #{pool_size => 1}),
eTpf:trace(lists, tpTracerSocket, Port, #{poolSize => 1}),
{ok, Socket} = gen_tcp:connect("localhost", Port,
[binary, {packet, 2}, {active, true}]),
lists:seq(1, 10),
@ -214,7 +214,7 @@ socket_tracer(_) ->
socket_tracer_client(Config) ->
doc("Send events to a socket client."),
Port = 61234,
eTpf:trace(lists, tpTracerSocket, Port, #{pool_size => 1}),
eTpf:trace(lists, tpTracerSocket, Port, #{poolSize => 1}),
BaseFilename = config(priv_dir, Config) ++ "/socket_tracer_client.lz4",
{ok, Pid} = tpSocketCli:start_link(Port, BaseFilename),
timer:sleep(1000),
@ -229,7 +229,7 @@ socket_tracer_client(Config) ->
socket_tracer_many(_) ->
doc("Send events to many sockets."),
Port = 61234,
eTpf:trace(lists, tpTracerSocket, Port, #{pool_size => 5}),
eTpf:trace(lists, tpTracerSocket, Port, #{poolSize => 5}),
{ok, _} = gen_tcp:connect("localhost", Port, []),
{ok, _} = gen_tcp:connect("localhost", Port + 1, []),
{ok, _} = gen_tcp:connect("localhost", Port + 2, []),
@ -241,7 +241,7 @@ socket_tracer_many(_) ->
socket_tracer_reconnect(_) ->
doc("Confirm we can reconnect to the tracer."),
Port = 61234,
eTpf:trace(lists, tpTracerSocket, Port, #{pool_size => 1}),
eTpf:trace(lists, tpTracerSocket, Port, #{poolSize => 1}),
{ok, Socket0} = gen_tcp:connect("localhost", Port,
[binary, {packet, 2}, {active, true}]),
ok = gen_tcp:close(Socket0),

読み込み中…
キャンセル
保存