prysm-pulse/slasher/beaconclient/historical_data_retrieval_test.go
Ivan Martinez 2f10b1c7b1
Change gogoproto compiler to protoc-gen-go-cast (#8697)
* Remove gogoproto compiler

* Remove more gogoproto

* Improvements

* Fix gengo

* More scripts

* Gazelle, fix deps

* Fix version and errors

* Fix gocast for arrays

* Fix ethapis

* Fixes

* Fix compile errors

* fix go.mod

* //proto/... builds

* Update for protov2

* temp fix compilation to move on

* Change everything to emptypb.empty

* Add grpc to proto/slashings

* Fix almost all build failures

* Oher build problems

* FIX THIS FUCKING THING

* gaz literally every .bazel

* Final touches

* Final final touches

* Fix proto

* Begin moving proto.Marshal to native

* Fix site_data

* Fixes

* Fix duplicate gateway

* Fix gateway target

* Fix ethapis

* Fixes from review

* Update

* Fix

* Fix status test

* Fix fuzz

* Add isprotoslice to fun

* Change DeepEqual to DeepSSZEqual for proto arrays

* Fix build

* Fix gaz

* Update go

* Fixes

* Fixes

* Add case for nil validators after copy

* Fix cast

* Fix test

* Fix imports

* Go mod

* Only use extension where needed

* Fixes

* Split gateway from gengo

* gaz

* go mod

* Add back hydrated state

* fix hydrate

* Fix proto.clone

* Fies

* Revert "Split gateway from gengo"

This reverts commit 7298bb2054d446e427d9af97e13b8fabe8695085.

* Revert "gaz"

This reverts commit ca952565701a88727e22302d6c8d60ac48d97255.

* Merge all gateway into one target

* go mod

* Gaz

* Add generate v1_gateway files

* run pb again

* goimports

* gaz

* Fix comments

* Fix protos

* Fix PR

* Fix protos

* Update grpc-gateway and ethapis

* Update ethapis and gen-go-cast

* Go tidy

* Reorder

* Fix ethapis

* fix spec tests

* Fix script

* Remove unused import

* Fix fuzz

* Fix gomod

* Update version

* Error if the cloned result is nil

* Handle optional slots

* ADd more empty checks to clone

* Undo fuzz changes

* Fix build.bazel

* Gaz

* Redo fuzz changes

* Undo some eth1data changes

* Update go.mod

Co-authored-by: Preston Van Loon <preston@prysmaticlabs.com>

* Undo clone beacon state

* Remove gogo proto more and unused v1_gateway

* Add manual fix for nil vals

* Fix gaz

* tidy

* Tidy again

* Add detailed error

* Revert "Add detailed error"

This reverts commit 59bc053dcd59569a54c95b07739d5a379665ec5d.

* Undo varint changes

* Fix nil validators in deposit test

* Commit

* Undo

Co-authored-by: Preston Van Loon <preston@prysmaticlabs.com>
Co-authored-by: Radosław Kapka <rkapka@wp.pl>
Co-authored-by: Nishant Das <nishdas93@gmail.com>
Co-authored-by: Raul Jordan <raul@prysmaticlabs.com>
2021-05-17 18:32:04 +00:00

89 lines
2.6 KiB
Go

package beaconclient
import (
"context"
"strconv"
"testing"
"github.com/golang/mock/gomock"
types "github.com/prysmaticlabs/eth2-types"
ethpb "github.com/prysmaticlabs/ethereumapis/eth/v1alpha1"
"github.com/prysmaticlabs/prysm/shared/mock"
"github.com/prysmaticlabs/prysm/shared/params"
"github.com/prysmaticlabs/prysm/shared/testutil/assert"
"github.com/prysmaticlabs/prysm/shared/testutil/require"
testDB "github.com/prysmaticlabs/prysm/slasher/db/testing"
logTest "github.com/sirupsen/logrus/hooks/test"
)
func TestService_RequestHistoricalAttestations(t *testing.T) {
params.SetupTestConfigCleanup(t)
hook := logTest.NewGlobal()
ctrl := gomock.NewController(t)
defer ctrl.Finish()
db := testDB.SetupSlasherDB(t, false)
client := mock.NewMockBeaconChainClient(ctrl)
bs := Service{
cfg: &Config{
BeaconClient: client,
SlasherDB: db,
},
}
numAtts := 1000
wanted := make([]*ethpb.IndexedAttestation, numAtts)
for i := 0; i < numAtts; i++ {
wanted[i] = &ethpb.IndexedAttestation{
AttestingIndices: []uint64{1, 2, 3},
Data: &ethpb.AttestationData{
Slot: types.Slot(i),
Target: &ethpb.Checkpoint{
Epoch: 1,
Root: make([]byte, 32),
},
},
}
}
// We override the page size in the requests to 100 so we will
// obtain 10 pages of indexed attestations from the server.
numPages := 100
perPage := numAtts / numPages
cfg := params.BeaconConfig()
cfg.DefaultPageSize = perPage
params.OverrideBeaconConfig(cfg)
// We expect there to be numPages calls to ListIndexedAttestations
// to retrieve all attestations for epoch 0.
for i := 0; i < numAtts; i += perPage {
if i+perPage >= numAtts {
client.EXPECT().ListIndexedAttestations(
gomock.Any(),
gomock.Any(),
).Return(&ethpb.ListIndexedAttestationsResponse{
IndexedAttestations: wanted[i:],
NextPageToken: "",
TotalSize: int32(numAtts),
}, nil)
} else {
client.EXPECT().ListIndexedAttestations(
gomock.Any(),
gomock.Any(),
).Return(&ethpb.ListIndexedAttestationsResponse{
IndexedAttestations: wanted[i : i+perPage],
NextPageToken: strconv.Itoa(i + 1),
TotalSize: int32(numAtts),
}, nil)
}
}
// We request attestations for epoch 0.
res, err := bs.RequestHistoricalAttestations(context.Background(), 0)
require.NoError(t, err)
assert.DeepSSZEqual(t, wanted, res)
require.LogsContain(t, hook, "Retrieved 100/1000 indexed attestations for epoch 0")
require.LogsContain(t, hook, "Retrieved 500/1000 indexed attestations for epoch 0")
require.LogsContain(t, hook, "Retrieved 1000/1000 indexed attestations for epoch 0")
}