mirror of
https://gitlab.com/pulsechaincom/prysm-pulse.git
synced 2025-01-09 11:11:20 +00:00
266 lines
5.1 KiB
Go
266 lines
5.1 KiB
Go
package eth_test
|
|
|
|
import (
|
|
"fmt"
|
|
"reflect"
|
|
"testing"
|
|
|
|
"github.com/gogo/protobuf/proto"
|
|
upstreampb "github.com/prysmaticlabs/ethereumapis/eth/v1alpha1"
|
|
pb "github.com/prysmaticlabs/prysm/proto/eth/v1alpha1"
|
|
)
|
|
|
|
// Test that Prysm copied protobufs have the same wire type and tag number.
|
|
func TestProtoCompatability(t *testing.T) {
|
|
tests := []struct {
|
|
a proto.Message
|
|
b proto.Message
|
|
}{
|
|
// attestation.proto
|
|
{
|
|
a: &pb.Attestation{},
|
|
b: &upstreampb.Attestation{},
|
|
},
|
|
{
|
|
a: &pb.AttestationData{},
|
|
b: &upstreampb.AttestationData{},
|
|
},
|
|
{
|
|
a: &pb.Checkpoint{},
|
|
b: &upstreampb.Checkpoint{},
|
|
},
|
|
{
|
|
a: &pb.Crosslink{},
|
|
b: &upstreampb.Crosslink{},
|
|
},
|
|
// beacon_block.proto
|
|
{
|
|
a: &pb.BeaconBlock{},
|
|
b: &upstreampb.BeaconBlock{},
|
|
},
|
|
{
|
|
a: &pb.BeaconBlockBody{},
|
|
b: &upstreampb.BeaconBlockBody{},
|
|
},
|
|
{
|
|
a: &pb.ProposerSlashing{},
|
|
b: &upstreampb.ProposerSlashing{},
|
|
},
|
|
{
|
|
a: &pb.AttesterSlashing{},
|
|
b: &upstreampb.AttesterSlashing{},
|
|
},
|
|
{
|
|
a: &pb.Deposit{},
|
|
b: &upstreampb.Deposit{},
|
|
},
|
|
{
|
|
a: &pb.Deposit_Data{},
|
|
b: &upstreampb.Deposit_Data{},
|
|
},
|
|
{
|
|
a: &pb.VoluntaryExit{},
|
|
b: &upstreampb.VoluntaryExit{},
|
|
},
|
|
{
|
|
a: &pb.Transfer{},
|
|
b: &upstreampb.Transfer{},
|
|
},
|
|
{
|
|
a: &pb.Eth1Data{},
|
|
b: &upstreampb.Eth1Data{},
|
|
},
|
|
{
|
|
a: &pb.BeaconBlockHeader{},
|
|
b: &upstreampb.BeaconBlockHeader{},
|
|
},
|
|
{
|
|
a: &pb.IndexedAttestation{},
|
|
b: &upstreampb.IndexedAttestation{},
|
|
},
|
|
// beacon_chain.proto
|
|
{
|
|
a: &pb.ListAttestationsRequest{},
|
|
b: &upstreampb.ListAttestationsRequest{},
|
|
},
|
|
{
|
|
a: &pb.ListAttestationsResponse{},
|
|
b: &upstreampb.ListAttestationsResponse{},
|
|
},
|
|
{
|
|
a: &pb.ListBlocksRequest{},
|
|
b: &upstreampb.ListBlocksRequest{},
|
|
},
|
|
{
|
|
a: &pb.ListBlocksResponse{},
|
|
b: &upstreampb.ListBlocksResponse{},
|
|
},
|
|
{
|
|
a: &pb.ChainHead{},
|
|
b: &upstreampb.ChainHead{},
|
|
},
|
|
{
|
|
a: &pb.GetValidatorBalancesRequest{},
|
|
b: &upstreampb.GetValidatorBalancesRequest{},
|
|
},
|
|
{
|
|
a: &pb.ValidatorBalances{},
|
|
b: &upstreampb.ValidatorBalances{},
|
|
},
|
|
{
|
|
a: &pb.GetValidatorsRequest{},
|
|
b: &upstreampb.GetValidatorsRequest{},
|
|
},
|
|
{
|
|
a: &pb.Validators{},
|
|
b: &upstreampb.Validators{},
|
|
},
|
|
{
|
|
a: &pb.GetValidatorActiveSetChangesRequest{},
|
|
b: &upstreampb.GetValidatorActiveSetChangesRequest{},
|
|
},
|
|
{
|
|
a: &pb.ActiveSetChanges{},
|
|
b: &upstreampb.ActiveSetChanges{},
|
|
},
|
|
{
|
|
a: &pb.ValidatorQueue{},
|
|
b: &upstreampb.ValidatorQueue{},
|
|
},
|
|
{
|
|
a: &pb.ListValidatorAssignmentsRequest{},
|
|
b: &upstreampb.ListValidatorAssignmentsRequest{},
|
|
},
|
|
{
|
|
a: &pb.ValidatorAssignments{},
|
|
b: &upstreampb.ValidatorAssignments{},
|
|
},
|
|
{
|
|
a: &pb.ValidatorAssignments_CommitteeAssignment{},
|
|
b: &upstreampb.ValidatorAssignments_CommitteeAssignment{},
|
|
},
|
|
{
|
|
a: &pb.GetValidatorParticipationRequest{},
|
|
b: &upstreampb.GetValidatorParticipationRequest{},
|
|
},
|
|
{
|
|
a: &pb.ValidatorParticipation{},
|
|
b: &upstreampb.ValidatorParticipation{},
|
|
},
|
|
{
|
|
a: &pb.AttestationPoolResponse{},
|
|
b: &upstreampb.AttestationPoolResponse{},
|
|
},
|
|
// node.proto
|
|
{
|
|
a: &pb.SyncStatus{},
|
|
b: &upstreampb.SyncStatus{},
|
|
},
|
|
{
|
|
a: &pb.Genesis{},
|
|
b: &upstreampb.Genesis{},
|
|
},
|
|
{
|
|
a: &pb.Version{},
|
|
b: &upstreampb.Version{},
|
|
},
|
|
{
|
|
a: &pb.ImplementedServices{},
|
|
b: &upstreampb.ImplementedServices{},
|
|
},
|
|
// validator.proto
|
|
{
|
|
a: &pb.DutiesRequest{},
|
|
b: &upstreampb.DutiesRequest{},
|
|
},
|
|
{
|
|
a: &pb.DutiesResponse{},
|
|
b: &upstreampb.DutiesResponse{},
|
|
},
|
|
{
|
|
a: &pb.DutiesResponse_Duty{},
|
|
b: &upstreampb.DutiesResponse_Duty{},
|
|
},
|
|
{
|
|
a: &pb.BlockRequest{},
|
|
b: &upstreampb.BlockRequest{},
|
|
},
|
|
{
|
|
a: &pb.AttestationDataRequest{},
|
|
b: &upstreampb.AttestationDataRequest{},
|
|
},
|
|
{
|
|
a: &pb.Validator{},
|
|
b: &upstreampb.Validator{},
|
|
},
|
|
}
|
|
|
|
for _, tt := range tests {
|
|
t.Run(fmt.Sprintf("%T", tt.a), func(t *testing.T) {
|
|
|
|
propsA := proto.GetProperties(reflect.TypeOf(tt.a).Elem())
|
|
propsB := proto.GetProperties(reflect.TypeOf(tt.b).Elem())
|
|
|
|
if propsA.Len() != propsB.Len() {
|
|
t.Fatalf(
|
|
"%T does not have same number of properties (%d) as %T (%d)",
|
|
tt.a,
|
|
propsA.Len(),
|
|
tt.b,
|
|
propsB.Len(),
|
|
)
|
|
}
|
|
|
|
for i, propA := range propsA.Prop {
|
|
propB := propsB.Prop[i]
|
|
|
|
if propA.Name != propB.Name {
|
|
t.Errorf(
|
|
"%T.%s field is named differently than %T.%s",
|
|
tt.a,
|
|
propA.Name,
|
|
tt.b,
|
|
propB.Name,
|
|
)
|
|
}
|
|
|
|
if propA.Wire != propB.Wire {
|
|
t.Errorf(
|
|
"%T.%s has different wire (%s) than %T.%s (%s)",
|
|
tt.a,
|
|
propA.Name,
|
|
propA.Wire,
|
|
tt.b,
|
|
propB.Name,
|
|
propB.Wire,
|
|
)
|
|
}
|
|
|
|
if propA.WireType != propB.WireType {
|
|
t.Errorf(
|
|
"%T.%s has different wiretype (%d) than %T.%s (%d)",
|
|
tt.a,
|
|
propA.Name,
|
|
propA.WireType,
|
|
tt.b,
|
|
propB.Name,
|
|
propB.WireType,
|
|
)
|
|
}
|
|
|
|
if propA.Tag != propB.Tag {
|
|
t.Errorf(
|
|
"%T.%s has different tag value (%d) than %T.%s (%d)",
|
|
tt.a,
|
|
propA.Name,
|
|
propA.Tag,
|
|
tt.b,
|
|
propB.Name,
|
|
propB.Tag,
|
|
)
|
|
}
|
|
}
|
|
})
|
|
}
|
|
}
|