@@ -19,136 +19,78 @@ import (
19
19
"github.com/celestiaorg/go-header/store"
20
20
)
21
21
22
- func TestSyncer_Tail (t * testing.T ) {
22
+ func TestSyncer_TailInit (t * testing.T ) {
23
23
ctx , cancel := context .WithTimeout (context .Background (), time .Second * 5 )
24
24
t .Cleanup (cancel )
25
25
26
26
remoteStore := headertest .NewStore [* headertest.DummyHeader ](t , headertest .NewTestSuite (t ), 100 )
27
27
28
- ds := dssync .MutexWrap (datastore .NewMapDatastore ())
29
- localStore , err := store.NewStore [* headertest.DummyHeader ](ds )
30
- require .NoError (t , err )
31
- err = localStore .Start (ctx )
32
- require .NoError (t , err )
33
-
34
- syncer , err := NewSyncer [* headertest.DummyHeader ](
35
- remoteStore ,
36
- localStore ,
37
- headertest .NewDummySubscriber (),
38
- WithBlockTime (time .Second * 6 ),
39
- )
40
- require .NoError (t , err )
41
-
42
- tail , err := syncer .Tail (ctx )
43
- require .NoError (t , err )
44
- assert .NotNil (t , tail )
45
-
46
- time .Sleep (time .Millisecond * 10 )
47
-
48
- err = syncer .Start (ctx )
49
- require .NoError (t , err )
50
-
51
- time .Sleep (time .Millisecond * 10 )
52
-
53
- storeTail , err := localStore .Tail (ctx )
54
- require .NoError (t , err )
55
- assert .EqualValues (t , tail .Height (), storeTail .Height ())
56
-
57
- storeHead , err := localStore .Head (ctx )
58
- require .NoError (t , err )
59
- assert .EqualValues (t , remoteStore .Height (), storeHead .Height ())
60
- }
61
-
62
- func TestSyncer_TailInitFromHash (t * testing.T ) {
63
- ctx , cancel := context .WithTimeout (context .Background (), time .Second * 5 )
64
- t .Cleanup (cancel )
65
-
66
- remoteStore := headertest .NewStore [* headertest.DummyHeader ](t , headertest .NewTestSuite (t ), 100 )
67
-
68
- ds := dssync .MutexWrap (datastore .NewMapDatastore ())
69
- localStore , err := store.NewStore [* headertest.DummyHeader ](ds )
70
- require .NoError (t , err )
71
- err = localStore .Start (ctx )
72
- require .NoError (t , err )
73
-
74
28
expectedTail , err := remoteStore .GetByHeight (ctx , 69 )
75
29
require .NoError (t , err )
76
30
77
- syncer , err := NewSyncer [* headertest.DummyHeader ](
78
- remoteStore ,
79
- localStore ,
80
- headertest .NewDummySubscriber (),
81
- WithRecencyThreshold (time .Nanosecond ), // force recent requests
82
- WithBlockTime (time .Second * 6 ),
83
- WithSyncFromHash (expectedTail .Hash ()),
84
- )
85
- require .NoError (t , err )
86
-
87
- tail , err := syncer .Tail (ctx )
88
- require .NoError (t , err )
89
- assert .NotNil (t , tail )
90
- assert .EqualValues (t , tail .Height (), expectedTail .Height ())
91
-
92
- time .Sleep (time .Millisecond * 10 )
93
-
94
- err = syncer .Start (ctx )
95
- require .NoError (t , err )
96
-
97
- time .Sleep (time .Millisecond * 10 )
98
-
99
- storeTail , err := localStore .Tail (ctx )
100
- require .NoError (t , err )
101
- assert .EqualValues (t , tail .Height (), storeTail .Height ())
102
-
103
- storeHead , err := localStore .Head (ctx )
104
- require .NoError (t , err )
105
- assert .EqualValues (t , remoteStore .Height (), storeHead .Height ())
106
- }
107
-
108
- func TestSyncer_TailInitFromHeight (t * testing.T ) {
109
- ctx , cancel := context .WithTimeout (context .Background (), time .Second * 5 )
110
- t .Cleanup (cancel )
111
-
112
- remoteStore := headertest .NewStore [* headertest.DummyHeader ](t , headertest .NewTestSuite (t ), 100 )
113
-
114
- ds := dssync .MutexWrap (datastore .NewMapDatastore ())
115
- localStore , err := store.NewStore [* headertest.DummyHeader ](ds )
116
- require .NoError (t , err )
117
- err = localStore .Start (ctx )
118
- require .NoError (t , err )
119
-
120
- expectedTail , err := remoteStore .GetByHeight (ctx , 69 )
121
- require .NoError (t , err )
31
+ tests := []struct {
32
+ name string
33
+ option Option
34
+ expected func () * headertest.DummyHeader
35
+ }{
36
+ {
37
+ "Estimate" ,
38
+ func (p * Parameters ) {}, // noop to trigger estimation,
39
+ func () * headertest.DummyHeader {
40
+ remoteTail , err := remoteStore .Tail (ctx )
41
+ require .NoError (t , err )
42
+ return remoteTail
43
+ },
44
+ },
45
+ {
46
+ "SyncFromHash" ,
47
+ WithSyncFromHash (expectedTail .Hash ()),
48
+ func () * headertest.DummyHeader {
49
+ return expectedTail
50
+ },
51
+ },
52
+ {
53
+ "SyncFromHeight" ,
54
+ WithSyncFromHeight (expectedTail .Height ()),
55
+ func () * headertest.DummyHeader {
56
+ return expectedTail
57
+ },
58
+ },
59
+ }
122
60
123
- syncer , err := NewSyncer [* headertest.DummyHeader ](
124
- remoteStore ,
125
- localStore ,
126
- headertest .NewDummySubscriber (),
127
- WithRecencyThreshold (time .Nanosecond ), // force recent requests
128
- WithBlockTime (time .Second * 6 ),
129
- WithSyncFromHeight (expectedTail .Height ()),
130
- )
131
- require .NoError (t , err )
61
+ for _ , test := range tests {
62
+ t .Run (test .name , func (t * testing.T ) {
63
+ ds := dssync .MutexWrap (datastore .NewMapDatastore ())
64
+ localStore , err := store.NewStore [* headertest.DummyHeader ](ds )
65
+ require .NoError (t , err )
66
+ err = localStore .Start (ctx )
67
+ require .NoError (t , err )
132
68
133
- tail , err := syncer .Tail (ctx )
134
- require .NoError (t , err )
135
- assert .NotNil (t , tail )
136
- assert .EqualValues (t , tail .Height (), expectedTail .Height ())
69
+ syncer , err := NewSyncer [* headertest.DummyHeader ](
70
+ remoteStore ,
71
+ localStore ,
72
+ headertest .NewDummySubscriber (),
73
+ WithBlockTime (time .Second * 6 ),
74
+ test .option ,
75
+ )
76
+ require .NoError (t , err )
137
77
138
- time .Sleep (time .Millisecond * 10 )
78
+ err = syncer .Start (ctx )
79
+ require .NoError (t , err )
139
80
140
- err = syncer .Start (ctx )
141
- require .NoError (t , err )
81
+ time .Sleep (time .Millisecond * 100 )
142
82
143
- time . Sleep ( time . Millisecond * 10 )
83
+ expectedTail := test . expected ( )
144
84
145
- storeTail , err := localStore .Tail (ctx )
146
- require .NoError (t , err )
147
- assert .EqualValues (t , tail .Height (), storeTail .Height ())
85
+ storeTail , err := localStore .Tail (ctx )
86
+ require .NoError (t , err )
87
+ assert .EqualValues (t , expectedTail .Height (), storeTail .Height ())
148
88
149
- storeHead , err := localStore .Head (ctx )
150
- require .NoError (t , err )
151
- assert .EqualValues (t , remoteStore .Height (), storeHead .Height ())
89
+ storeHead , err := localStore .Head (ctx )
90
+ require .NoError (t , err )
91
+ assert .EqualValues (t , remoteStore .Height (), storeHead .Height ())
92
+ })
93
+ }
152
94
}
153
95
154
96
func TestSyncer_HeadConcurrencyError (t * testing.T ) {
@@ -537,7 +479,7 @@ type errorGetter struct{}
537
479
538
480
func (e errorGetter ) Head (
539
481
context.Context ,
540
- ... header.HeadOption [* headertest.DummyHeader ],
482
+ ... header.HeadOption [* headertest.DummyHeader ],
541
483
) (* headertest.DummyHeader , error ) {
542
484
time .Sleep (time .Millisecond * 1 )
543
485
return nil , fmt .Errorf ("error" )
0 commit comments