Sign Up
Log In
Log In
or
Sign Up
Places
All Projects
Status Monitor
Collapse sidebar
home:Ledest:erlang:24
erlang
2352-kernel-Mend-Global-s-test-suite-s-helper-m...
Overview
Repositories
Revisions
Requests
Users
Attributes
Meta
File 2352-kernel-Mend-Global-s-test-suite-s-helper-module.patch of Package erlang
From cd76a8592272e88c86f017141eed01872c9605be Mon Sep 17 00:00:00 2001 From: Hans Bolinder <hasse@erlang.org> Date: Tue, 8 Jun 2021 12:29:55 +0200 Subject: [PATCH 2/2] kernel: Mend Global's test suite's helper module --- .../test/global_SUITE_data/global_trace.erl | 80 ++++++++----------- 1 file changed, 32 insertions(+), 48 deletions(-) diff --git a/lib/kernel/test/global_SUITE_data/global_trace.erl b/lib/kernel/test/global_SUITE_data/global_trace.erl index b4af4ed76e..e69bac2dd5 100644 --- a/lib/kernel/test/global_SUITE_data/global_trace.erl +++ b/lib/kernel/test/global_SUITE_data/global_trace.erl @@ -73,42 +73,17 @@ logdir() -> %%% For one thing, the trace from all nodes are written onto the file %%% as one single term. One term per node would be better. &c. --compile(export_all). +-compile([export_all, nowarn_export_all]). -record(state, {connect_all, known = [], synced = [], resolvers = [], syncers = [], node_name = node(), - the_locker, the_deleter, the_registrar, trace = [], + the_locker, the_registrar, trace = [], global_lock_down }). %% Compatible with different versions. state(#state{}=S) -> - S; -state({state, ConnectAll, Known, Synced, LockersResolvers, Syncers, - NodeName, TheLocker, TheDeleter}) -> - %% r10b: Lockers, r10b_patched, r11b: Resolvers - #state{connect_all = ConnectAll, known = Known, synced = Synced, - resolvers = LockersResolvers, syncers = Syncers, - node_name = NodeName, the_locker = TheLocker, - the_deleter = TheDeleter, the_registrar = undefined, trace = []}; -state({state, ConnectAll, Known, Synced, Resolvers, Syncers, - NodeName, TheLocker, TheDeleter, Trace}) -> - %% r11b, some time before r11b-3 - #state{connect_all = ConnectAll, known = Known, synced = Synced, - resolvers = Resolvers, syncers = Syncers, - node_name = NodeName, the_locker = TheLocker, - the_deleter = TheDeleter, the_registrar = undefined, - trace = Trace}; -state({state, ConnectAll, Known, Synced, Resolvers, Syncers, - NodeName, TheLocker, TheDeleter, TheRegistrar, Trace}) -> - %% r11b, some time after r11b-3 - #state{connect_all = ConnectAll, known = Known, synced = Synced, - resolvers = Resolvers, syncers = Syncers, - node_name = NodeName, the_locker = TheLocker, - the_deleter = TheDeleter, the_registrar = TheRegistrar, - trace = Trace, global_lock_down = false}; -state(Else) -> - Else. + S. %%% Trace tuples look like {Node, Now, Message, Nodes, Extra}. %%% Nodes is the list as returned by nodes(). @@ -123,12 +98,11 @@ state(Else) -> %%% {ops,Ops}] %%% NewKnown = Known ++ AddedNodes %%% AddedNodes = NewNodes -- Known -%%% NewNodes är här den man förhandlat med plus de noder den känner till. +%%% NewNodes is the other node and the nodes known to that node. %%% {added, AddedNodes}, Extra = [{ops,Ops}] %%% NewKnown = Known ++ AddedNodes -%%% Den (passiva) noden får Nodes som är NewNodes -%%% hos den förhandlande. Sedan: AddedNodes = (Nodes -- Known) -- [node()]. -%%% Det är som hos förhandlaren. +%%% The (passive) node gets Nodes which is NewNodes on the other node. +%%% Then: AddedNodes = (Nodes -- Known) -- [node()]. %%% {nodes_changed, {New,Old}} %%% Every now and then the list [node() | nodes()] is checked for updates. %%% New are the nodes that global does not know of (yet). @@ -187,7 +161,7 @@ t(File) -> %% {show_state, From, To} %% From = To = integer() | {integer(), integer()} %% Examples: {7, 8} (show states between seconds 7.0 and 8.0); -%% {{1,431234},{2,432}} (between 1.431234 and 2.000432) +%% {{1,431234},{2,432}} (between 1.431234 and 2.432) %% The state of a node includes locks, names, nodes, known, ... %% Default is {{0,0}, {0,0}}, that is, do not show state. %% show_state @@ -226,7 +200,7 @@ t(File, Options) -> {high_level_trace, ET, D3} -> {D3, ET}; _ -> - {D1, now()} + {D1, erlang:timestamp()} end, D = adjust_nodes(D2), {NodeNodeTrace, _NodeTrace, Trace, Base} = get_trace(D, End), @@ -320,13 +294,12 @@ adjust_times(Ts, Base) -> [setelement(2, adj_tag(T, Base), adjust_time(element(2, T), Base)) || T <- Ts]. -adj_tag({Node, Time, {M, Node2}, Nodes, Extra}=T, Base) -> +adj_tag({Node, Time, {M, Node2}, Nodes, Extra}=T, _Base) -> if M =:= new_resolver; M =:= kill_resolver; M =:= exit_resolver -> - {Node, Time, {M, Node2}, Nodes, - [adjust_time(hd(Extra), Base) | tl(Extra)]}; + {Node, Time, {M, Node2}, Nodes, Extra}; true -> T end. @@ -356,10 +329,16 @@ adjust_node(Node) -> z_2; "z_" ++ _ -> z; - "b_" ++ _ -> - b; "c_external_nodes" ++ _ -> c_external_nodes; + "a_" ++ _ -> + a; + "b_" ++ _ -> + b; + "c_" ++ _ -> + c; + "d_" ++ _ -> + d; _ -> Node end. @@ -381,7 +360,7 @@ eval([T | Ts], Time0, S0, Fun) -> end, case time_diff(Time1, Time0) > 0 of true -> - display_nodes("PAUS", Time1, S0#w.nodes, T); + display_nodes("PAUSE", Time1, S0#w.nodes, T); false -> ok end, @@ -800,9 +779,9 @@ ms(syncers) -> no_info(D) -> [{Node,no_info} || {Node, no_info} <- D]. -resolvers(D, Base, End) -> +resolvers(D, _Base, End) -> [{Node, - [{N,adjust_time(T, Base),P} || {N, T, P} <- Rs, T < End]} || + [{N,T,P} || {N, T, P} <- Rs, T < End]} || {Node, {info,State}} <- D, is_record(State, state), [] =/= (Rs = (state(State))#state.resolvers)]. @@ -834,16 +813,21 @@ negotiations(Trace) -> {Node,T,Added,[{new_nodes,[Other|_]=NewNodes},_Abcast,_Ops]} <- Ns], Act ++ Pass. -show_spurious(NodeTrace, Spurious) -> - Pairs = [{Node,ActionNode} || {{Node,ActionNode}, _Time} <- Spurious], - S = sofs:restriction(sofs:relation(NodeTrace), sofs:set(Pairs)), +show_spurious(NodeTraceL, SpuriousL) -> + TraceDomL = [{Node,ActionNode} || + {{Node,ActionNode}, _Ts} <- NodeTraceL], + SpuriousDomL = [{Node,ActionNode} || + {{Node,ActionNode}, _Times} <- SpuriousL], + S = sofs:restriction(sofs:relation(NodeTraceL), sofs:set(SpuriousDomL)), + %% Some spurious lost: + Spurious = sofs:restriction(sofs:relation(SpuriousL), sofs:set(TraceDomL)), [foo || {{{Node,ANode},Times}, - {{Node,ANode},Ts}} <- lists:zip(family(Spurious), + {{Node,ANode},Ts}} <- lists:zip(family(sofs:to_external(Spurious)), sofs:to_external(S)), - show_spurious(Node, ANode, Times, lists:keysort(2, Ts))]. + show_spurious2(Node, ANode, Times, lists:keysort(2, Ts))]. -show_spurious(Node, ActionNode, Times, Ts) -> +show_spurious2(Node, ActionNode, Times, Ts) -> io:format("** Actions for ~p on node ~p **~n", [ActionNode, Node]), lists:map(fun(T) -> spurious(Node, T, Times) end, Ts), io:format("-- End of actions for ~p on node ~p --~n", [ActionNode, Node]), -- 2.26.2
Locations
Projects
Search
Status Monitor
Help
OpenBuildService.org
Documentation
API Documentation
Code of Conduct
Contact
Support
@OBShq
Terms
openSUSE Build Service is sponsored by
The Open Build Service is an
openSUSE project
.
Sign Up
Log In
Places
Places
All Projects
Status Monitor