github.com/prysmaticlabs/prysm@v1.4.4/beacon-chain/cache/subnet_ids_test.go (about) 1 package cache 2 3 import ( 4 "testing" 5 6 types "github.com/prysmaticlabs/eth2-types" 7 "github.com/prysmaticlabs/prysm/shared/testutil/assert" 8 "github.com/prysmaticlabs/prysm/shared/testutil/require" 9 ) 10 11 func TestSubnetIDsCache_RoundTrip(t *testing.T) { 12 c := newSubnetIDs() 13 slot := types.Slot(100) 14 committeeIDs := c.GetAggregatorSubnetIDs(slot) 15 assert.Equal(t, 0, len(committeeIDs), "Empty cache returned an object") 16 17 c.AddAggregatorSubnetID(slot, 1) 18 res := c.GetAggregatorSubnetIDs(slot) 19 assert.DeepEqual(t, []uint64{1}, res) 20 21 c.AddAggregatorSubnetID(slot, 2) 22 res = c.GetAggregatorSubnetIDs(slot) 23 assert.DeepEqual(t, []uint64{1, 2}, res) 24 25 c.AddAggregatorSubnetID(slot, 3) 26 res = c.GetAggregatorSubnetIDs(slot) 27 assert.DeepEqual(t, []uint64{1, 2, 3}, res) 28 29 committeeIDs = c.GetAttesterSubnetIDs(slot) 30 assert.Equal(t, 0, len(committeeIDs), "Empty cache returned an object") 31 32 c.AddAttesterSubnetID(slot, 11) 33 res = c.GetAttesterSubnetIDs(slot) 34 assert.DeepEqual(t, []uint64{11}, res) 35 36 c.AddAttesterSubnetID(slot, 22) 37 res = c.GetAttesterSubnetIDs(slot) 38 assert.DeepEqual(t, []uint64{11, 22}, res) 39 40 c.AddAttesterSubnetID(slot, 33) 41 res = c.GetAttesterSubnetIDs(slot) 42 assert.DeepEqual(t, []uint64{11, 22, 33}, res) 43 } 44 45 func TestSubnetIDsCache_PersistentCommitteeRoundtrip(t *testing.T) { 46 c := newSubnetIDs() 47 48 for i := 0; i < 20; i++ { 49 pubkey := [48]byte{byte(i)} 50 c.AddPersistentCommittee(pubkey[:], []uint64{uint64(i)}, 0) 51 } 52 53 for i := uint64(0); i < 20; i++ { 54 pubkey := [48]byte{byte(i)} 55 56 idxs, ok, _ := c.GetPersistentSubnets(pubkey[:]) 57 if !ok { 58 t.Errorf("Couldn't find entry in cache for pubkey %#x", pubkey) 59 continue 60 } 61 require.Equal(t, i, idxs[0]) 62 } 63 coms := c.GetAllSubnets() 64 assert.Equal(t, 20, len(coms)) 65 }