From b244a3b8e4acb6dfc854e7d2805b40cfe1b5cc57 Mon Sep 17 00:00:00 2001 From: Scott Lystig Fritchie Date: Mon, 15 Jun 2015 12:41:16 +0900 Subject: [PATCH] Reduce verbosity, try fix up convergence demo for chain len=4 --- src/machi_chain_manager1.erl | 25 ++++++++--- test/machi_chain_manager1_converge_demo.erl | 50 ++++++++++++++++++--- test/machi_chain_manager1_pulse.erl | 8 ++-- 3 files changed, 67 insertions(+), 16 deletions(-) diff --git a/src/machi_chain_manager1.erl b/src/machi_chain_manager1.erl index f5abe53..582214d 100644 --- a/src/machi_chain_manager1.erl +++ b/src/machi_chain_manager1.erl @@ -1227,7 +1227,12 @@ react_to_env_B10(Retries, P_newprop, P_latest, LatestUnanimousP, {newprop_flap_count, P_newprop_flap_count}, {flap_limit, FlapLimit}]}), _B10Hack = get(b10_hack), - io:format(user, "{FLAP: ~w flaps ~w}! ", [S#ch_mgr.name, P_newprop_flap_count]), + case proplists:get_value(private_write_verbose, S#ch_mgr.opts) of + true -> + io:format(user, "{FLAP: ~w flaps ~w}! ", [S#ch_mgr.name, P_newprop_flap_count]); + _ -> + ok + end, if %% MEANWHILE, we have learned some things about this @@ -1372,14 +1377,24 @@ react_to_env_C110(P_latest, #ch_mgr{name=MyName} = S) -> {HH,MM,SS} = time(), case inner_projection_exists(P_latest2) of false -> - io:format(user, "\n~2..0w:~2..0w:~2..0w.~3..0w ~p uses plain: ~w\n", + case proplists:get_value(private_write_verbose, S#ch_mgr.opts) of + true -> + io:format(user, "\n~2..0w:~2..0w:~2..0w.~3..0w ~p uses plain: ~w\n", [HH,MM,SS,MSec, S#ch_mgr.name, machi_projection:make_summary(P_latest2)]); + _ -> + ok + end; true -> - P_inner = inner_projection_or_self(P_latest2), - io:format(user, "\n~2..0w:~2..0w:~2..0w.~3..0w ~p uses inner: ~w\n", + case proplists:get_value(private_write_verbose, S#ch_mgr.opts) of + true -> + P_inner = inner_projection_or_self(P_latest2), + io:format(user, "\n~2..0w:~2..0w:~2..0w.~3..0w ~p uses inner: ~w\n", [HH,MM,SS,MSec, S#ch_mgr.name, - machi_projection:make_summary(P_inner)]) + machi_projection:make_summary(P_inner)]); + _ -> + ok + end end; _ -> ok diff --git a/test/machi_chain_manager1_converge_demo.erl b/test/machi_chain_manager1_converge_demo.erl index 11dedb8..f0ff2af 100644 --- a/test/machi_chain_manager1_converge_demo.erl +++ b/test/machi_chain_manager1_converge_demo.erl @@ -168,7 +168,8 @@ convergence_demo_testfun(NumFLUs) -> {Name, PPid} end || {#p_srvr{name=Name}=P, _Dir} <- PsDirs], MembersDict = machi_projection:make_members_dict(Ps), - MgrOpts = [private_write_verbose, {active_mode,false}, + %% MgrOpts = [private_write_verbose, {active_mode,false}, + MgrOpts = [{active_mode,false}, {use_partition_simulator, true}], MgrNamez = [begin @@ -187,14 +188,15 @@ convergence_demo_testfun(NumFLUs) -> Parent = self(), DoIt = fun(Iters, S_min, S_max) -> - io:format(user, "\nDoIt: top\n\n", []), + %% io:format(user, "\nDoIt: top\n\n", []), + io:format(user, "DoIt, ", []), Pids = [spawn(fun() -> random:seed(now()), [begin erlang:yield(), S_max_rand = random:uniform( S_max + 1), - io:format(user, "{t}", []), + %% io:format(user, "{t}", []), Elapsed = ?MGR:sleep_ranked_order( S_min, S_max_rand, @@ -218,16 +220,45 @@ convergence_demo_testfun(NumFLUs) -> machi_partition_simulator:reset_thresholds(10, 50), io:format(user, "\nLet loose the dogs of war!\n", []), DoIt(30, 0, 0), + AllPs = make_partition_list(All_list), + PartitionCounts = lists:zip(AllPs, lists:seq(1, length(AllPs))), + FLUFudge = if NumFLUs < 4 -> + 2; + true -> + 13 + end, [begin machi_partition_simulator:always_these_partitions(Partition), - io:format(user, "\nSET partitions = ~w.\n", [Partition]), - [DoIt(40, 10, 50) || _ <- [1,2,3,4,5,6] ], + io:format(user, "\nSET partitions = ~w (~w of ~w) at ~w\n", + [Partition, Count, length(AllPs), time()]), + [DoIt(40, 10, 50) || _ <- lists:seq(0, trunc(NumFLUs*FLUFudge)) ], {stable,true} = {stable,private_projections_are_stable(Namez, DoIt)}, io:format(user, "\nSweet, private projections are stable\n", []), +io:format(user, "Rolling sanity check ... ", []), +PrivProjs = [{Name, begin + {ok, Ps8} = ?FLU_PC:get_all_projections(FLU, + private), + Ps9 = if length(Ps8) < 5*1000 -> + Ps8; + true -> + io:format(user, "trunc a bit... ", []), + lists:nthtail(3*1000, Ps8) + end, + [P || P <- Ps9, + P#projection_v1.epoch_number /= 0] + end} || {Name, FLU} <- Namez], +try + [{FLU, true} = {FLU, ?MGR:projection_transitions_are_sane_retrospective(Psx, FLU)} || + {FLU, Psx} <- PrivProjs] +catch _Err:_What -> + io:format(user, "PrivProjs ~p\n", [PrivProjs]), + exit({line, ?LINE, _Err, _What}) +end, +io:format(user, "Yay!\n", []), timer:sleep(1250), ok - end || Partition <- make_partition_list(All_list) + end || {Partition, Count} <- PartitionCounts ], %% exit(end_experiment), @@ -300,7 +331,7 @@ make_partition_list(All_list) -> %% Concat = _X_Ys1 ++ _X_Ys2. %% Concat = _X_Ys3. Concat = _X_Ys1 ++ _X_Ys2 ++ _X_Ys3, - lists:usort([lists:sort(L) || L <- Concat]). + random_sort(lists:usort([lists:sort(L) || L <- Concat])). %% [ [{a,b},{b,d},{c,b}], %% [{a,b},{b,d},{c,b}, {a,b},{b,a},{a,c},{c,a},{a,d},{d,a}], @@ -379,5 +410,10 @@ get_latest_inner_proj_summ(FLU) -> machi_chain_manager1:inner_projection_or_self(Proj), {E, UPI, Repairing, Down}. +random_sort(L) -> + random:seed(now()), + L1 = [{random:uniform(99999), X} || X <- L], + [X || {_, X} <- lists:sort(L1)]. + -endif. % !PULSE -endif. % TEST diff --git a/test/machi_chain_manager1_pulse.erl b/test/machi_chain_manager1_pulse.erl index fcb63ed..b7785f9 100644 --- a/test/machi_chain_manager1_pulse.erl +++ b/test/machi_chain_manager1_pulse.erl @@ -110,10 +110,10 @@ all_list_extra() -> props=[{chmgr, b_chmgr}]}, "./data.pulse.b"} , {#p_srvr{name=c, address="localhost", port=7402, props=[{chmgr, c_chmgr}]}, "./data.pulse.c"} - %% , {#p_srvr{name=d, address="localhost", port=7403, - %% props=[{chmgr, d_chmgr}]}, "./data.pulse.d"} - %% , {#p_srvr{name=e, address="localhost", port=7404, - %% props=[{chmgr, e_chmgr}]}, "./data.pulse.e"} + , {#p_srvr{name=d, address="localhost", port=7403, + props=[{chmgr, d_chmgr}]}, "./data.pulse.d"} + , {#p_srvr{name=e, address="localhost", port=7404, + props=[{chmgr, e_chmgr}]}, "./data.pulse.e"} ]. all_list() ->