From 064bcbd13afca6d2f7b5a2f504fa28e2d12bf2b5 Mon Sep 17 00:00:00 2001 From: terence tsao Date: Tue, 1 Jun 2021 11:44:30 -0700 Subject: [PATCH] Add sync committee test --- .../mainnet/altair/operations/BUILD.bazel | 1 + .../altair/operations/sync_committee_test.go | 11 ++++++ .../minimal/altair/operations/BUILD.bazel | 1 + .../altair/operations/sync_committee_test.go | 11 ++++++ spectest/shared/altair/operations/BUILD.bazel | 1 + .../altair/operations/sync_committee.go | 37 +++++++++++++++++++ 6 files changed, 62 insertions(+) create mode 100644 spectest/mainnet/altair/operations/sync_committee_test.go create mode 100644 spectest/minimal/altair/operations/sync_committee_test.go create mode 100644 spectest/shared/altair/operations/sync_committee.go diff --git a/spectest/mainnet/altair/operations/BUILD.bazel b/spectest/mainnet/altair/operations/BUILD.bazel index 48a3cda84de4..a76cdc788069 100644 --- a/spectest/mainnet/altair/operations/BUILD.bazel +++ b/spectest/mainnet/altair/operations/BUILD.bazel @@ -9,6 +9,7 @@ go_test( "block_header_test.go", "deposit_test.go", "proposer_slashing_test.go", + "sync_committee_test.go", "voluntary_exit_test.go", ], data = glob(["*.yaml"]) + [ diff --git a/spectest/mainnet/altair/operations/sync_committee_test.go b/spectest/mainnet/altair/operations/sync_committee_test.go new file mode 100644 index 000000000000..375973739e10 --- /dev/null +++ b/spectest/mainnet/altair/operations/sync_committee_test.go @@ -0,0 +1,11 @@ +package operations + +import ( + "testing" + + "github.com/prysmaticlabs/prysm/spectest/shared/altair/operations" +) + +func TestMainnet_Altair_Operations_SyncCommittee(t *testing.T) { + operations.RunSyncCommitteeTest(t, "mainnet") +} diff --git a/spectest/minimal/altair/operations/BUILD.bazel b/spectest/minimal/altair/operations/BUILD.bazel index ae036b48d8c6..3c674228136e 100644 --- a/spectest/minimal/altair/operations/BUILD.bazel +++ b/spectest/minimal/altair/operations/BUILD.bazel @@ -10,6 +10,7 @@ go_test( "block_header_test.go", "deposit_test.go", "proposer_slashing_test.go", + "sync_committee_test.go", "voluntary_exit_test.go", ], data = glob(["*.yaml"]) + [ diff --git a/spectest/minimal/altair/operations/sync_committee_test.go b/spectest/minimal/altair/operations/sync_committee_test.go new file mode 100644 index 000000000000..610a9b336543 --- /dev/null +++ b/spectest/minimal/altair/operations/sync_committee_test.go @@ -0,0 +1,11 @@ +package operations + +import ( + "testing" + + "github.com/prysmaticlabs/prysm/spectest/shared/altair/operations" +) + +func TestMinimal_Altair_Operations_SyncCommittee(t *testing.T) { + operations.RunProposerSlashingTest(t, "minimal") +} diff --git a/spectest/shared/altair/operations/BUILD.bazel b/spectest/shared/altair/operations/BUILD.bazel index 044b1755fa0d..88165c979bb3 100644 --- a/spectest/shared/altair/operations/BUILD.bazel +++ b/spectest/shared/altair/operations/BUILD.bazel @@ -10,6 +10,7 @@ go_library( "deposit.go", "helpers.go", "proposer_slashing.go", + "sync_committee.go", "voluntary_exit.go", ], importpath = "github.com/prysmaticlabs/prysm/spectest/shared/altair/operations", diff --git a/spectest/shared/altair/operations/sync_committee.go b/spectest/shared/altair/operations/sync_committee.go new file mode 100644 index 000000000000..90711f13c1ee --- /dev/null +++ b/spectest/shared/altair/operations/sync_committee.go @@ -0,0 +1,37 @@ +package operations + +import ( + "context" + "path" + "testing" + + "github.com/golang/snappy" + ethpb "github.com/prysmaticlabs/ethereumapis/eth/v1alpha1" + "github.com/prysmaticlabs/prysm/beacon-chain/core/altair" + iface "github.com/prysmaticlabs/prysm/beacon-chain/state/interface" + "github.com/prysmaticlabs/prysm/shared/interfaces" + "github.com/prysmaticlabs/prysm/shared/testutil" + "github.com/prysmaticlabs/prysm/shared/testutil/require" + "github.com/prysmaticlabs/prysm/spectest/utils" +) + +func RunSyncCommitteeTest(t *testing.T, config string) { + require.NoError(t, utils.SetConfig(t, config)) + testFolders, testsFolderPath := utils.TestFolders(t, config, "altair", "operations/sync_committee/pyspec_tests") + for _, folder := range testFolders { + t.Run(folder.Name(), func(t *testing.T) { + folderPath := path.Join(testsFolderPath, folder.Name()) + syncCommitteeFile, err := testutil.BazelFileBytes(folderPath, "sync_aggregate.ssz_snappy") + require.NoError(t, err) + syncCommitteeSSZ, err := snappy.Decode(nil /* dst */, syncCommitteeFile) + require.NoError(t, err, "Failed to decompress") + sc := ðpb.SyncAggregate{} + require.NoError(t, sc.UnmarshalSSZ(syncCommitteeSSZ), "Failed to unmarshal") + + body := ðpb.BeaconBlockBodyAltair{SyncAggregate: sc} + RunBlockOperationTest(t, folderPath, body, func(ctx context.Context, s iface.BeaconState, b interfaces.SignedBeaconBlock) (iface.BeaconState, error) { + return altair.ProcessSyncCommittee(s, body.SyncAggregate) + }) + }) + } +}