Skip to content

Commit e2b0520

Browse files
committed
Encapsulate hint in sync package
1 parent 2c9a212 commit e2b0520

30 files changed

Lines changed: 356 additions & 238 deletions

.mockery.yaml

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -58,6 +58,11 @@ packages:
5858
dir: ./block/internal/syncing
5959
pkgname: syncing
6060
filename: syncer_mock.go
61+
HeightStore:
62+
config:
63+
dir: ./block/internal/syncing
64+
pkgname: syncing
65+
filename: height_store_mock.go
6166
github.com/evstack/ev-node/block/internal/common:
6267
interfaces:
6368
Broadcaster:

apps/evm/cmd/rollback.go

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@ import (
55
"errors"
66
"fmt"
77

8+
"github.com/evstack/ev-node/pkg/sync"
89
ds "github.com/ipfs/go-datastore"
910
kt "github.com/ipfs/go-datastore/keytransform"
1011
"github.com/spf13/cobra"
@@ -13,7 +14,6 @@ import (
1314
"github.com/evstack/ev-node/node"
1415
rollcmd "github.com/evstack/ev-node/pkg/cmd"
1516
"github.com/evstack/ev-node/pkg/store"
16-
"github.com/evstack/ev-node/types"
1717
)
1818

1919
// NewRollbackCmd creates a command to rollback ev-node state by one height.
@@ -70,7 +70,7 @@ func NewRollbackCmd() *cobra.Command {
7070
}
7171

7272
// rollback ev-node goheader state
73-
headerStore, err := goheaderstore.NewStore[*types.SignedHeaderWithDAHint](
73+
headerStore, err := goheaderstore.NewStore[*sync.SignedHeaderWithDAHint](
7474
evolveDB,
7575
goheaderstore.WithStorePrefix("headerSync"),
7676
goheaderstore.WithMetrics(),
@@ -79,7 +79,7 @@ func NewRollbackCmd() *cobra.Command {
7979
return err
8080
}
8181

82-
dataStore, err := goheaderstore.NewStore[*types.Data](
82+
dataStore, err := goheaderstore.NewStore[*sync.DataWithDAHint](
8383
evolveDB,
8484
goheaderstore.WithStorePrefix("dataSync"),
8585
goheaderstore.WithMetrics(),

apps/testapp/cmd/rollback.go

Lines changed: 4 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -5,13 +5,12 @@ import (
55
"errors"
66
"fmt"
77

8+
goheaderstore "github.com/celestiaorg/go-header/store"
89
kvexecutor "github.com/evstack/ev-node/apps/testapp/kv"
910
"github.com/evstack/ev-node/node"
1011
rollcmd "github.com/evstack/ev-node/pkg/cmd"
1112
"github.com/evstack/ev-node/pkg/store"
12-
"github.com/evstack/ev-node/types"
13-
14-
goheaderstore "github.com/celestiaorg/go-header/store"
13+
"github.com/evstack/ev-node/pkg/sync"
1514
ds "github.com/ipfs/go-datastore"
1615
kt "github.com/ipfs/go-datastore/keytransform"
1716
"github.com/spf13/cobra"
@@ -76,7 +75,7 @@ func NewRollbackCmd() *cobra.Command {
7675
}
7776

7877
// rollback ev-node goheader state
79-
headerStore, err := goheaderstore.NewStore[*types.SignedHeaderWithDAHint](
78+
headerStore, err := goheaderstore.NewStore[*sync.SignedHeaderWithDAHint](
8079
evolveDB,
8180
goheaderstore.WithStorePrefix("headerSync"),
8281
goheaderstore.WithMetrics(),
@@ -85,7 +84,7 @@ func NewRollbackCmd() *cobra.Command {
8584
return err
8685
}
8786

88-
dataStore, err := goheaderstore.NewStore[*types.Data](
87+
dataStore, err := goheaderstore.NewStore[*sync.DataWithDAHint](
8988
evolveDB,
9089
goheaderstore.WithStorePrefix("dataSync"),
9190
goheaderstore.WithMetrics(),

block/components.go

Lines changed: 4 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,6 @@ import (
99
"github.com/rs/zerolog"
1010

1111
"github.com/evstack/ev-node/block/internal/cache"
12-
"github.com/evstack/ev-node/block/internal/common"
1312
"github.com/evstack/ev-node/block/internal/executing"
1413
"github.com/evstack/ev-node/block/internal/reaping"
1514
"github.com/evstack/ev-node/block/internal/submitting"
@@ -158,8 +157,8 @@ func NewSyncComponents(
158157
metrics,
159158
config,
160159
genesis,
161-
common.NewDecorator[*types.SignedHeader](headerStore),
162-
common.NewDecorator[*types.Data](dataStore),
160+
headerStore,
161+
dataStore,
163162
logger,
164163
blockOpts,
165164
errorCh,
@@ -223,8 +222,8 @@ func NewAggregatorComponents(
223222
metrics,
224223
config,
225224
genesis,
226-
common.NewDecorator[*types.SignedHeader](headerBroadcaster),
227-
common.NewDecorator[*types.Data](dataBroadcaster),
225+
headerBroadcaster,
226+
dataBroadcaster,
228227
logger,
229228
blockOpts,
230229
errorCh,

block/internal/common/broadcaster_mock.go

Lines changed: 47 additions & 19 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

block/internal/common/expected_interfaces.go

Lines changed: 25 additions & 47 deletions
Original file line numberDiff line numberDiff line change
@@ -10,56 +10,34 @@ import (
1010
)
1111

1212
type (
13-
HeaderP2PBroadcaster = Decorator[*types.SignedHeader]
14-
DataP2PBroadcaster = Decorator[*types.Data]
13+
HeaderP2PBroadcaster = Broadcaster[*types.SignedHeader]
14+
DataP2PBroadcaster = Broadcaster[*types.Data]
1515
)
1616

1717
// Broadcaster interface for P2P broadcasting
1818
type Broadcaster[H header.Header[H]] interface {
1919
WriteToStoreAndBroadcast(ctx context.Context, payload H, opts ...pubsub.PubOpt) error
20-
Store() header.Store[H]
2120
AppendDAHint(ctx context.Context, daHeight uint64, hashes ...types.Hash) error
22-
}
23-
24-
// Decorator to access the the payload type without the container
25-
type Decorator[H header.Header[H]] struct {
26-
nested Broadcaster[*types.DAHeightHintContainer[H]]
27-
}
28-
29-
func NewDecorator[H header.Header[H]](nested Broadcaster[*types.DAHeightHintContainer[H]]) Decorator[H] {
30-
return Decorator[H]{nested: nested}
31-
}
32-
33-
func (d Decorator[H]) WriteToStoreAndBroadcast(ctx context.Context, payload H, opts ...pubsub.PubOpt) error {
34-
return d.nested.WriteToStoreAndBroadcast(ctx, &types.DAHeightHintContainer[H]{Entry: payload}, opts...)
35-
}
36-
37-
func (d Decorator[H]) Store() HeightStore[H] {
38-
return HeightStoreImpl[H]{store: d.nested.Store()}
39-
}
40-
func (d Decorator[H]) XStore() header.Store[*types.DAHeightHintContainer[H]] {
41-
return d.nested.Store()
42-
}
43-
44-
func (d Decorator[H]) AppendDAHint(ctx context.Context, daHeight uint64, hashes ...types.Hash) error {
45-
return d.nested.AppendDAHint(ctx, daHeight, hashes...)
46-
}
47-
48-
// HeightStore is a subset of goheader.Store
49-
type HeightStore[H header.Header[H]] interface {
50-
GetByHeight(context.Context, uint64) (H, error)
51-
}
52-
53-
type HeightStoreImpl[H header.Header[H]] struct {
54-
store header.Store[*types.DAHeightHintContainer[H]]
55-
}
56-
57-
func (s HeightStoreImpl[H]) GetByHeight(ctx context.Context, height uint64) (H, error) {
58-
var zero H
59-
v, err := s.store.GetByHeight(ctx, height)
60-
if err != nil {
61-
return zero, err
62-
}
63-
return v.Entry, nil
64-
65-
}
21+
GetByHeight(ctx context.Context, height uint64) (H, uint64, error)
22+
}
23+
24+
//
25+
//// Decorator to access the payload type without the container
26+
//type Decorator[H header.Header[H]] struct {
27+
// nested Broadcaster[*sync.DAHeightHintContainer[H]]
28+
//}
29+
//
30+
//func NewDecorator[H header.Header[H]](nested Broadcaster[*sync.DAHeightHintContainer[H]]) Decorator[H] {
31+
// return Decorator[H]{nested: nested}
32+
//}
33+
//
34+
//func (d Decorator[H]) WriteToStoreAndBroadcast(ctx context.Context, payload H, opts ...pubsub.PubOpt) error {
35+
// return d.nested.WriteToStoreAndBroadcast(ctx, &sync.DAHeightHintContainer[H]{Entry: payload}, opts...)
36+
//}
37+
//
38+
//func (d Decorator[H]) AppendDAHint(ctx context.Context, daHeight uint64, hashes ...types.Hash) error {
39+
// return d.nested.AppendDAHint(ctx, daHeight, hashes...)
40+
//}
41+
//func (d Decorator[H]) GetByHeight(ctx context.Context, height uint64) (H, error) {
42+
// panic("not implemented")
43+
//}

block/internal/executing/executor_lazy_test.go

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -47,7 +47,7 @@ func TestLazyMode_ProduceBlockLogic(t *testing.T) {
4747

4848
mockExec := testmocks.NewMockExecutor(t)
4949
mockSeq := testmocks.NewMockSequencer(t)
50-
hb := common.NewMockBroadcaster[*types.SignedHeaderWithDAHint](t)
50+
hb := common.NewMockBroadcaster[*types.SignedHeader](t)
5151
hb.EXPECT().WriteToStoreAndBroadcast(mock.Anything, mock.Anything).Return(nil).Maybe()
5252
db := common.NewMockBroadcaster[*types.Data](t)
5353
db.EXPECT().WriteToStoreAndBroadcast(mock.Anything, mock.Anything).Return(nil).Maybe()
@@ -157,7 +157,7 @@ func TestRegularMode_ProduceBlockLogic(t *testing.T) {
157157

158158
mockExec := testmocks.NewMockExecutor(t)
159159
mockSeq := testmocks.NewMockSequencer(t)
160-
hb := common.NewMockBroadcaster[*types.SignedHeaderWithDAHint](t)
160+
hb := common.NewMockBroadcaster[*types.SignedHeader](t)
161161
hb.EXPECT().WriteToStoreAndBroadcast(mock.Anything, mock.Anything).Return(nil).Maybe()
162162
db := common.NewMockBroadcaster[*types.Data](t)
163163
db.EXPECT().WriteToStoreAndBroadcast(mock.Anything, mock.Anything).Return(nil).Maybe()

block/internal/executing/executor_logic_test.go

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -69,7 +69,7 @@ func TestProduceBlock_EmptyBatch_SetsEmptyDataHash(t *testing.T) {
6969
mockSeq := testmocks.NewMockSequencer(t)
7070

7171
// Broadcasters are required by produceBlock; use generated mocks
72-
hb := common.NewMockBroadcaster[*types.SignedHeaderWithDAHint](t)
72+
hb := common.NewMockBroadcaster[*types.SignedHeader](t)
7373
hb.EXPECT().WriteToStoreAndBroadcast(mock.Anything, mock.Anything).Return(nil).Maybe()
7474
db := common.NewMockBroadcaster[*types.Data](t)
7575
db.EXPECT().WriteToStoreAndBroadcast(mock.Anything, mock.Anything).Return(nil).Maybe()
@@ -156,7 +156,7 @@ func TestPendingLimit_SkipsProduction(t *testing.T) {
156156

157157
mockExec := testmocks.NewMockExecutor(t)
158158
mockSeq := testmocks.NewMockSequencer(t)
159-
hb := common.NewMockBroadcaster[*types.SignedHeaderWithDAHint](t)
159+
hb := common.NewMockBroadcaster[*types.SignedHeader](t)
160160
hb.EXPECT().WriteToStoreAndBroadcast(mock.Anything, mock.Anything).Return(nil).Maybe()
161161
db := common.NewMockBroadcaster[*types.Data](t)
162162
db.EXPECT().WriteToStoreAndBroadcast(mock.Anything, mock.Anything).Return(nil).Maybe()

block/internal/executing/executor_restart_test.go

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -47,7 +47,7 @@ func TestExecutor_RestartUsesPendingHeader(t *testing.T) {
4747
// Create first executor instance
4848
mockExec1 := testmocks.NewMockExecutor(t)
4949
mockSeq1 := testmocks.NewMockSequencer(t)
50-
hb1 := common.NewMockBroadcaster[*types.SignedHeaderWithDAHint](t)
50+
hb1 := common.NewMockBroadcaster[*types.SignedHeader](t)
5151
hb1.EXPECT().WriteToStoreAndBroadcast(mock.Anything, mock.Anything).Return(nil).Maybe()
5252
db1 := common.NewMockBroadcaster[*types.Data](t)
5353
db1.EXPECT().WriteToStoreAndBroadcast(mock.Anything, mock.Anything).Return(nil).Maybe()
@@ -166,7 +166,7 @@ func TestExecutor_RestartUsesPendingHeader(t *testing.T) {
166166
// Create second executor instance (restart scenario)
167167
mockExec2 := testmocks.NewMockExecutor(t)
168168
mockSeq2 := testmocks.NewMockSequencer(t)
169-
hb2 := common.NewMockBroadcaster[*types.SignedHeaderWithDAHint](t)
169+
hb2 := common.NewMockBroadcaster[*types.SignedHeader](t)
170170
hb2.EXPECT().WriteToStoreAndBroadcast(mock.Anything, mock.Anything).Return(nil).Maybe()
171171
db2 := common.NewMockBroadcaster[*types.Data](t)
172172
db2.EXPECT().WriteToStoreAndBroadcast(mock.Anything, mock.Anything).Return(nil).Maybe()
@@ -264,7 +264,7 @@ func TestExecutor_RestartNoPendingHeader(t *testing.T) {
264264
// Create first executor and produce one block
265265
mockExec1 := testmocks.NewMockExecutor(t)
266266
mockSeq1 := testmocks.NewMockSequencer(t)
267-
hb1 := common.NewMockBroadcaster[*types.SignedHeaderWithDAHint](t)
267+
hb1 := common.NewMockBroadcaster[*types.SignedHeader](t)
268268
hb1.EXPECT().WriteToStoreAndBroadcast(mock.Anything, mock.Anything).Return(nil).Maybe()
269269
db1 := common.NewMockBroadcaster[*types.Data](t)
270270
db1.EXPECT().WriteToStoreAndBroadcast(mock.Anything, mock.Anything).Return(nil).Maybe()
@@ -316,7 +316,7 @@ func TestExecutor_RestartNoPendingHeader(t *testing.T) {
316316
// Create second executor (restart)
317317
mockExec2 := testmocks.NewMockExecutor(t)
318318
mockSeq2 := testmocks.NewMockSequencer(t)
319-
hb2 := common.NewMockBroadcaster[*types.SignedHeaderWithDAHint](t)
319+
hb2 := common.NewMockBroadcaster[*types.SignedHeader](t)
320320
hb2.EXPECT().WriteToStoreAndBroadcast(mock.Anything, mock.Anything).Return(nil).Maybe()
321321
db2 := common.NewMockBroadcaster[*types.Data](t)
322322
db2.EXPECT().WriteToStoreAndBroadcast(mock.Anything, mock.Anything).Return(nil).Maybe()

block/internal/executing/executor_test.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -39,7 +39,7 @@ func TestExecutor_BroadcasterIntegration(t *testing.T) {
3939
}
4040

4141
// Create mock broadcasters
42-
headerBroadcaster := common.NewMockBroadcaster[*types.SignedHeaderWithDAHint](t)
42+
headerBroadcaster := common.NewMockBroadcaster[*types.SignedHeader](t)
4343
dataBroadcaster := common.NewMockBroadcaster[*types.Data](t)
4444

4545
// Create executor with broadcasters

0 commit comments

Comments
 (0)