From ea28e3798a2e747ddeb05f9940a3f9cf38110ad2 Mon Sep 17 00:00:00 2001 From: Oleg Kovalov Date: Mon, 27 May 2024 15:15:29 +0200 Subject: [PATCH] fix(store): stop doing header verification in GetRangeByHeight (#180) --- store/store.go | 8 -------- store/store_test.go | 26 ++++++++++++++++++++++++-- 2 files changed, 24 insertions(+), 10 deletions(-) diff --git a/store/store.go b/store/store.go index 27b10496..ddffa3d0 100644 --- a/store/store.go +++ b/store/store.go @@ -260,14 +260,6 @@ func (s *Store[H]) GetRangeByHeight( if err != nil { return nil, err } - - for _, h := range headers { - err := from.Verify(h) - if err != nil { - return nil, err - } - from = h - } return headers, nil } diff --git a/store/store_test.go b/store/store_test.go index ac0fdb12..a96a1ef4 100644 --- a/store/store_test.go +++ b/store/store_test.go @@ -136,6 +136,29 @@ func TestStore_GetRangeByHeight_ExpectedRange(t *testing.T) { assert.Equal(t, lastHeaderInRangeHeight, out[len(out)-1].Height()) } +func TestStore_Append_BadHeader(t *testing.T) { + ctx, cancel := context.WithTimeout(context.Background(), time.Second*5) + t.Cleanup(cancel) + + suite := headertest.NewTestSuite(t) + + ds := sync.MutexWrap(datastore.NewMapDatastore()) + store, err := NewStoreWithHead(ctx, ds, suite.Head()) + require.NoError(t, err) + + err = store.Start(ctx) + require.NoError(t, err) + + head, err := store.Head(ctx) + require.NoError(t, err) + assert.EqualValues(t, suite.Head().Hash(), head.Hash()) + + in := suite.GenDummyHeaders(10) + in[0].VerifyFailure = true + err = store.Append(ctx, in...) + require.Error(t, err) +} + // TestStore_GetRange tests possible combinations of requests and ensures that // the store can handle them adequately (even malformed requests) func TestStore_GetRange(t *testing.T) { @@ -159,7 +182,7 @@ func TestStore_GetRange(t *testing.T) { err = store.Append(ctx, in...) require.NoError(t, err) - var tests = []struct { + tests := []struct { name string from uint64 to uint64 @@ -212,7 +235,6 @@ func TestStore_GetRange(t *testing.T) { assert.Equal(t, lastHeaderInRangeHeight, out[len(out)-1].Height()) }) } - } func TestStorePendingCacheMiss(t *testing.T) {