Skip to content

Commit 9b57450

Browse files
chore: update shouldTriggerDecryption to return an error and update tests
1 parent d016e03 commit 9b57450

File tree

2 files changed

+23
-37
lines changed

2 files changed

+23
-37
lines changed

rolling-shutter/keyperimpl/shutterservice/newblock.go

Lines changed: 13 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -81,7 +81,11 @@ func (kpr *Keyper) prepareTimeBasedTriggers(ctx context.Context, block *synceven
8181

8282
eventsToDecrypt := make([]servicedatabase.IdentityRegisteredEvent, 0)
8383
for _, event := range nonTriggeredEvents {
84-
if kpr.shouldTriggerDecryption(ctx, event, block) {
84+
trigger, err := kpr.shouldTriggerDecryption(ctx, event, block)
85+
if err != nil {
86+
return nil, errors.Wrapf(err, "failed to check if should trigger decryption for event %d", event.Eon)
87+
}
88+
if trigger {
8589
eventsToDecrypt = append(eventsToDecrypt, event)
8690
}
8791
}
@@ -93,7 +97,7 @@ func (kpr *Keyper) shouldTriggerDecryption(
9397
ctx context.Context,
9498
event servicedatabase.IdentityRegisteredEvent,
9599
triggeredBlock *syncevent.LatestBlock,
96-
) bool {
100+
) (bool, error) {
97101
coreKeyperDB := corekeyperdatabase.New(kpr.dbpool)
98102
isKeyper, err := coreKeyperDB.GetKeyperStateForEon(ctx, corekeyperdatabase.GetKeyperStateForEonParams{
99103
Eon: event.Eon,
@@ -104,27 +108,26 @@ func (kpr *Keyper) shouldTriggerDecryption(
104108
log.Info().
105109
Int64("eon", event.Eon).
106110
Msg("skipping event as no eon has been found for it")
111+
return false, nil
107112
} else {
108-
log.Err(err).Msgf("failed to query keyper state for eon %d", event.Eon)
113+
return false, errors.Wrapf(err, "failed to query keyper state for eon %d", event.Eon)
109114
}
110-
return false
111115
}
112116

113117
eon, err := coreKeyperDB.GetEon(ctx, event.Eon)
114118
if err != nil {
115-
log.Err(err).Msgf("failed to get eon %d", event.Eon)
116-
return false
119+
return false, errors.Wrapf(err, "failed to get eon %d", event.Eon)
117120
}
118121
if eon.ActivationBlockNumber > triggeredBlock.Header.Number.Int64() {
119122
log.Info().
120123
Int64("eon", event.Eon).
121124
Int64("block-number", triggeredBlock.Header.Number.Int64()).
122125
Msg("skipping event as eon activation block number is greater than triggered block number")
123-
return false
126+
return false, nil
124127
}
125128

126129
if event.Timestamp >= int64(triggeredBlock.Header.Time) {
127-
return false
130+
return false, nil
128131
}
129132

130133
// don't trigger if we're not part of the keyper set
@@ -135,9 +138,9 @@ func (kpr *Keyper) shouldTriggerDecryption(
135138
Str("identity", string(event.Identity)).
136139
Str("address", kpr.config.GetAddress().Hex()).
137140
Msg("skipping event as not part of keyper set")
138-
return false
141+
return false, nil
139142
}
140-
return true
143+
return true, nil
141144
}
142145

143146
func (kpr *Keyper) createTriggersFromIdentityRegisteredEvents(

rolling-shutter/keyperimpl/shutterservice/newblock_test.go

Lines changed: 10 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -172,7 +172,7 @@ func TestShouldTriggerDecryption(t *testing.T) {
172172
})
173173
assert.NilError(t, err)
174174

175-
trigger := kpr.shouldTriggerDecryption(
175+
trigger, err := kpr.shouldTriggerDecryption(
176176
ctx,
177177
servicedatabase.IdentityRegisteredEvent{
178178
Eon: int64(eon),
@@ -189,6 +189,7 @@ func TestShouldTriggerDecryption(t *testing.T) {
189189
},
190190
},
191191
)
192+
assert.NilError(t, err)
192193
assert.Equal(t, trigger, true)
193194
}
194195

@@ -209,14 +210,6 @@ func TestShouldNotTriggerDecryption(t *testing.T) {
209210
blockNumber := 100
210211
blockTimestamp := time.Now().Unix()
211212

212-
if blockTimestamp < 0 {
213-
t.Fatalf("blockTimestamp is negative: %d", blockTimestamp)
214-
}
215-
216-
if eventTimestamp < 0 {
217-
t.Fatalf("eventTimestamp is negative: %d", eventTimestamp)
218-
}
219-
220213
kpr := &Keyper{
221214
dbpool: dbpool,
222215
config: &Config{
@@ -231,7 +224,7 @@ func TestShouldNotTriggerDecryption(t *testing.T) {
231224
decryptionTriggerChannel: decryptionTriggerChannel,
232225
}
233226

234-
trigger := kpr.shouldTriggerDecryption(
227+
trigger, err := kpr.shouldTriggerDecryption(
235228
ctx,
236229
servicedatabase.IdentityRegisteredEvent{
237230
Timestamp: eventTimestamp,
@@ -246,7 +239,7 @@ func TestShouldNotTriggerDecryption(t *testing.T) {
246239
},
247240
},
248241
)
249-
242+
assert.NilError(t, err)
250243
assert.Equal(t, trigger, false)
251244
}
252245

@@ -270,10 +263,6 @@ func TestShouldTriggerDecryptionDifferentEon(t *testing.T) {
270263
blockNumber := 100
271264
blockTimestamp := time.Now().Add(5 * time.Second).Unix()
272265

273-
if blockTimestamp < 0 {
274-
t.Fatalf("blockTimestamp is negative: %d", blockTimestamp)
275-
}
276-
277266
kpr := &Keyper{
278267
dbpool: dbpool,
279268
config: &Config{
@@ -319,7 +308,7 @@ func TestShouldTriggerDecryptionDifferentEon(t *testing.T) {
319308
assert.NilError(t, err)
320309

321310
// Test with event from eon 0, but current block is in eon 1
322-
trigger := kpr.shouldTriggerDecryption(
311+
trigger, err := kpr.shouldTriggerDecryption(
323312
ctx,
324313
servicedatabase.IdentityRegisteredEvent{
325314
Eon: int64(eon), // Event from eon 0
@@ -331,11 +320,12 @@ func TestShouldTriggerDecryptionDifferentEon(t *testing.T) {
331320
Int: big.NewInt(int64(blockNumber + 100)), // Block in eon 1
332321
},
333322
Header: &types.Header{
334-
Time: uint64(blockTimestamp),
323+
Time: uint64(blockTimestamp), //nolint:gosec
335324
Number: big.NewInt(int64(blockNumber + 100)),
336325
},
337326
},
338327
)
328+
assert.NilError(t, err)
339329
assert.Equal(t, trigger, true)
340330
}
341331

@@ -359,14 +349,6 @@ func TestShouldNotTriggerDecryptionBeforeActivation(t *testing.T) {
359349
blockNumber := 150 // Current block is 150, before activation
360350
blockTimestamp := time.Now().Add(5 * time.Second).Unix()
361351

362-
if blockTimestamp < 0 {
363-
t.Fatalf("blockTimestamp is negative: %d", blockTimestamp)
364-
}
365-
366-
if eventTimestamp < 0 {
367-
t.Fatalf("eventTimestamp is negative: %d", eventTimestamp)
368-
}
369-
370352
kpr := &Keyper{
371353
dbpool: dbpool,
372354
config: &Config{
@@ -403,7 +385,7 @@ func TestShouldNotTriggerDecryptionBeforeActivation(t *testing.T) {
403385
assert.NilError(t, err)
404386

405387
// Test with event from eon 0, but current block (150) is before activation (200)
406-
trigger := kpr.shouldTriggerDecryption(
388+
trigger, err := kpr.shouldTriggerDecryption(
407389
ctx,
408390
servicedatabase.IdentityRegisteredEvent{
409391
Eon: int64(eon), // Event from eon 0
@@ -415,10 +397,11 @@ func TestShouldNotTriggerDecryptionBeforeActivation(t *testing.T) {
415397
Int: big.NewInt(int64(blockNumber)), // Block 150, before activation at 200
416398
},
417399
Header: &types.Header{
418-
Time: uint64(blockTimestamp),
400+
Time: uint64(blockTimestamp), //nolint:gosec
419401
Number: big.NewInt(int64(blockNumber)),
420402
},
421403
},
422404
)
405+
assert.NilError(t, err)
423406
assert.Equal(t, trigger, false)
424407
}

0 commit comments

Comments
 (0)