summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/truncate.erl127
-rw-r--r--test/unit_SUITE.erl70
2 files changed, 0 insertions, 197 deletions
diff --git a/src/truncate.erl b/src/truncate.erl
deleted file mode 100644
index 034bc62fa8..0000000000
--- a/src/truncate.erl
+++ /dev/null
@@ -1,127 +0,0 @@
-%% The contents of this file are subject to the Mozilla Public License
-%% Version 1.1 (the "License"); you may not use this file except in
-%% compliance with the License. You may obtain a copy of the License
-%% at http://www.mozilla.org/MPL/
-%%
-%% Software distributed under the License is distributed on an "AS IS"
-%% basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See
-%% the License for the specific language governing rights and
-%% limitations under the License.
-%%
-%% The Original Code is RabbitMQ.
-%%
-%% The Initial Developer of the Original Code is GoPivotal, Inc.
-%% Copyright (c) 2007-2017 Pivotal Software, Inc. All rights reserved.
-%%
-
--module(truncate).
-
--define(ELLIPSIS_LENGTH, 3).
-
--record(params, {content, struct, content_dec, struct_dec}).
-
--export([log_event/2, term/2]).
-
--ifdef(TEST).
--export([term_size/3]).
--endif.
-
-log_event({Type, GL, {Pid, Format, Args}}, Params)
- when Type =:= error orelse
- Type =:= info_msg orelse
- Type =:= warning_msg ->
- {Type, GL, {Pid, Format, [term(T, Params) || T <- Args]}};
-log_event({Type, GL, {Pid, ReportType, Report}}, Params)
- when Type =:= error_report orelse
- Type =:= info_report orelse
- Type =:= warning_report ->
- {Type, GL, {Pid, ReportType, report(Report, Params)}};
-log_event(Event, _Params) ->
- Event.
-
-report([[Thing]], Params) -> report([Thing], Params);
-report(List, Params) when is_list(List) -> [case Item of
- {K, V} -> {K, term(V, Params)};
- _ -> term(Item, Params)
- end || Item <- List];
-report(Other, Params) -> term(Other, Params).
-
-term(Thing, {Max, {Content, Struct, ContentDec, StructDec}}) ->
- case exceeds_size(Thing, Max) of
- true -> term(Thing, true, #params{content = Content,
- struct = Struct,
- content_dec = ContentDec,
- struct_dec = StructDec});
- false -> Thing
- end.
-
-term(Bin, _AllowPrintable, #params{content = N})
- when (is_binary(Bin) orelse is_bitstring(Bin))
- andalso size(Bin) > N - ?ELLIPSIS_LENGTH ->
- Suffix = without_ellipsis(N),
- <<Head:Suffix/binary, _/bitstring>> = Bin,
- <<Head/binary, <<"...">>/binary>>;
-term(L, AllowPrintable, #params{struct = N} = Params) when is_list(L) ->
- case AllowPrintable andalso io_lib:printable_list(L) of
- true -> N2 = without_ellipsis(N),
- case length(L) > N2 of
- true -> string:left(L, N2) ++ "...";
- false -> L
- end;
- false -> shrink_list(L, Params)
- end;
-term(T, _AllowPrintable, Params) when is_tuple(T) ->
- list_to_tuple(shrink_list(tuple_to_list(T), Params));
-term(T, _, _) ->
- T.
-
-without_ellipsis(N) -> erlang:max(N - ?ELLIPSIS_LENGTH, 0).
-
-shrink_list(_, #params{struct = N}) when N =< 0 ->
- ['...'];
-shrink_list([], _) ->
- [];
-shrink_list([H|T], #params{content = Content,
- struct = Struct,
- content_dec = ContentDec,
- struct_dec = StructDec} = Params) ->
- [term(H, true, Params#params{content = Content - ContentDec,
- struct = Struct - StructDec})
- | term(T, false, Params#params{struct = Struct - 1})].
-
-%%----------------------------------------------------------------------------
-
-%% We don't use erts_debug:flat_size/1 because that ignores binary
-%% sizes. This is all going to be rather approximate though, these
-%% sizes are probably not very "fair" but we are just trying to see if
-%% we reach a fairly arbitrary limit anyway though.
-exceeds_size(Thing, Max) ->
- case term_size(Thing, Max, erlang:system_info(wordsize)) of
- limit_exceeded -> true;
- _ -> false
- end.
-
-term_size(B, M, _W) when is_bitstring(B) -> lim(M, size(B));
-term_size(A, M, W) when is_atom(A) -> lim(M, 2 * W);
-term_size(N, M, W) when is_number(N) -> lim(M, 2 * W);
-term_size(T, M, W) when is_tuple(T) -> tuple_term_size(
- T, M, 1, tuple_size(T), W);
-term_size([], M, _W) ->
- M;
-term_size([H|T], M, W) ->
- case term_size(H, M, W) of
- limit_exceeded -> limit_exceeded;
- M2 -> lim(term_size(T, M2, W), 2 * W)
- end;
-term_size(X, M, W) ->
- lim(M, erts_debug:flat_size(X) * W).
-
-lim(S, T) when is_number(S) andalso S > T -> S - T;
-lim(_, _) -> limit_exceeded.
-
-tuple_term_size(_T, limit_exceeded, _I, _S, _W) ->
- limit_exceeded;
-tuple_term_size(_T, M, I, S, _W) when I > S ->
- M;
-tuple_term_size(T, M, I, S, W) ->
- tuple_term_size(T, lim(term_size(element(I, T), M, W), 2 * W), I + 1, S, W).
diff --git a/test/unit_SUITE.erl b/test/unit_SUITE.erl
index be9c8d8698..f74e18afb9 100644
--- a/test/unit_SUITE.erl
+++ b/test/unit_SUITE.erl
@@ -57,11 +57,6 @@ groups() ->
check_shutdown_ignored
]},
table_codec,
- {truncate, [parallel], [
- short_examples_exactly,
- term_limit,
- large_examples_for_size
- ]},
unfold,
{vm_memory_monitor, [parallel], [
parse_line_linux
@@ -698,71 +693,6 @@ check_shutdown(SigStop, Iterations, ChildCount, SupTimeout) ->
Res.
%% ---------------------------------------------------------------------------
-%% truncate.
-%% ---------------------------------------------------------------------------
-
-short_examples_exactly(_Config) ->
- F = fun (Term, Exp) ->
- Exp = truncate:term(Term, {1, {10, 10, 5, 5}}),
- Term = truncate:term(Term, {100000, {10, 10, 5, 5}})
- end,
- FSmall = fun (Term, Exp) ->
- Exp = truncate:term(Term, {1, {2, 2, 2, 2}}),
- Term = truncate:term(Term, {100000, {2, 2, 2, 2}})
- end,
- F([], []),
- F("h", "h"),
- F("hello world", "hello w..."),
- F([[h,e,l,l,o,' ',w,o,r,l,d]], [[h,e,l,l,o,'...']]),
- F([a|b], [a|b]),
- F(<<"hello">>, <<"hello">>),
- F([<<"hello world">>], [<<"he...">>]),
- F(<<1:1>>, <<1:1>>),
- F(<<1:81>>, <<0:56, "...">>),
- F({{{{a}}},{b},c,d,e,f,g,h,i,j,k}, {{{'...'}},{b},c,d,e,f,g,h,i,j,'...'}),
- FSmall({a,30,40,40,40,40}, {a,30,'...'}),
- FSmall([a,30,40,40,40,40], [a,30,'...']),
- P = spawn(fun() -> receive die -> ok end end),
- F([0, 0.0, <<1:1>>, F, P], [0, 0.0, <<1:1>>, F, P]),
- P ! die,
- R = make_ref(),
- F([R], [R]),
- ok.
-
-term_limit(_Config) ->
- W = erlang:system_info(wordsize),
- S = <<"abc">>,
- 1 = truncate:term_size(S, 4, W),
- limit_exceeded = truncate:term_size(S, 3, W),
- case 100 - truncate:term_size([S, S], 100, W) of
- 22 -> ok; %% 32 bit
- 38 -> ok %% 64 bit
- end,
- case 100 - truncate:term_size([S, [S]], 100, W) of
- 30 -> ok; %% ditto
- 54 -> ok
- end,
- limit_exceeded = truncate:term_size([S, S], 6, W),
- ok.
-
-large_examples_for_size(_Config) ->
- %% Real world values
- Shrink = fun(Term) -> truncate:term(Term, {1, {1000, 100, 50, 5}}) end,
- TestSize = fun(Term) ->
- true = 5000000 < size(term_to_binary(Term)),
- true = 500000 > size(term_to_binary(Shrink(Term)))
- end,
- TestSize(lists:seq(1, 5000000)),
- TestSize(recursive_list(1000, 10)),
- TestSize(recursive_list(5000, 20)),
- TestSize(gb_sets:from_list([I || I <- lists:seq(1, 1000000)])),
- TestSize(gb_trees:from_orddict([{I, I} || I <- lists:seq(1, 1000000)])),
- ok.
-
-recursive_list(S, 0) -> lists:seq(1, S);
-recursive_list(S, N) -> [recursive_list(S div N, N-1) || _ <- lists:seq(1, S)].
-
-%% ---------------------------------------------------------------------------
%% vm_memory_monitor.
%% ---------------------------------------------------------------------------