From dc6a1c867d897140ec7e8ae39f167b759fe68de5 Mon Sep 17 00:00:00 2001 From: Jake Taylor <jake@elixxir.io> Date: Tue, 6 Sep 2022 15:24:19 -0500 Subject: [PATCH] fix a long series of ud bugs --- go.mod | 3 ++- go.sum | 2 ++ ud/manager.go | 4 +--- ud/store/facts.go | 2 +- ud/store/facts_test.go | 40 ++++++++++++++++++++-------------------- ud/store/store.go | 16 +++++++--------- ud/store/store_test.go | 16 ++++++++-------- 7 files changed, 41 insertions(+), 42 deletions(-) diff --git a/go.mod b/go.mod index 7b732085c..fa815c2b5 100644 --- a/go.mod +++ b/go.mod @@ -6,8 +6,10 @@ require ( github.com/cloudflare/circl v1.2.0 github.com/golang-collections/collections v0.0.0-20130729185459-604e922904d3 github.com/golang/protobuf v1.5.2 + github.com/hack-pad/go-indexeddb v0.2.0 github.com/nfnt/resize v0.0.0-20180221191011-83c6a9932646 github.com/pkg/errors v0.9.1 + github.com/pkg/profile v1.6.0 github.com/spf13/cobra v1.5.0 github.com/spf13/jwalterweatherman v1.1.0 github.com/spf13/viper v1.12.0 @@ -39,7 +41,6 @@ require ( github.com/mitchellh/mapstructure v1.5.0 // indirect github.com/pelletier/go-toml v1.9.5 // indirect github.com/pelletier/go-toml/v2 v2.0.2 // indirect - github.com/pkg/profile v1.6.0 // indirect github.com/skip2/go-qrcode v0.0.0-20200617195104-da1b6568686e // indirect github.com/spf13/afero v1.9.2 // indirect github.com/spf13/cast v1.5.0 // indirect diff --git a/go.sum b/go.sum index f7e6a7f3b..d18f43d3f 100644 --- a/go.sum +++ b/go.sum @@ -226,6 +226,8 @@ github.com/googleapis/gax-go/v2 v2.4.0/go.mod h1:XOTVJ59hdnfJLIP/dh8n5CGryZR2LxK github.com/googleapis/google-cloud-go-testing v0.0.0-20200911160855-bcd43fbb19e8/go.mod h1:dvDLG8qkwmyD9a/MJJN3XJcT3xFxOKAvTZGvuZmac9g= github.com/grpc-ecosystem/go-grpc-prometheus v1.2.0/go.mod h1:8NvIoxWQoOIhqOTXgfV/d3M/q6VIi02HzZEHgUlZvzk= github.com/grpc-ecosystem/grpc-gateway v1.16.0/go.mod h1:BDjrQk3hbvj6Nolgz8mAMFbcEtjT1g+wF4CSlocrBnw= +github.com/hack-pad/go-indexeddb v0.2.0 h1:QHDM6gLrtCJvHdHUK8UdibJu4xWQlIDs4+l8L65AUdA= +github.com/hack-pad/go-indexeddb v0.2.0/go.mod h1:NH8CaojufPNcKYDhy5JkjfyBXE/72oJPeiywlabN/lM= github.com/hashicorp/consul/api v1.12.0/go.mod h1:6pVBMo0ebnYdt2S3H87XhekM/HHrUoTD2XXb/VrZVy0= github.com/hashicorp/consul/sdk v0.8.0/go.mod h1:GBvyrGALthsZObzUGsfgHZQDXjg4lOjagTIwIR1vPms= github.com/hashicorp/errwrap v1.0.0/go.mod h1:YH+1FKiLXxHSkmPseP+kNlulaMuP3n2brvKWEqk/Jc4= diff --git a/ud/manager.go b/ud/manager.go index 5ab902fbb..89edc765f 100644 --- a/ud/manager.go +++ b/ud/manager.go @@ -114,9 +114,7 @@ func NewOrLoad(user udE2e, comms Comms, follower udNetworkStatus, return nil, err } - err = m.store.StoreUsername(usernameFact) - - return m, nil + return m, m.store.StoreUsername(usernameFact) } // NewManagerFromBackup builds a new user discover manager from a backup. diff --git a/ud/store/facts.go b/ud/store/facts.go index 37ad17b4f..4721b864e 100644 --- a/ud/store/facts.go +++ b/ud/store/facts.go @@ -55,7 +55,7 @@ func (s *Store) StoreUsername(f fact.Fact) error { s.confirmedFacts[f] = struct{}{} - return s.saveUnconfirmedFacts() + return s.saveConfirmedFacts() } // GetUsername retrieves the username from the Store object. diff --git a/ud/store/facts_test.go b/ud/store/facts_test.go index 9e3143139..3155d383b 100644 --- a/ud/store/facts_test.go +++ b/ud/store/facts_test.go @@ -20,9 +20,9 @@ func TestNewStore(t *testing.T) { kv := versioned.NewKV(ekv.MakeMemstore()) - _, err := NewStore(kv) + _, err := newStore(kv) if err != nil { - t.Errorf("NewStore() produced an error: %v", err) + t.Errorf("newStore() produced an error: %v", err) } } @@ -32,9 +32,9 @@ func TestStore_RestoreFromBackUp(t *testing.T) { kv := versioned.NewKV(ekv.MakeMemstore()) - s, err := NewStore(kv) + s, err := newStore(kv) if err != nil { - t.Errorf("NewStore() produced an error: %v", err) + t.Errorf("newStore() produced an error: %v", err) } expected := fact.Fact{ @@ -61,9 +61,9 @@ func TestStore_RestoreFromBackUp_StatefulStore(t *testing.T) { kv := versioned.NewKV(ekv.MakeMemstore()) - s, err := NewStore(kv) + s, err := newStore(kv) if err != nil { - t.Errorf("NewStore() produced an error: %v", err) + t.Errorf("newStore() produced an error: %v", err) } confirmId := "confirm" @@ -90,9 +90,9 @@ func TestStore_RestoreFromBackUp_StatefulStore(t *testing.T) { func TestStore_ConfirmFact(t *testing.T) { kv := versioned.NewKV(ekv.MakeMemstore()) - expectedStore, err := NewStore(kv) + expectedStore, err := newStore(kv) if err != nil { - t.Errorf("NewStore() produced an error: %v", err) + t.Errorf("newStore() produced an error: %v", err) } confirmId := "confirm" @@ -128,9 +128,9 @@ func TestStore_ConfirmFact(t *testing.T) { func TestStore_StoreUnconfirmedFact(t *testing.T) { kv := versioned.NewKV(ekv.MakeMemstore()) - expectedStore, err := NewStore(kv) + expectedStore, err := newStore(kv) if err != nil { - t.Errorf("NewStore() produced an error: %v", err) + t.Errorf("newStore() produced an error: %v", err) } confirmId := "confirm" @@ -156,9 +156,9 @@ func TestStore_StoreUnconfirmedFact(t *testing.T) { func TestStore_DeleteFact(t *testing.T) { kv := versioned.NewKV(ekv.MakeMemstore()) - expectedStore, err := NewStore(kv) + expectedStore, err := newStore(kv) if err != nil { - t.Errorf("NewStore() produced an error: %v", err) + t.Errorf("newStore() produced an error: %v", err) } expected := fact.Fact{ @@ -188,9 +188,9 @@ func TestStore_DeleteFact(t *testing.T) { func TestStore_BackUpMissingFacts(t *testing.T) { kv := versioned.NewKV(ekv.MakeMemstore()) - expectedStore, err := NewStore(kv) + expectedStore, err := newStore(kv) if err != nil { - t.Errorf("NewStore() produced an error: %v", err) + t.Errorf("newStore() produced an error: %v", err) } email := fact.Fact{ @@ -228,9 +228,9 @@ func TestStore_BackUpMissingFacts(t *testing.T) { func TestStore_BackUpMissingFacts_DuplicateFactType(t *testing.T) { kv := versioned.NewKV(ekv.MakeMemstore()) - expectedStore, err := NewStore(kv) + expectedStore, err := newStore(kv) if err != nil { - t.Errorf("NewStore() produced an error: %v", err) + t.Errorf("newStore() produced an error: %v", err) } email := fact.Fact{ @@ -270,9 +270,9 @@ func TestStore_BackUpMissingFacts_DuplicateFactType(t *testing.T) { func TestStore_GetFacts(t *testing.T) { kv := versioned.NewKV(ekv.MakeMemstore()) - testStore, err := NewStore(kv) + testStore, err := newStore(kv) if err != nil { - t.Errorf("NewStore() produced an error: %v", err) + t.Errorf("newStore() produced an error: %v", err) } emailFact := fact.Fact{ @@ -324,9 +324,9 @@ func TestStore_GetFacts(t *testing.T) { func TestStore_GetFactStrings(t *testing.T) { kv := versioned.NewKV(ekv.MakeMemstore()) - testStore, err := NewStore(kv) + testStore, err := newStore(kv) if err != nil { - t.Errorf("NewStore() produced an error: %v", err) + t.Errorf("newStore() produced an error: %v", err) } emailFact := fact.Fact{ diff --git a/ud/store/store.go b/ud/store/store.go index f2083eb83..ef8f9debd 100644 --- a/ud/store/store.go +++ b/ud/store/store.go @@ -48,8 +48,8 @@ type Store struct { mux sync.RWMutex } -// NewStore creates a new, empty Store object. -func NewStore(kv *versioned.KV) (*Store, error) { +// newStore creates a new, empty Store object. +func newStore(kv *versioned.KV) (*Store, error) { kv = kv.Prefix(prefix) s := &Store{ @@ -130,14 +130,11 @@ func (s *Store) saveUnconfirmedFacts() error { func NewOrLoadStore(kv *versioned.KV) (*Store, error) { s := &Store{ - confirmedFacts: make(map[fact.Fact]struct{}, 0), - unconfirmedFacts: make(map[string]fact.Fact, 0), - kv: kv.Prefix(prefix), + kv: kv.Prefix(prefix), } - if err := s.load(); err != nil { if !s.kv.Exists(err) { - return s, s.save() + return newStore(kv) } else { return nil, err } @@ -250,10 +247,11 @@ func (s *Store) unmarshalConfirmedFacts(data []byte) (map[fact.Fact]struct{}, er // Deserialize the list into a map confirmedFacts := make(map[fact.Fact]struct{}, 0) - for _, fStr := range fStrings { + for i := range fStrings { + fStr := fStrings[i] f, err := fact.UnstringifyFact(fStr) if err != nil { - return nil, errors.WithMessage(err, malformedFactErr) + return confirmedFacts, errors.WithMessage(err, malformedFactErr) } confirmedFacts[f] = struct{}{} diff --git a/ud/store/store_test.go b/ud/store/store_test.go index 33485b43e..a319d8128 100644 --- a/ud/store/store_test.go +++ b/ud/store/store_test.go @@ -20,9 +20,9 @@ import ( func TestNewOrLoadStore_LoadStore(t *testing.T) { kv := versioned.NewKV(ekv.MakeMemstore()) - expectedStore, err := NewStore(kv) + expectedStore, err := newStore(kv) if err != nil { - t.Errorf("NewStore() produced an error: %v", err) + t.Errorf("newStore() produced an error: %v", err) } receivedStore, err := NewOrLoadStore(kv) @@ -66,9 +66,9 @@ func TestNewOrLoadStore_NewStore(t *testing.T) { func TestStore_MarshalUnmarshal_ConfirmedFacts(t *testing.T) { kv := versioned.NewKV(ekv.MakeMemstore()) - expectedStore, err := NewStore(kv) + expectedStore, err := newStore(kv) if err != nil { - t.Errorf("NewStore() produced an error: %v", err) + t.Errorf("newStore() produced an error: %v", err) } data, err := expectedStore.kv.Get(confirmedFactKey, version) @@ -82,7 +82,7 @@ func TestStore_MarshalUnmarshal_ConfirmedFacts(t *testing.T) { } if !bytes.Equal(expectedData, data.Data) { - t.Errorf("NewStore() returned incorrect Store."+ + t.Errorf("newStore() returned incorrect Store."+ "\nexpected: %+v\nreceived: %+v", expectedData, data.Data) } @@ -102,9 +102,9 @@ func TestStore_MarshalUnmarshal_ConfirmedFacts(t *testing.T) { func TestStore_MarshalUnmarshal_UnconfirmedFacts(t *testing.T) { kv := versioned.NewKV(ekv.MakeMemstore()) - expectedStore, err := NewStore(kv) + expectedStore, err := newStore(kv) if err != nil { - t.Errorf("NewStore() produced an error: %v", err) + t.Errorf("newStore() produced an error: %v", err) } data, err := expectedStore.kv.Get(unconfirmedFactKey, version) @@ -118,7 +118,7 @@ func TestStore_MarshalUnmarshal_UnconfirmedFacts(t *testing.T) { } if !bytes.Equal(expectedData, data.Data) { - t.Errorf("NewStore() returned incorrect Store."+ + t.Errorf("newStore() returned incorrect Store."+ "\nexpected: %+v\nreceived: %+v", expectedData, data.Data) } -- GitLab