From 74c9586c66e857e19e0ec7bd6958558b945ce293 Mon Sep 17 00:00:00 2001 From: Bastin <43618253+Inspector-Butters@users.noreply.github.com> Date: Wed, 2 Jul 2025 15:24:32 +0200 Subject: [PATCH] refactor lc kv tests (#15465) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * refactor lc kv tests * clean up * Update lightclient_test.go Co-authored-by: Radosław Kapka --------- Co-authored-by: Radosław Kapka --- beacon-chain/db/kv/lightclient_test.go | 182 ++++++----------------- changelog/bastin_refactor-lc-kv-tests.md | 3 + 2 files changed, 51 insertions(+), 134 deletions(-) create mode 100644 changelog/bastin_refactor-lc-kv-tests.md diff --git a/beacon-chain/db/kv/lightclient_test.go b/beacon-chain/db/kv/lightclient_test.go index 1592b81bc9..702570e222 100644 --- a/beacon-chain/db/kv/lightclient_test.go +++ b/beacon-chain/db/kv/lightclient_test.go @@ -216,63 +216,20 @@ func TestStore_LightClientUpdate_CanSaveRetrieve(t *testing.T) { db := setupDB(t) ctx := t.Context() - t.Run("Altair", func(t *testing.T) { - update, err := createUpdate(t, version.Altair) - require.NoError(t, err) - period := uint64(1) + for testVersion := version.Altair; testVersion <= version.Electra; testVersion++ { + t.Run(version.String(testVersion), func(t *testing.T) { + update, err := createUpdate(t, testVersion) + require.NoError(t, err) + period := uint64(1) - err = db.SaveLightClientUpdate(ctx, period, update) - require.NoError(t, err) + err = db.SaveLightClientUpdate(ctx, period, update) + require.NoError(t, err) - retrievedUpdate, err := db.LightClientUpdate(ctx, period) - require.NoError(t, err) - require.DeepEqual(t, update, retrievedUpdate, "retrieved update does not match saved update") - }) - t.Run("Bellatrix", func(t *testing.T) { - update, err := createUpdate(t, version.Bellatrix) - require.NoError(t, err) - period := uint64(1) - - err = db.SaveLightClientUpdate(ctx, period, update) - require.NoError(t, err) - - retrievedUpdate, err := db.LightClientUpdate(ctx, period) - require.NoError(t, err) - require.DeepEqual(t, update, retrievedUpdate, "retrieved update does not match saved update") - }) - t.Run("Capella", func(t *testing.T) { - update, err := createUpdate(t, version.Capella) - require.NoError(t, err) - period := uint64(1) - err = db.SaveLightClientUpdate(ctx, period, update) - require.NoError(t, err) - - retrievedUpdate, err := db.LightClientUpdate(ctx, period) - require.NoError(t, err) - require.DeepEqual(t, update, retrievedUpdate, "retrieved update does not match saved update") - }) - t.Run("Deneb", func(t *testing.T) { - update, err := createUpdate(t, version.Deneb) - require.NoError(t, err) - period := uint64(1) - err = db.SaveLightClientUpdate(ctx, period, update) - require.NoError(t, err) - - retrievedUpdate, err := db.LightClientUpdate(ctx, period) - require.NoError(t, err) - require.DeepEqual(t, update, retrievedUpdate, "retrieved update does not match saved update") - }) - t.Run("Electra", func(t *testing.T) { - update, err := createUpdate(t, version.Electra) - require.NoError(t, err) - period := uint64(1) - err = db.SaveLightClientUpdate(ctx, period, update) - require.NoError(t, err) - - retrievedUpdate, err := db.LightClientUpdate(ctx, period) - require.NoError(t, err) - require.DeepEqual(t, update, retrievedUpdate, "retrieved update does not match saved update") - }) + retrievedUpdate, err := db.LightClientUpdate(ctx, period) + require.NoError(t, err) + require.DeepEqual(t, update, retrievedUpdate, "retrieved update does not match saved update") + }) + } } func TestStore_LightClientUpdates_canRetrieveRange(t *testing.T) { @@ -607,6 +564,14 @@ func TestStore_LightClientBootstrap_CanSaveRetrieve(t *testing.T) { cfg.EpochsPerSyncCommitteePeriod = 1 params.OverrideBeaconConfig(cfg) + versionToForkEpoch := map[int]primitives.Epoch{ + version.Altair: params.BeaconConfig().AltairForkEpoch, + version.Bellatrix: params.BeaconConfig().BellatrixForkEpoch, + version.Capella: params.BeaconConfig().CapellaForkEpoch, + version.Deneb: params.BeaconConfig().DenebForkEpoch, + version.Electra: params.BeaconConfig().ElectraForkEpoch, + } + db := setupDB(t) ctx := t.Context() @@ -616,89 +581,38 @@ func TestStore_LightClientBootstrap_CanSaveRetrieve(t *testing.T) { require.IsNil(t, retrievedBootstrap) }) - t.Run("Altair", func(t *testing.T) { - bootstrap, err := createDefaultLightClientBootstrap(primitives.Slot(uint64(params.BeaconConfig().AltairForkEpoch) * uint64(params.BeaconConfig().SlotsPerEpoch))) - require.NoError(t, err) + for testVersion := version.Altair; testVersion <= version.Electra; testVersion++ { + t.Run(version.String(testVersion), func(t *testing.T) { + bootstrap, err := createDefaultLightClientBootstrap(primitives.Slot(uint64(versionToForkEpoch[testVersion]) * uint64(params.BeaconConfig().SlotsPerEpoch))) + require.NoError(t, err) - err = bootstrap.SetCurrentSyncCommittee(createRandomSyncCommittee()) - require.NoError(t, err) + err = bootstrap.SetCurrentSyncCommittee(createRandomSyncCommittee()) + require.NoError(t, err) - err = db.SaveLightClientBootstrap(ctx, []byte("blockRootAltair"), bootstrap) - require.NoError(t, err) + blockRoot := []byte("blockRootAltair" + version.String(testVersion)) - retrievedBootstrap, err := db.LightClientBootstrap(ctx, []byte("blockRootAltair")) - require.NoError(t, err) - require.DeepEqual(t, bootstrap.Header(), retrievedBootstrap.Header(), "retrieved bootstrap header does not match saved bootstrap header") - require.DeepEqual(t, bootstrap.CurrentSyncCommittee(), retrievedBootstrap.CurrentSyncCommittee(), "retrieved bootstrap sync committee does not match saved bootstrap sync committee") - savedBranch, err := bootstrap.CurrentSyncCommitteeBranch() - require.NoError(t, err) - retrievedBranch, err := retrievedBootstrap.CurrentSyncCommitteeBranch() - require.NoError(t, err) - require.DeepEqual(t, savedBranch, retrievedBranch, "retrieved bootstrap sync committee branch does not match saved bootstrap sync committee branch") - }) + err = db.SaveLightClientBootstrap(ctx, blockRoot, bootstrap) + require.NoError(t, err) - t.Run("Capella", func(t *testing.T) { - bootstrap, err := createDefaultLightClientBootstrap(primitives.Slot(uint64(params.BeaconConfig().CapellaForkEpoch) * uint64(params.BeaconConfig().SlotsPerEpoch))) - require.NoError(t, err) - - err = bootstrap.SetCurrentSyncCommittee(createRandomSyncCommittee()) - require.NoError(t, err) - - err = db.SaveLightClientBootstrap(ctx, []byte("blockRootCapella"), bootstrap) - require.NoError(t, err) - - retrievedBootstrap, err := db.LightClientBootstrap(ctx, []byte("blockRootCapella")) - require.NoError(t, err) - require.DeepEqual(t, bootstrap.Header(), retrievedBootstrap.Header(), "retrieved bootstrap header does not match saved bootstrap header") - require.DeepEqual(t, bootstrap.CurrentSyncCommittee(), retrievedBootstrap.CurrentSyncCommittee(), "retrieved bootstrap sync committee does not match saved bootstrap sync committee") - savedBranch, err := bootstrap.CurrentSyncCommitteeBranch() - require.NoError(t, err) - retrievedBranch, err := retrievedBootstrap.CurrentSyncCommitteeBranch() - require.NoError(t, err) - require.DeepEqual(t, savedBranch, retrievedBranch, "retrieved bootstrap sync committee branch does not match saved bootstrap sync committee branch") - }) - - t.Run("Deneb", func(t *testing.T) { - bootstrap, err := createDefaultLightClientBootstrap(primitives.Slot(uint64(params.BeaconConfig().DenebForkEpoch) * uint64(params.BeaconConfig().SlotsPerEpoch))) - require.NoError(t, err) - - err = bootstrap.SetCurrentSyncCommittee(createRandomSyncCommittee()) - require.NoError(t, err) - - err = db.SaveLightClientBootstrap(ctx, []byte("blockRootDeneb"), bootstrap) - require.NoError(t, err) - - retrievedBootstrap, err := db.LightClientBootstrap(ctx, []byte("blockRootDeneb")) - require.NoError(t, err) - require.DeepEqual(t, bootstrap.Header(), retrievedBootstrap.Header(), "retrieved bootstrap header does not match saved bootstrap header") - require.DeepEqual(t, bootstrap.CurrentSyncCommittee(), retrievedBootstrap.CurrentSyncCommittee(), "retrieved bootstrap sync committee does not match saved bootstrap sync committee") - savedBranch, err := bootstrap.CurrentSyncCommitteeBranch() - require.NoError(t, err) - retrievedBranch, err := retrievedBootstrap.CurrentSyncCommitteeBranch() - require.NoError(t, err) - require.DeepEqual(t, savedBranch, retrievedBranch, "retrieved bootstrap sync committee branch does not match saved bootstrap sync committee branch") - }) - - t.Run("Electra", func(t *testing.T) { - bootstrap, err := createDefaultLightClientBootstrap(primitives.Slot(uint64(params.BeaconConfig().ElectraForkEpoch) * uint64(params.BeaconConfig().SlotsPerEpoch))) - require.NoError(t, err) - - err = bootstrap.SetCurrentSyncCommittee(createRandomSyncCommittee()) - require.NoError(t, err) - - err = db.SaveLightClientBootstrap(ctx, []byte("blockRootElectra"), bootstrap) - require.NoError(t, err) - - retrievedBootstrap, err := db.LightClientBootstrap(ctx, []byte("blockRootElectra")) - require.NoError(t, err) - require.DeepEqual(t, bootstrap.Header(), retrievedBootstrap.Header(), "retrieved bootstrap header does not match saved bootstrap header") - require.DeepEqual(t, bootstrap.CurrentSyncCommittee(), retrievedBootstrap.CurrentSyncCommittee(), "retrieved bootstrap sync committee does not match saved bootstrap sync committee") - savedBranch, err := bootstrap.CurrentSyncCommitteeBranchElectra() - require.NoError(t, err) - retrievedBranch, err := retrievedBootstrap.CurrentSyncCommitteeBranchElectra() - require.NoError(t, err) - require.DeepEqual(t, savedBranch, retrievedBranch, "retrieved bootstrap sync committee branch does not match saved bootstrap sync committee branch") - }) + retrievedBootstrap, err := db.LightClientBootstrap(ctx, blockRoot) + require.NoError(t, err) + require.DeepEqual(t, bootstrap.Header(), retrievedBootstrap.Header(), "retrieved bootstrap header does not match saved bootstrap header") + require.DeepEqual(t, bootstrap.CurrentSyncCommittee(), retrievedBootstrap.CurrentSyncCommittee(), "retrieved bootstrap sync committee does not match saved bootstrap sync committee") + if testVersion >= version.Electra { + savedBranch, err := bootstrap.CurrentSyncCommitteeBranchElectra() + require.NoError(t, err) + retrievedBranch, err := retrievedBootstrap.CurrentSyncCommitteeBranchElectra() + require.NoError(t, err) + require.DeepEqual(t, savedBranch, retrievedBranch, "retrieved bootstrap sync committee branch does not match saved bootstrap sync committee branch") + } else { + savedBranch, err := bootstrap.CurrentSyncCommitteeBranch() + require.NoError(t, err) + retrievedBranch, err := retrievedBootstrap.CurrentSyncCommitteeBranch() + require.NoError(t, err) + require.DeepEqual(t, savedBranch, retrievedBranch, "retrieved bootstrap sync committee branch does not match saved bootstrap sync committee branch") + } + }) + } } func TestStore_LightClientBootstrap_MultipleBootstrapsWithSameSyncCommittee(t *testing.T) { diff --git a/changelog/bastin_refactor-lc-kv-tests.md b/changelog/bastin_refactor-lc-kv-tests.md new file mode 100644 index 0000000000..7d456d574a --- /dev/null +++ b/changelog/bastin_refactor-lc-kv-tests.md @@ -0,0 +1,3 @@ +### Ignored + +- Refactor light client kv tests. \ No newline at end of file