From ca88e59ee372a53f228cec81282098130e04f079 Mon Sep 17 00:00:00 2001 From: kasey <489222+kasey@users.noreply.github.com> Date: Fri, 8 Sep 2023 05:47:34 -0500 Subject: [PATCH] Tests for init-sync DA (#12873) * test coverage for commitmentsToCheck * test for WithinDAPeriod * gaz --------- Co-authored-by: Kasey Kirkham --- beacon-chain/blockchain/process_block_test.go | 70 +++++++++++++++++++ config/params/BUILD.bazel | 1 + config/params/config_test.go | 41 +++++++++++ 3 files changed, 112 insertions(+) diff --git a/beacon-chain/blockchain/process_block_test.go b/beacon-chain/blockchain/process_block_test.go index 41835d62ee..bd9993dd62 100644 --- a/beacon-chain/blockchain/process_block_test.go +++ b/beacon-chain/blockchain/process_block_test.go @@ -1,6 +1,7 @@ package blockchain import ( + "bytes" "context" "fmt" "math/big" @@ -38,6 +39,7 @@ import ( "github.com/prysmaticlabs/prysm/v4/testing/require" "github.com/prysmaticlabs/prysm/v4/testing/util" prysmTime "github.com/prysmaticlabs/prysm/v4/time" + "github.com/prysmaticlabs/prysm/v4/time/slots" logTest "github.com/sirupsen/logrus/hooks/test" ) @@ -2036,3 +2038,71 @@ func driftGenesisTime(s *Service, slot, delay int64) { offset := slot*int64(params.BeaconConfig().SecondsPerSlot) - delay s.SetGenesisTime(time.Unix(time.Now().Unix()-offset, 0)) } + +func Test_commitmentsToCheck(t *testing.T) { + windowSlots, err := slots.EpochEnd(params.BeaconNetworkConfig().MinEpochsForBlobsSidecarsRequest) + require.NoError(t, err) + commits := [][]byte{ + bytesutil.PadTo([]byte("a"), 48), + bytesutil.PadTo([]byte("b"), 48), + bytesutil.PadTo([]byte("c"), 48), + bytesutil.PadTo([]byte("d"), 48), + } + cases := []struct { + name string + commits [][]byte + block func(*testing.T) consensusblocks.ROBlock + slot primitives.Slot + }{ + { + name: "pre deneb", + block: func(t *testing.T) consensusblocks.ROBlock { + bb := util.NewBeaconBlockBellatrix() + sb, err := consensusblocks.NewSignedBeaconBlock(bb) + require.NoError(t, err) + rb, err := consensusblocks.NewROBlock(sb) + require.NoError(t, err) + return rb + }, + }, + { + name: "commitments within da", + block: func(t *testing.T) consensusblocks.ROBlock { + d := util.NewBeaconBlockDeneb() + d.Block.Body.BlobKzgCommitments = commits + d.Block.Slot = 100 + sb, err := consensusblocks.NewSignedBeaconBlock(d) + require.NoError(t, err) + rb, err := consensusblocks.NewROBlock(sb) + require.NoError(t, err) + return rb + }, + commits: commits, + slot: 100, + }, + { + name: "commitments outside da", + block: func(t *testing.T) consensusblocks.ROBlock { + d := util.NewBeaconBlockDeneb() + // block is from slot 0, "current slot" is window size +1 (so outside the window) + d.Block.Body.BlobKzgCommitments = commits + sb, err := consensusblocks.NewSignedBeaconBlock(d) + require.NoError(t, err) + rb, err := consensusblocks.NewROBlock(sb) + require.NoError(t, err) + return rb + }, + slot: windowSlots + 1, + }, + } + for _, c := range cases { + t.Run(c.name, func(t *testing.T) { + b := c.block(t) + co := commitmentsToCheck(b, c.slot) + require.Equal(t, len(c.commits), len(co)) + for i := 0; i < len(c.commits); i++ { + require.Equal(t, true, bytes.Equal(c.commits[i], co[i])) + } + }) + } +} diff --git a/config/params/BUILD.bazel b/config/params/BUILD.bazel index 6be86a9aca..07f9b8228b 100644 --- a/config/params/BUILD.bazel +++ b/config/params/BUILD.bazel @@ -63,6 +63,7 @@ go_test( gotags = ["develop"], race = "on", deps = [ + "//consensus-types/primitives:go_default_library", "//encoding/bytesutil:go_default_library", "//io/file:go_default_library", "//testing/assert:go_default_library", diff --git a/config/params/config_test.go b/config/params/config_test.go index 8093e5241a..19f21ce16b 100644 --- a/config/params/config_test.go +++ b/config/params/config_test.go @@ -5,6 +5,8 @@ import ( "testing" "github.com/prysmaticlabs/prysm/v4/config/params" + "github.com/prysmaticlabs/prysm/v4/consensus-types/primitives" + "github.com/prysmaticlabs/prysm/v4/testing/require" ) // Test cases can be executed in an arbitrary order. TestOverrideBeaconConfigTestTeardown checks @@ -51,3 +53,42 @@ func TestConfig_DataRace(t *testing.T) { } wg.Wait() } + +func TestConfig_WithinDAPeriod(t *testing.T) { + cases := []struct { + name string + block primitives.Epoch + current primitives.Epoch + within bool + }{ + { + name: "before", + block: 0, + current: params.BeaconNetworkConfig().MinEpochsForBlobsSidecarsRequest + 1, + within: false, + }, + { + name: "same", + block: 0, + current: 0, + within: true, + }, + { + name: "boundary", + block: 0, + current: params.BeaconNetworkConfig().MinEpochsForBlobsSidecarsRequest, + within: true, + }, + { + name: "one less", + block: params.BeaconNetworkConfig().MinEpochsForBlobsSidecarsRequest - 1, + current: params.BeaconNetworkConfig().MinEpochsForBlobsSidecarsRequest, + within: true, + }, + } + for _, c := range cases { + t.Run(c.name, func(t *testing.T) { + require.Equal(t, c.within, params.WithinDAPeriod(c.block, c.current)) + }) + } +}