Skip to content

Commit c15341a

Browse files
moved sync monitor to keyper core from medley
1 parent 97f317d commit c15341a

File tree

4 files changed

+43
-15
lines changed

4 files changed

+43
-15
lines changed

rolling-shutter/medley/syncmonitor/syncmonitor_test.go renamed to rolling-shutter/keyper/syncmonitor/syncmonitor_test.go

Lines changed: 41 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@ package syncmonitor
22

33
import (
44
"context"
5+
"sync"
56
"testing"
67
"time"
78

@@ -16,14 +17,23 @@ import (
1617

1718
// MockSyncState is a mock implementation of BlockSyncState for testing.
1819
type MockSyncState struct {
20+
mu sync.Mutex
1921
blockNumber int64
2022
err error
2123
}
2224

2325
func (m *MockSyncState) GetSyncedBlockNumber(_ context.Context) (int64, error) {
26+
m.mu.Lock()
27+
defer m.mu.Unlock()
2428
return m.blockNumber, m.err
2529
}
2630

31+
func (m *MockSyncState) SetBlockNumber(n int64) {
32+
m.mu.Lock()
33+
defer m.mu.Unlock()
34+
m.blockNumber = n
35+
}
36+
2737
func setupTestData(ctx context.Context, t *testing.T, dbpool *pgxpool.Pool) {
2838
t.Helper()
2939
keyperdb := database.New(dbpool)
@@ -78,6 +88,11 @@ func TestSyncMonitor_ThrowsErrorWhenBlockNotIncreasing(t *testing.T) {
7888
case <-time.After(5 * time.Second):
7989
t.Fatal("expected an error, but none was returned")
8090
}
91+
92+
// Verify final state
93+
finalBlockNumber, err := mockSyncState.GetSyncedBlockNumber(ctx)
94+
assert.NilError(t, err)
95+
assert.Equal(t, initialBlockNumber, finalBlockNumber)
8196
}
8297

8398
func TestSyncMonitor_HandlesBlockNumberIncreasing(t *testing.T) {
@@ -96,25 +111,30 @@ func TestSyncMonitor_HandlesBlockNumberIncreasing(t *testing.T) {
96111

97112
monitor := &SyncMonitor{
98113
DBPool: dbpool,
99-
CheckInterval: 5 * time.Second,
114+
CheckInterval: 200 * time.Millisecond,
100115
SyncState: mockSyncState,
101116
}
102117

103-
_, deferFn := service.RunBackground(ctx, monitor)
104-
defer deferFn()
105-
106-
doneCh := make(chan struct{})
118+
monitorCtx, cancelMonitor := context.WithCancel(ctx)
119+
errCh := make(chan error, 1)
107120
go func() {
108-
for i := 0; i < 5; i++ {
109-
time.Sleep(5 * time.Second)
110-
mockSyncState.blockNumber = initialBlockNumber + int64(i+1)
121+
if err := service.RunWithSighandler(monitorCtx, monitor); err != nil {
122+
errCh <- err
111123
}
112-
113-
doneCh <- struct{}{}
114124
}()
115125

116-
<-doneCh
117-
assert.Equal(t, initialBlockNumber+5, mockSyncState.blockNumber, "block number should have been incremented correctly")
126+
// Update block numbers more quickly
127+
for i := 0; i < 5; i++ {
128+
time.Sleep(200 * time.Millisecond)
129+
mockSyncState.SetBlockNumber(initialBlockNumber + int64(i+1))
130+
}
131+
132+
cancelMonitor()
133+
134+
// Verify final state
135+
finalBlockNumber, err := mockSyncState.GetSyncedBlockNumber(ctx)
136+
assert.NilError(t, err)
137+
assert.Equal(t, initialBlockNumber+5, finalBlockNumber, "block number should have been incremented correctly")
118138
}
119139

120140
func TestSyncMonitor_SkipsWhenDKGIsRunning(t *testing.T) {
@@ -165,7 +185,9 @@ func TestSyncMonitor_SkipsWhenDKGIsRunning(t *testing.T) {
165185
}
166186

167187
// Verify the block number hasn't changed
168-
assert.Equal(t, initialBlockNumber, mockSyncState.blockNumber, "block number should remain unchanged")
188+
finalBlockNumber, err := mockSyncState.GetSyncedBlockNumber(ctx)
189+
assert.NilError(t, err)
190+
assert.Equal(t, initialBlockNumber, finalBlockNumber, "block number should remain unchanged")
169191
}
170192

171193
func TestSyncMonitor_RunsNormallyWhenNoEons(t *testing.T) {
@@ -233,6 +255,7 @@ func TestSyncMonitor_ContinuesWhenNoRows(t *testing.T) {
233255
mockSyncState := &MockSyncState{
234256
err: pgx.ErrNoRows,
235257
}
258+
mockSyncState.SetBlockNumber(0) // Initialize block number
236259

237260
monitor := &SyncMonitor{
238261
DBPool: dbpool,
@@ -303,4 +326,9 @@ func TestSyncMonitor_RunsNormallyWithCompletedDKG(t *testing.T) {
303326
case <-time.After(1 * time.Second):
304327
t.Fatalf("expected monitor to throw error, but no error returned")
305328
}
329+
330+
// Verify final state if needed
331+
finalBlockNumber, err := mockSyncState.GetSyncedBlockNumber(ctx)
332+
assert.NilError(t, err)
333+
assert.Equal(t, initialBlockNumber, finalBlockNumber)
306334
}

rolling-shutter/keyperimpl/gnosis/keyper.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@ import (
1717
"github.com/shutter-network/rolling-shutter/rolling-shutter/keyper"
1818
"github.com/shutter-network/rolling-shutter/rolling-shutter/keyper/epochkghandler"
1919
"github.com/shutter-network/rolling-shutter/rolling-shutter/keyper/kprconfig"
20+
"github.com/shutter-network/rolling-shutter/rolling-shutter/keyper/syncmonitor"
2021
"github.com/shutter-network/rolling-shutter/rolling-shutter/keyperimpl/gnosis/database"
2122
"github.com/shutter-network/rolling-shutter/rolling-shutter/medley/beaconapiclient"
2223
"github.com/shutter-network/rolling-shutter/rolling-shutter/medley/broker"
@@ -25,7 +26,6 @@ import (
2526
"github.com/shutter-network/rolling-shutter/rolling-shutter/medley/db"
2627
"github.com/shutter-network/rolling-shutter/rolling-shutter/medley/service"
2728
"github.com/shutter-network/rolling-shutter/rolling-shutter/medley/slotticker"
28-
"github.com/shutter-network/rolling-shutter/rolling-shutter/medley/syncmonitor"
2929
"github.com/shutter-network/rolling-shutter/rolling-shutter/p2p"
3030
)
3131

rolling-shutter/keyperimpl/shutterservice/keyper.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,13 +16,13 @@ import (
1616
"github.com/shutter-network/rolling-shutter/rolling-shutter/keyper"
1717
"github.com/shutter-network/rolling-shutter/rolling-shutter/keyper/epochkghandler"
1818
"github.com/shutter-network/rolling-shutter/rolling-shutter/keyper/kprconfig"
19+
"github.com/shutter-network/rolling-shutter/rolling-shutter/keyper/syncmonitor"
1920
"github.com/shutter-network/rolling-shutter/rolling-shutter/keyperimpl/shutterservice/database"
2021
"github.com/shutter-network/rolling-shutter/rolling-shutter/medley/broker"
2122
"github.com/shutter-network/rolling-shutter/rolling-shutter/medley/chainsync"
2223
syncevent "github.com/shutter-network/rolling-shutter/rolling-shutter/medley/chainsync/event"
2324
"github.com/shutter-network/rolling-shutter/rolling-shutter/medley/db"
2425
"github.com/shutter-network/rolling-shutter/rolling-shutter/medley/service"
25-
"github.com/shutter-network/rolling-shutter/rolling-shutter/medley/syncmonitor"
2626
"github.com/shutter-network/rolling-shutter/rolling-shutter/p2p"
2727
)
2828

0 commit comments

Comments
 (0)