From 2a893f33198c2defb298d7e0b4d778cfcd2b30e4 Mon Sep 17 00:00:00 2001 From: josh <josh@elixxir.io> Date: Tue, 16 Mar 2021 12:21:47 -0700 Subject: [PATCH] Respond to MR comments: Add functionality to dataStructures, fix tests --- network/dataStructures/round.go | 13 +++++++++++++ network/dataStructures/roundData.go | 17 +++++++++++++++-- network/dataStructures/roundData_test.go | 4 ++++ network/dataStructures/roundEvents.go | 7 +++++-- network/instance_test.go | 1 + 5 files changed, 38 insertions(+), 4 deletions(-) diff --git a/network/dataStructures/round.go b/network/dataStructures/round.go index b1f6267a..af07ac09 100644 --- a/network/dataStructures/round.go +++ b/network/dataStructures/round.go @@ -33,6 +33,19 @@ func NewRound(ri *pb.RoundInfo, pubkey *rsa.PublicKey) *Round { } } +// Constructor of an already verified round object +// Intended for use by round creator. +func NewVerifiedRound(ri *pb.RoundInfo, pubkey *rsa.PublicKey) *Round { + jww.WARN.Print("NewVerifiedRound is intended for use by round creator") + // Set validation to done on creation + validationDefault := uint32(1) + return &Round{ + info: ri, + needsValidation: &validationDefault, + pubkey: pubkey, + } +} + // Get returns the round info object. If we have not // validated the signature before, we then verify. // Later calls will not need validation diff --git a/network/dataStructures/roundData.go b/network/dataStructures/roundData.go index 4e1bd013..d6a8dc86 100644 --- a/network/dataStructures/roundData.go +++ b/network/dataStructures/roundData.go @@ -40,7 +40,7 @@ func (d *Data) UpsertRound(r *Round) error { return d.rounds.UpsertById(int(r.info.ID), r) } -// Get a given round id from the ring buffer +// Get a given round id from the ring buffer as a roundInfo func (d *Data) GetRound(id int) (*mixmessages.RoundInfo, error) { val, err := d.rounds.GetById(id) if err != nil { @@ -48,7 +48,20 @@ func (d *Data) GetRound(id int) (*mixmessages.RoundInfo, error) { } var rtn *mixmessages.RoundInfo if val != nil { - rtn = val.(*Round).info + rtn = val.(*Round).Get() + } + return rtn, nil +} + +// Get a given round id from the ring buffer as a round object +func (d *Data) GetWrappedRound(id int) (*Round, error) { + val, err := d.rounds.GetById(id) + if err != nil { + return nil, errors.Wrapf(err, "Failed to get update with id %d", id) + } + var rtn *Round + if val != nil { + rtn = val.(*Round) } return rtn, nil } diff --git a/network/dataStructures/roundData_test.go b/network/dataStructures/roundData_test.go index ba414a17..94808039 100644 --- a/network/dataStructures/roundData_test.go +++ b/network/dataStructures/roundData_test.go @@ -42,6 +42,7 @@ func TestData_GetRound(t *testing.T) { ID: 0, UpdateID: 0, } + testutils.SignRoundInfo(ri, t) pubKey, err := testutils.LoadPublicKeyTesting(t) if err != nil { @@ -65,6 +66,7 @@ func TestData_ComparisonFunc(t *testing.T) { ID: 2, UpdateID: 3, } + testutils.SignRoundInfo(roundInfoOne, t) pubKey, err := testutils.LoadPublicKeyTesting(t) if err != nil { @@ -79,6 +81,8 @@ func TestData_ComparisonFunc(t *testing.T) { ID: 2, UpdateID: 4, } + testutils.SignRoundInfo(roundInfoTwo, t) + roundTwo := NewRound(roundInfoTwo, pubKey) _ = d.UpsertRound(roundTwo) r, err := d.GetRound(2) diff --git a/network/dataStructures/roundEvents.go b/network/dataStructures/roundEvents.go index 7de8e21b..07b30b7e 100644 --- a/network/dataStructures/roundEvents.go +++ b/network/dataStructures/roundEvents.go @@ -135,8 +135,11 @@ func (r *RoundEvents) TriggerRoundEvent(rnd *Round) { return } + // Retrieve and validate the round info + roundInfo := rnd.Get() + + // Send round info to every event in the list for _, event := range callbacks[rnd.info.State] { - // Retrieve and validate the round info - event.signal <- rnd.Get() + event.signal <- roundInfo } } diff --git a/network/instance_test.go b/network/instance_test.go index 48c3d9f8..8840bfcd 100644 --- a/network/instance_test.go +++ b/network/instance_test.go @@ -155,6 +155,7 @@ func TestInstance_GetRound(t *testing.T) { // Construct a mock round object ri := &mixmessages.RoundInfo{ID: uint64(1)} + testutils.SignRoundInfo(ri, t) pubKey, err := testutils.LoadPublicKeyTesting(t) if err != nil { -- GitLab