//////////////////////////////////////////////////////////////////////////////// // Copyright © 2022 xx foundation // // // // Use of this source code is governed by a license that can be found in the // // LICENSE file. // //////////////////////////////////////////////////////////////////////////////// package cmix import ( "testing" bloom "gitlab.com/elixxir/bloomfilter" "gitlab.com/elixxir/client/cmix/identity/receptionID/store" "gitlab.com/elixxir/client/storage/versioned" "gitlab.com/elixxir/comms/mixmessages" "gitlab.com/elixxir/ekv" "gitlab.com/xx_network/primitives/id" ) // TestChecker tests the basic operation for Checker func TestChecker(t *testing.T) { // RID for testing rid := id.Round(2) // Init bloom ring buff br, err := bloom.Init(10, 0.01) if err != nil { t.Errorf("Failed to init bloom ring: %+v", err) } // Create filters object not in range filters := []*RemoteFilter{ { data: &mixmessages.ClientBloom{ Filter: nil, FirstRound: 0, RoundRange: 1, }, filter: br, }, } // Init a kv and a checked rounds structure kv := versioned.NewKV(ekv.MakeMemstore()) cr, err := store.NewCheckedRounds(5, kv) if err != nil { t.Errorf("Failed to create checked rounds store: %+v", err) } ok := Checker(rid, filters, cr) if ok { t.Errorf("Should not have received OK response when appropriate data not added to stores") } cr2, err := store.NewCheckedRounds(5, kv) if err != nil { t.Errorf("Failed to create checked rounds store: %+v", err) } cr2.Check(rid) ok = Checker(rid, filters, cr2) if !ok { t.Errorf("Checker should have returned ok if round checked in checkrounds") } br.Add(serializeRound(rid)) filters = []*RemoteFilter{ { data: &mixmessages.ClientBloom{ Filter: nil, FirstRound: 1, RoundRange: 5, }, filter: br, }, } ok = Checker(rid, filters, cr) if !ok { t.Errorf("Checker did not return OK for round in filter") } }