@@ -120,15 +120,6 @@ func TestDBErrorHandling(t *testing.T) {
120
120
}
121
121
}
122
122
t .Run ("acquire" , func (t * testing.T ) {
123
- t .Run ("bad tx" , func (t * testing.T ) {
124
- client , mock , _ := setup ()
125
- badTx := errors .New ("transaction begin error" )
126
- mock .ExpectQuery (`SELECT nextval\('locks_rvn'\)` ).WillReturnRows (sqlmock .NewRows ([]string {"nextval" }).AddRow (1 ))
127
- mock .ExpectBegin ().WillReturnError (badTx )
128
- if _ , err := client .Acquire ("bad-tx" ); ! errors .Is (err , badTx ) {
129
- t .Errorf ("expected tx error missing: %v" , err )
130
- }
131
- })
132
123
t .Run ("bad rvn" , func (t * testing.T ) {
133
124
client , mock , _ := setup ()
134
125
badRVN := errors .New ("cannot load next RVN" )
@@ -141,103 +132,32 @@ func TestDBErrorHandling(t *testing.T) {
141
132
client , mock , _ := setup ()
142
133
badInsert := errors .New ("cannot insert" )
143
134
mock .ExpectQuery (`SELECT nextval\('locks_rvn'\)` ).WillReturnRows (sqlmock .NewRows ([]string {"nextval" }).AddRow (1 ))
144
- mock .ExpectBegin ()
145
- mock .ExpectExec (`INSERT INTO locks (.+)` ).WithArgs (sqlmock .AnyArg (), sqlmock .AnyArg (), sqlmock .AnyArg (), sqlmock .AnyArg (), sqlmock .AnyArg (), sqlmock .AnyArg ()).WillReturnError (badInsert )
135
+ mock .ExpectQuery (`INSERT INTO locks (.+)` ).WithArgs (sqlmock .AnyArg (), sqlmock .AnyArg (), sqlmock .AnyArg (), sqlmock .AnyArg (), sqlmock .AnyArg (), sqlmock .AnyArg ()).WillReturnError (badInsert )
146
136
if _ , err := client .Acquire ("bad-insert" ); ! errors .Is (err , badInsert ) {
147
137
t .Errorf ("expected RVN error missing: %v" , err )
148
138
}
149
139
})
150
- t .Run ("bad RVN confirmation" , func (t * testing.T ) {
151
- client , mock , _ := setup ()
152
- badRVN := errors .New ("cannot confirm RVN" )
153
- mock .ExpectQuery (`SELECT nextval\('locks_rvn'\)` ).WillReturnRows (sqlmock .NewRows ([]string {"nextval" }).AddRow (1 ))
154
- mock .ExpectBegin ()
155
- mock .ExpectExec (`INSERT INTO locks (.+)` ).WithArgs (sqlmock .AnyArg (), sqlmock .AnyArg (), sqlmock .AnyArg (), sqlmock .AnyArg (), sqlmock .AnyArg (), sqlmock .AnyArg ()).WillReturnResult (sqlmock .NewResult (0 , 1 ))
156
- mock .ExpectQuery (`SELECT "record_version_number", "data", "owner" FROM locks WHERE name = (.+)` ).WithArgs (sqlmock .AnyArg ()).WillReturnError (badRVN )
157
- if _ , err := client .Acquire ("bad-insert" ); ! errors .Is (err , badRVN ) {
158
- t .Errorf ("expected RVN confirmation error missing: %v" , err )
159
- }
160
- })
161
- t .Run ("bad commit" , func (t * testing.T ) {
162
- client , mock , _ := setup ()
163
- badCommit := errors .New ("cannot confirm RVN" )
164
- mock .ExpectQuery (`SELECT nextval\('locks_rvn'\)` ).WillReturnRows (sqlmock .NewRows ([]string {"nextval" }).AddRow (1 ))
165
- mock .ExpectBegin ()
166
- mock .ExpectExec (`INSERT INTO locks (.+)` ).WithArgs (sqlmock .AnyArg (), sqlmock .AnyArg (), sqlmock .AnyArg (), sqlmock .AnyArg (), sqlmock .AnyArg (), sqlmock .AnyArg ()).WillReturnResult (sqlmock .NewResult (0 , 1 ))
167
- mock .ExpectQuery (`SELECT "record_version_number", "data", "owner" FROM locks WHERE name = (.+)` ).
168
- WithArgs (sqlmock .AnyArg ()).
169
- WillReturnRows (
170
- sqlmock .NewRows ([]string {
171
- "record_version_number" ,
172
- "data" ,
173
- "owner" ,
174
- }).AddRow (1 , []byte {}, "owner" ),
175
- )
176
- mock .ExpectCommit ().WillReturnError (badCommit )
177
- if _ , err := client .Acquire ("bad-insert" ); ! errors .Is (err , badCommit ) {
178
- t .Errorf ("expected commit error missing: %v" , err )
179
- }
180
- })
181
140
})
182
141
t .Run ("release" , func (t * testing.T ) {
183
- t .Run ("bad tx" , func (t * testing.T ) {
184
- client , mock , fakeLock := setup ()
185
- badTx := errors .New ("transaction begin error" )
186
- mock .ExpectBegin ().WillReturnError (badTx )
187
- if err := client .Release (fakeLock ); ! errors .Is (err , badTx ) {
188
- t .Errorf ("expected tx error missing: %v" , err )
189
- }
190
- })
191
142
t .Run ("bad update" , func (t * testing.T ) {
192
143
client , mock , fakeLock := setup ()
193
- badUpdate := errors .New ("cannot update" )
194
- mock .ExpectBegin ()
195
- mock .ExpectExec (`UPDATE locks (.+)` ).WithArgs (sqlmock .AnyArg (), sqlmock .AnyArg ()).WillReturnError (badUpdate )
196
- if err := client .Release (fakeLock ); ! errors .Is (err , badUpdate ) {
197
- t .Errorf ("expected update error missing: %v" , err )
198
- }
199
- })
200
- t .Run ("bad update result" , func (t * testing.T ) {
201
- client , mock , fakeLock := setup ()
202
- badUpdateResult := errors .New ("cannot grab update result" )
203
- mock .ExpectBegin ()
204
- mock .ExpectExec (`UPDATE locks (.+)` ).WithArgs (sqlmock .AnyArg (), sqlmock .AnyArg ()).WillReturnResult (sqlmock .NewErrorResult (badUpdateResult ))
205
- if err := client .Release (fakeLock ); ! errors .Is (err , badUpdateResult ) {
206
- t .Errorf ("expected update result error missing: %v" , err )
144
+ badDelete := errors .New ("cannot delete lock entry" )
145
+ fakeLock .keepOnRelease = true
146
+ mock .ExpectExec (`UPDATE locks (.+)` ).WithArgs (sqlmock .AnyArg (), sqlmock .AnyArg ()).WillReturnError (badDelete )
147
+ if err := client .Release (fakeLock ); ! errors .Is (err , badDelete ) {
148
+ t .Errorf ("expected delete error missing: %v" , err )
207
149
}
208
150
})
209
151
t .Run ("bad delete" , func (t * testing.T ) {
210
152
client , mock , fakeLock := setup ()
211
153
badDelete := errors .New ("cannot delete lock entry" )
212
- mock .ExpectBegin ()
213
- mock .ExpectExec (`UPDATE locks (.+)` ).WithArgs (sqlmock .AnyArg (), sqlmock .AnyArg ()).WillReturnResult (sqlmock .NewResult (0 , 1 ))
214
- mock .ExpectExec (`DELETE FROM locks (.+)` ).WithArgs (sqlmock .AnyArg ()).WillReturnError (badDelete )
154
+ mock .ExpectExec (`DELETE FROM locks (.+)` ).WithArgs (sqlmock .AnyArg (), sqlmock .AnyArg ()).WillReturnError (badDelete )
215
155
if err := client .Release (fakeLock ); ! errors .Is (err , badDelete ) {
216
156
t .Errorf ("expected delete error missing: %v" , err )
217
157
}
218
158
})
219
- t .Run ("bad commit" , func (t * testing.T ) {
220
- client , mock , fakeLock := setup ()
221
- badCommit := errors .New ("cannot commit release" )
222
- mock .ExpectBegin ()
223
- mock .ExpectExec (`UPDATE locks (.+)` ).WithArgs (sqlmock .AnyArg (), sqlmock .AnyArg ()).WillReturnResult (sqlmock .NewResult (0 , 1 ))
224
- mock .ExpectExec (`DELETE FROM locks (.+)` ).WithArgs (sqlmock .AnyArg ()).WillReturnResult (sqlmock .NewResult (0 , 1 ))
225
- mock .ExpectCommit ().WillReturnError (badCommit )
226
- if err := client .Release (fakeLock ); ! errors .Is (err , badCommit ) {
227
- t .Errorf ("expected commit error missing: %v" , err )
228
- }
229
- })
230
159
})
231
160
t .Run ("heartbeat" , func (t * testing.T ) {
232
- t .Run ("bad tx" , func (t * testing.T ) {
233
- client , mock , fakeLock := setup ()
234
- badTx := errors .New ("transaction begin error" )
235
- mock .ExpectQuery (`SELECT nextval\('locks_rvn'\)` ).WillReturnRows (sqlmock .NewRows ([]string {"nextval" }).AddRow (1 ))
236
- mock .ExpectBegin ().WillReturnError (badTx )
237
- if err := client .SendHeartbeat (context .Background (), fakeLock ); ! errors .Is (err , badTx ) {
238
- t .Errorf ("expected tx error missing: %v" , err )
239
- }
240
- })
241
161
t .Run ("bad rvn" , func (t * testing.T ) {
242
162
client , mock , fakeLock := setup ()
243
163
badRVN := errors .New ("cannot load next RVN" )
@@ -246,11 +166,10 @@ func TestDBErrorHandling(t *testing.T) {
246
166
t .Errorf ("expected RVN error missing: %v" , err )
247
167
}
248
168
})
249
- t .Run ("bad insert " , func (t * testing.T ) {
169
+ t .Run ("bad update " , func (t * testing.T ) {
250
170
client , mock , fakeLock := setup ()
251
171
badUpdate := errors .New ("cannot insert" )
252
172
mock .ExpectQuery (`SELECT nextval\('locks_rvn'\)` ).WillReturnRows (sqlmock .NewRows ([]string {"nextval" }).AddRow (1 ))
253
- mock .ExpectBegin ()
254
173
mock .ExpectExec (`UPDATE locks (.+)` ).WithArgs (sqlmock .AnyArg (), sqlmock .AnyArg (), sqlmock .AnyArg ()).WillReturnError (badUpdate )
255
174
if err := client .SendHeartbeat (context .Background (), fakeLock ); ! errors .Is (err , badUpdate ) {
256
175
t .Errorf ("expected RVN error missing: %v" , err )
@@ -260,23 +179,11 @@ func TestDBErrorHandling(t *testing.T) {
260
179
client , mock , fakeLock := setup ()
261
180
badRVN := errors .New ("cannot confirm RVN" )
262
181
mock .ExpectQuery (`SELECT nextval\('locks_rvn'\)` ).WillReturnRows (sqlmock .NewRows ([]string {"nextval" }).AddRow (1 ))
263
- mock .ExpectBegin ()
264
182
mock .ExpectExec (`UPDATE locks (.+)` ).WithArgs (sqlmock .AnyArg (), sqlmock .AnyArg (), sqlmock .AnyArg ()).WillReturnResult (sqlmock .NewErrorResult (badRVN ))
265
183
if err := client .SendHeartbeat (context .Background (), fakeLock ); ! errors .Is (err , badRVN ) {
266
184
t .Errorf ("expected RVN confirmation error missing: %v" , err )
267
185
}
268
186
})
269
- t .Run ("bad commit" , func (t * testing.T ) {
270
- client , mock , fakeLock := setup ()
271
- badCommit := errors .New ("cannot confirm RVN" )
272
- mock .ExpectQuery (`SELECT nextval\('locks_rvn'\)` ).WillReturnRows (sqlmock .NewRows ([]string {"nextval" }).AddRow (1 ))
273
- mock .ExpectBegin ()
274
- mock .ExpectExec (`UPDATE locks (.+)` ).WithArgs (sqlmock .AnyArg (), sqlmock .AnyArg (), sqlmock .AnyArg ()).WillReturnResult (sqlmock .NewResult (0 , 1 ))
275
- mock .ExpectCommit ().WillReturnError (badCommit )
276
- if err := client .SendHeartbeat (context .Background (), fakeLock ); ! errors .Is (err , badCommit ) {
277
- t .Errorf ("expected commit error missing: %v" , err )
278
- }
279
- })
280
187
})
281
188
282
189
t .Run ("GetAllLocks" , func (t * testing.T ) {
0 commit comments