Skip to content
Snippets Groups Projects
Commit 32e41778 authored by benjamin's avatar benjamin
Browse files

fixed interfaces and tests, improved code in prune

parent b7040c47
No related branches found
No related tags found
2 merge requests!510Release,!428built the system to sequentually pick up old ephemerals, breaks interfaces and tests
......@@ -601,6 +601,8 @@ func (m *mockBroadcastClient) SendWithAssembler(*id.ID,
func (m *mockBroadcastClient) IsHealthy() bool { return true }
func (m *mockBroadcastClient) AddIdentity(*id.ID, time.Time, bool) {}
func (m *mockBroadcastClient) AddIdentityWithHistory(id *id.ID, validUntil, beginning time.Time, persistent bool) {
}
func (m *mockBroadcastClient) AddService(*id.ID, message.Service, message.Processor) {}
func (m *mockBroadcastClient) DeleteClientService(*id.ID) {}
func (m *mockBroadcastClient) RemoveIdentity(*id.ID) {}
......
......@@ -67,6 +67,7 @@ type Client interface {
cmixParams cmix.CMIXParams) (rounds.Round, ephemeral.Id, error)
IsHealthy() bool
AddIdentity(id *id.ID, validUntil time.Time, persistent bool)
AddIdentityWithHistory(id *id.ID, validUntil, beginning time.Time, persistent bool)
AddService(clientID *id.ID, newService message.Service,
response message.Processor)
DeleteClientService(clientID *id.ID)
......
......@@ -31,6 +31,8 @@ func (mc *mockClient) IsHealthy() bool {
return true
}
func (mc *mockClient) AddIdentity(id *id.ID, validUntil time.Time, persistent bool) {}
func (mc *mockClient) AddIdentityWithHistory(id *id.ID, validUntil, beginning time.Time, persistent bool) {
}
func (mc *mockClient) AddService(clientID *id.ID, newService message.Service,
response message.Processor) {
}
......
......@@ -210,6 +210,21 @@ func (s *Store) AddIdentity(identity Identity) error {
}
func (s *Store) addIdentity(identity Identity) error {
err := s.addIdentityNoSave(identity)
if err != nil {
return err
}
if !identity.Ephemeral {
if err = s.save(); err != nil {
jww.FATAL.Panicf("Failed to save reception store after identity "+
"addition: %+v", err)
}
}
return nil
}
func (s *Store) addIdentityNoSave(identity Identity) error {
idH := makeIdHash(identity.EphId, identity.Source)
// Do not make duplicates of IDs
......@@ -233,13 +248,6 @@ func (s *Store) addIdentity(identity Identity) error {
s.active = append(s.active, reg)
s.present[idH] = struct{}{}
if !identity.Ephemeral {
if err = s.save(); err != nil {
jww.FATAL.Panicf("Failed to save reception store after identity "+
"addition: %+v", err)
}
}
return nil
}
......@@ -318,18 +326,17 @@ func (s *Store) SetToExpire(addressSize uint8) {
}
func (s *Store) prune(now time.Time) {
lengthBefore := len(s.active)
var pruned []int64
pruned := make([]int64, 0, len(s.active))
added := make([]int64, 0, len(s.active))
// Prune the list
toAdd := make([]Identity, 0, len(s.active))
for i := 0; i < len(s.active); i++ {
inQuestion := s.active[i]
if now.After(inQuestion.End) && inQuestion.ExtraChecks == 0 {
if inQuestion.ProcessNext != nil {
if err := s.AddIdentity(*inQuestion.ProcessNext); err != nil {
jww.ERROR.Printf("Failed to add identity to process next "+
"for %d(%s). The identity chain may be lost",
inQuestion.EphId.Int64(), inQuestion.Source)
}
toAdd = append(toAdd, *inQuestion.ProcessNext)
added = append(added, inQuestion.ProcessNext.EphId.Int64())
}
if err := inQuestion.Delete(); err != nil {
jww.ERROR.Printf("Failed to delete Identity for %s: %+v",
......@@ -343,11 +350,20 @@ func (s *Store) prune(now time.Time) {
i--
}
}
for i := range toAdd {
next := toAdd[i]
if err := s.addIdentityNoSave(next); err != nil {
jww.ERROR.Printf("Failed to add identity to process next "+
"for %d(%s). The identity chain may be lost",
next.EphId.Int64(), next.Source)
}
}
// Save the list if it changed
if lengthBefore != len(s.active) {
if len(added) > 0 || len(pruned) > 0 {
jww.INFO.Printf(
"Pruned %d identities [%+v]", lengthBefore-len(s.active), pruned)
"Pruned %d identities [%+v], added %d [%+v]", len(pruned), pruned,
len(added), added)
if err := s.save(); err != nil {
jww.FATAL.Panicf("Failed to store reception storage: %+v", err)
}
......
......@@ -173,6 +173,7 @@ func (m *mockCmix) SendMany([]cmix.TargetedCmixMessage, cmix.CMIXParams) (rounds
return rounds.Round{}, []ephemeral.Id{}, nil
}
func (m *mockCmix) AddIdentity(*id.ID, time.Time, bool) {}
func (m *mockCmix) AddIdentityWithHistory(*id.ID, time.Time, time.Time, bool) {}
func (m *mockCmix) RemoveIdentity(*id.ID) {}
func (m *mockCmix) GetIdentity(*id.ID) (identity.TrackedID, error) {
......
......@@ -86,6 +86,11 @@ func (m *mockCmix) SendMany(messages []cmix.TargetedCmixMessage, p cmix.CMIXPara
panic("implement me")
}
func (m *mockCmix) AddIdentityWithHistory(id *id.ID, validUntil, beginning time.Time, persistent bool) {
//TODO implement me
panic("implement me")
}
func (m *mockCmix) AddIdentity(id *id.ID, validUntil time.Time, persistent bool) {
//TODO implement me
panic("implement me")
......
......@@ -129,6 +129,8 @@ func (m *mockFpgCmix) SendMany([]cmix.TargetedCmixMessage, cmix.CMIXParams) (rou
return rounds.Round{}, nil, nil
}
func (m *mockFpgCmix) AddIdentity(*id.ID, time.Time, bool) {}
func (m *mockFpgCmix) AddIdentityWithHistory(id *id.ID, validUntil, beginning time.Time, persistent bool) {
}
func (m *mockFpgCmix) RemoveIdentity(*id.ID) {}
func (m *mockFpgCmix) GetIdentity(*id.ID) (identity.TrackedID, error) {
return identity.TrackedID{}, nil
......
......@@ -252,6 +252,9 @@ func (m *mockNetManager) SendMany(messages []cmix.TargetedCmixMessage, p cmix.CM
func (m *mockNetManager) AddIdentity(id *id.ID, validUntil time.Time, persistent bool) {}
func (m *mockNetManager) AddIdentityWithHistory(id *id.ID, validUntil, beginning time.Time, persistent bool) {
}
func (m *mockNetManager) RemoveIdentity(id *id.ID) {}
func (m *mockNetManager) AddFingerprint(identity *id.ID, fingerprint format.Fingerprint,
......
......@@ -215,6 +215,8 @@ func (m *mockCmix) SendMany([]cmix.TargetedCmixMessage, cmix.CMIXParams) (rounds
return rounds.Round{}, nil, nil
}
func (m *mockCmix) AddIdentity(*id.ID, time.Time, bool) {}
func (m *mockCmix) AddIdentityWithHistory(id *id.ID, validUntil, beginning time.Time, persistent bool) {
}
func (m *mockCmix) RemoveIdentity(*id.ID) {}
func (m *mockCmix) GetIdentity(*id.ID) (identity.TrackedID, error) { return identity.TrackedID{}, nil }
......
......@@ -141,6 +141,9 @@ func (m *mockCmix) SendWithAssembler(*id.ID, cmix.MessageAssembler,
}
func (m *mockCmix) AddIdentity(*id.ID, time.Time, bool) { panic("implement me") }
func (m *mockCmix) AddIdentityWithHistory(id *id.ID, validUntil, beginning time.Time, persistent bool) {
panic("implement me")
}
func (m *mockCmix) RemoveIdentity(*id.ID) { panic("implement me") }
func (m *mockCmix) GetIdentity(*id.ID) (identity.TrackedID, error) { panic("implement me") }
......
......@@ -143,6 +143,9 @@ func (m *mockCmix) SendWithAssembler(*id.ID, cmix.MessageAssembler,
}
func (m *mockCmix) AddIdentity(*id.ID, time.Time, bool) { panic("implement me") }
func (m *mockCmix) AddIdentityWithHistory(id *id.ID, validUntil, beginning time.Time, persistent bool) {
panic("implement me")
}
func (m *mockCmix) RemoveIdentity(*id.ID) { panic("implement me") }
func (m *mockCmix) GetIdentity(*id.ID) (identity.TrackedID, error) { panic("implement me") }
......
......@@ -138,6 +138,9 @@ func (m *mockCmix) SendWithAssembler(*id.ID, cmix.MessageAssembler,
}
func (m *mockCmix) AddIdentity(*id.ID, time.Time, bool) { panic("implement me") }
func (m *mockCmix) AddIdentityWithHistory(id *id.ID, validUntil, beginning time.Time, persistent bool) {
panic("implement me")
}
func (m *mockCmix) RemoveIdentity(*id.ID) { panic("implement me") }
func (m *mockCmix) GetIdentity(*id.ID) (identity.TrackedID, error) { panic("implement me") }
......
......@@ -194,6 +194,9 @@ func (m *mockCmix) SendWithAssembler(*id.ID, cmix.MessageAssembler,
}
func (m *mockCmix) AddIdentity(*id.ID, time.Time, bool) { panic("implement me") }
func (m *mockCmix) AddIdentityWithHistory(id *id.ID, validUntil, beginning time.Time, persistent bool) {
panic("implement me")
}
func (m *mockCmix) RemoveIdentity(*id.ID) { panic("implement me") }
func (m *mockCmix) GetIdentity(*id.ID) (identity.TrackedID, error) { panic("implement me") }
......
......@@ -95,6 +95,11 @@ func (tnm *testNetworkManager) AddIdentity(id *id.ID, validUntil time.Time, pers
panic("implement me")
}
func (tnm *testNetworkManager) AddIdentityWithHistory(id *id.ID, validUntil, beginning time.Time, persistent bool) {
//TODO implement me
panic("implement me")
}
func (tnm *testNetworkManager) RemoveIdentity(id *id.ID) {
//TODO implement me
panic("implement me")
......
......@@ -127,6 +127,10 @@ func (tnm *testNetworkManager) AddIdentity(id *id.ID, validUntil time.Time, pers
return
}
func (tnm *testNetworkManager) AddIdentityWithHistory(id *id.ID, validUntil, beginning time.Time, persistent bool) {
return
}
func (tnm *testNetworkManager) DeleteClientFingerprints(identity *id.ID) {
return
}
......
......@@ -160,6 +160,10 @@ func (t *testNetworkManagerGeneric) AddHealthCallback(f func(bool)) uint64 {
func (t *testNetworkManagerGeneric) AddIdentity(id *id.ID,
validUntil time.Time, persistent bool) {
}
func (t *testNetworkManagerGeneric) AddIdentityWithHistory(id *id.ID, validUntil,
beginning time.Time, persistent bool) {
}
func (t *testNetworkManagerGeneric) RemoveIdentity(id *id.ID) {}
func (t *testNetworkManagerGeneric) AddService(clientID *id.ID,
newService message.Service, response message.Processor) {
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment