@@ -2,13 +2,12 @@ package gnosis_test
2
2
3
3
import (
4
4
"context"
5
+ "github.com/shutter-network/rolling-shutter/rolling-shutter/keyperimpl/gnosis/database"
5
6
"testing"
6
7
"time"
7
8
8
- "github.com/rs/zerolog/log"
9
9
"gotest.tools/assert"
10
10
11
- "github.com/shutter-network/rolling-shutter/rolling-shutter/keyper/database"
12
11
"github.com/shutter-network/rolling-shutter/rolling-shutter/keyperimpl/gnosis"
13
12
"github.com/shutter-network/rolling-shutter/rolling-shutter/medley/service"
14
13
"github.com/shutter-network/rolling-shutter/rolling-shutter/medley/testsetup"
@@ -18,28 +17,19 @@ func TestSyncMonitor_ThrowsErrorWhenBlockNotIncreasing(t *testing.T) {
18
17
ctx , cancel := context .WithCancel (context .Background ())
19
18
defer cancel ()
20
19
21
- dbpool , closeDB := testsetup .NewTestDBPool (ctx , t , database .Definition )
22
- defer closeDB ()
23
-
24
- _ , err := dbpool .Exec (ctx , `
25
- CREATE TABLE IF NOT EXISTS transaction_submitted_events_synced_until(
26
- enforce_one_row bool PRIMARY KEY DEFAULT true,
27
- block_hash bytea NOT NULL,
28
- block_number bigint NOT NULL CHECK (block_number >= 0),
29
- slot bigint NOT NULL CHECK (slot >= 0)
30
- );
31
- ` )
32
- if err != nil {
33
- t .Fatalf ("failed to create table: %v" , err )
34
- }
20
+ dbpool , dbclose := testsetup .NewTestDBPool (ctx , t , database .Definition )
21
+ defer dbclose ()
22
+ db := database .New (dbpool )
35
23
36
24
initialBlockNumber := int64 (100 )
37
- _ , err = dbpool .Exec (ctx , `
38
- INSERT INTO transaction_submitted_events_synced_until (block_hash, block_number, slot)
39
- VALUES ($1, $2, $3);
40
- ` , []byte {0x01 , 0x02 , 0x03 }, initialBlockNumber , 1 )
25
+
26
+ err := db .SetTransactionSubmittedEventsSyncedUntil (ctx , database.SetTransactionSubmittedEventsSyncedUntilParams {
27
+ BlockHash : []byte {0x01 , 0x02 , 0x03 },
28
+ BlockNumber : initialBlockNumber ,
29
+ Slot : 1 ,
30
+ })
41
31
if err != nil {
42
- t .Fatalf ("failed to insert initial data: %v" , err )
32
+ t .Fatalf ("failed to set initial synced data: %v" , err )
43
33
}
44
34
45
35
monitor := & gnosis.SyncMonitor {
@@ -72,41 +62,21 @@ func TestSyncMonitor_HandlesBlockNumberIncreasing(t *testing.T) {
72
62
73
63
dbpool , closeDB := testsetup .NewTestDBPool (ctx , t , database .Definition )
74
64
defer closeDB ()
75
-
76
- _ , err := dbpool .Exec (ctx , `
77
- CREATE TABLE IF NOT EXISTS transaction_submitted_events_synced_until(
78
- enforce_one_row bool PRIMARY KEY DEFAULT true,
79
- block_hash bytea NOT NULL,
80
- block_number bigint NOT NULL CHECK (block_number >= 0),
81
- slot bigint NOT NULL CHECK (slot >= 0)
82
- );
83
- ` )
84
- if err != nil {
85
- t .Fatalf ("failed to create table: %v" , err )
86
- }
65
+ db := database .New (dbpool )
87
66
88
67
initialBlockNumber := int64 (100 )
89
- _ , err = dbpool .Exec (ctx , `
90
- INSERT INTO transaction_submitted_events_synced_until (block_hash, block_number, slot)
91
- VALUES ($1, $2, $3);
92
- ` , []byte {0x01 , 0x02 , 0x03 }, initialBlockNumber , 1 )
93
- if err != nil {
94
- t .Fatalf ("failed to insert initial data: %v" , err )
95
- }
96
-
97
- var count int
98
- err = dbpool .QueryRow (ctx , `
99
- SELECT count(*) FROM transaction_submitted_events_synced_until
100
- WHERE block_number = $1;
101
- ` , initialBlockNumber ).Scan (& count )
68
+ err := db .SetTransactionSubmittedEventsSyncedUntil (ctx , database.SetTransactionSubmittedEventsSyncedUntilParams {
69
+ BlockHash : []byte {0x01 , 0x02 , 0x03 },
70
+ BlockNumber : initialBlockNumber ,
71
+ Slot : 1 ,
72
+ })
102
73
if err != nil {
103
- t .Fatalf ("failed to verify initial data: %v" , err )
74
+ t .Fatalf ("failed to set initial synced data: %v" , err )
104
75
}
105
76
106
- assert .Equal (t , 1 , count , "initial data should be inserted" )
107
-
108
77
monitor := & gnosis.SyncMonitor {
109
- DBPool : dbpool ,
78
+ DBPool : dbpool ,
79
+ CheckInterval : 30 * time .Second ,
110
80
}
111
81
112
82
_ , deferFn := service .RunBackground (ctx , monitor )
@@ -115,18 +85,12 @@ func TestSyncMonitor_HandlesBlockNumberIncreasing(t *testing.T) {
115
85
doneCh := make (chan struct {})
116
86
go func () {
117
87
for i := 0 ; i < 5 ; i ++ {
118
- // Simulate block number increment by updating the database
119
88
newBlockNumber := initialBlockNumber + int64 (i + 1 )
120
- log .Info ().
121
- Int64 ("previous-block-number" , initialBlockNumber + int64 (i )).
122
- Int64 ("new-block-number" , newBlockNumber ).
123
- Msg ("comparing consecutive blocks" )
124
-
125
- _ , err := dbpool .Exec (ctx , `
126
- UPDATE transaction_submitted_events_synced_until
127
- SET block_number = $1
128
- WHERE block_number = $2;
129
- ` , newBlockNumber , initialBlockNumber + int64 (i ))
89
+ err := db .SetTransactionSubmittedEventsSyncedUntil (ctx , database.SetTransactionSubmittedEventsSyncedUntilParams {
90
+ BlockHash : []byte {0x01 , 0x02 , 0x03 },
91
+ BlockNumber : newBlockNumber ,
92
+ Slot : 1 ,
93
+ })
130
94
if err != nil {
131
95
t .Errorf ("failed to update block number: %v" , err )
132
96
return
@@ -139,43 +103,28 @@ func TestSyncMonitor_HandlesBlockNumberIncreasing(t *testing.T) {
139
103
}()
140
104
141
105
<- doneCh
142
- var finalBlockNumber int64
143
- err = dbpool .QueryRow (ctx , `SELECT block_number FROM transaction_submitted_events_synced_until LIMIT 1;` ).Scan (& finalBlockNumber )
106
+ syncedData , err := db .GetTransactionSubmittedEventsSyncedUntil (ctx )
144
107
if err != nil {
145
108
t .Fatalf ("failed to retrieve final block number: %v" , err )
146
109
}
147
110
148
- assert .Equal (t , initialBlockNumber + 5 , finalBlockNumber , "block number should have been incremented correctly" )
111
+ assert .Equal (t , initialBlockNumber + 5 , syncedData . BlockNumber , "block number should have been incremented correctly" )
149
112
}
150
113
151
114
func TestSyncMonitor_ContinuesWhenNoRows (t * testing.T ) {
152
- parentCtx , cancelParent := context .WithCancel (context .Background ())
153
- defer cancelParent ()
154
-
155
- dbpool , closeDB := testsetup .NewTestDBPool (parentCtx , t , database .Definition )
156
- defer func () {
157
- closeDB ()
158
- cancelParent ()
159
- }()
115
+ ctx , cancel := context .WithCancel (context .Background ())
116
+ defer cancel ()
160
117
161
- _ , err := dbpool .Exec (parentCtx , `
162
- CREATE TABLE IF NOT EXISTS transaction_submitted_events_synced_until(
163
- enforce_one_row bool PRIMARY KEY DEFAULT true,
164
- block_hash bytea NOT NULL,
165
- block_number bigint NOT NULL CHECK (block_number >= 0),
166
- slot bigint NOT NULL CHECK (slot >= 0)
167
- );
168
- ` )
169
- if err != nil {
170
- t .Fatalf ("failed to create table: %v" , err )
171
- }
118
+ dbpool , closeDB := testsetup .NewTestDBPool (ctx , t , database .Definition )
119
+ defer closeDB ()
120
+ _ = database .New (dbpool )
172
121
173
122
monitor := & gnosis.SyncMonitor {
174
123
DBPool : dbpool ,
175
124
CheckInterval : 5 * time .Second ,
176
125
}
177
126
178
- monitorCtx , cancelMonitor := context .WithCancel (parentCtx )
127
+ monitorCtx , cancelMonitor := context .WithCancel (ctx )
179
128
defer cancelMonitor ()
180
129
181
130
errCh := make (chan error , 1 )
0 commit comments