From af30472dc962875618ea75c504c44746d52acc03 Mon Sep 17 00:00:00 2001 From: Andrew Thompson Date: Sat, 22 Sep 2018 12:49:37 -0700 Subject: [PATCH] Add some better status output --- src/hbbft.erl | 10 ++++++++++ src/hbbft_acs.erl | 3 ++- src/hbbft_rbc.erl | 4 ++-- 3 files changed, 14 insertions(+), 3 deletions(-) diff --git a/src/hbbft.erl b/src/hbbft.erl index 1e3d7d9..0077838 100644 --- a/src/hbbft.erl +++ b/src/hbbft.erl @@ -81,6 +81,8 @@ status(HBBFTData) -> sent_txns => HBBFTData#hbbft_data.sent_txns, sent_sig => HBBFTData#hbbft_data.sent_sig, acs_results => length(HBBFTData#hbbft_data.acs_results), + decryption_shares => group_by(maps:keys(HBBFTData#hbbft_data.dec_shares)), + decrypted => maps:size(HBBFTData#hbbft_data.decrypted), j => HBBFTData#hbbft_data.j }. @@ -443,3 +445,11 @@ serialize_hbbft_data(#hbbft_data{batch_size=BatchSize, -spec is_serialized(hbbft_data() | hbbft_serialized_data()) -> boolean(). is_serialized(Data) when is_record(Data, hbbft_serialized_data) -> true; is_serialized(Data) when is_record(Data, hbbft_data) -> false. + +group_by(Tuples) -> + group_by(Tuples, dict:new()). + +group_by([], D) -> + lists:keysort(1, [{K, lists:sort(V)} || {K, V} <- dict:to_list(D)]); +group_by([{K, V}|T], D) -> + group_by(T, dict:append(K, V, D)). diff --git a/src/hbbft_acs.erl b/src/hbbft_acs.erl index b82d761..ba7afc2 100644 --- a/src/hbbft_acs.erl +++ b/src/hbbft_acs.erl @@ -58,7 +58,8 @@ -spec status(acs_data()) -> map(). status(ACSData) -> - #{rbc => maps:map(fun(_K, #rbc_state{rbc_data=RBCData, result=R}) -> #{rbc => hbbft_rbc:status(RBCData), result => is_binary(R)} end, ACSData#acs_data.rbc), + #{acs_done => ACSData#acs_data.done, + rbc => maps:map(fun(_K, #rbc_state{rbc_data=RBCData, result=R}) -> #{rbc => hbbft_rbc:status(RBCData), result => is_binary(R)} end, ACSData#acs_data.rbc), bba => maps:map(fun(_K, #bba_state{bba_data=BBAData, result=R, input=I}) -> #{bba => hbbft_bba:status(BBAData), result => R, input => I} end, ACSData#acs_data.bba)}. -spec init(tpke_privkey:privkey(), pos_integer(), non_neg_integer(), non_neg_integer()) -> acs_data(). diff --git a/src/hbbft_rbc.erl b/src/hbbft_rbc.erl index 5494391..444648b 100644 --- a/src/hbbft_rbc.erl +++ b/src/hbbft_rbc.erl @@ -39,8 +39,8 @@ -spec status(rbc_data()) -> map(). status(RBCData) -> #{state => RBCData#rbc_data.state, - num_echoes => length(maps:values(RBCData#rbc_data.num_echoes)), - num_readies => length(maps:values(RBCData#rbc_data.num_readies)), + echoes => maps:values(RBCData#rbc_data.num_echoes), + readies => maps:values(RBCData#rbc_data.num_readies), ready_sent => RBCData#rbc_data.ready_sent, leader => RBCData#rbc_data.leader }.