Skip to content

Commit 5f0a772

Browse files
committed
Test for multichain rollback + rollback for wildcard fix
1 parent f15bff5 commit 5f0a772

File tree

3 files changed

+456
-35
lines changed

3 files changed

+456
-35
lines changed

codegenerator/cli/npm/envio/src/FetchState.res

Lines changed: 9 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1161,11 +1161,18 @@ let rollbackPartition = (
11611161
~firstChangeEvent: blockNumberAndLogIndex,
11621162
~addressesToRemove,
11631163
) => {
1164+
let shouldRollbackFetched = p.latestFetchedBlock.blockNumber >= firstChangeEvent.blockNumber
1165+
let latestFetchedBlock = shouldRollbackFetched
1166+
? {
1167+
blockNumber: firstChangeEvent.blockNumber - 1,
1168+
blockTimestamp: 0,
1169+
}
1170+
: p.latestFetchedBlock
11641171
switch p {
11651172
| {selection: {dependsOnAddresses: false}} =>
11661173
Some({
11671174
...p,
1168-
// FIXME: Should rollback latestFetchedBlock???
1175+
latestFetchedBlock,
11691176
status: {
11701177
fetchingStateId: None,
11711178
},
@@ -1183,21 +1190,14 @@ let rollbackPartition = (
11831190
if rollbackedAddressesByContractName->Js.Dict.keys->Array.length === 0 {
11841191
None
11851192
} else {
1186-
let shouldRollbackFetched = p.latestFetchedBlock.blockNumber >= firstChangeEvent.blockNumber
1187-
11881193
Some({
11891194
id: p.id,
11901195
selection: p.selection,
11911196
status: {
11921197
fetchingStateId: None,
11931198
},
11941199
addressesByContractName: rollbackedAddressesByContractName,
1195-
latestFetchedBlock: shouldRollbackFetched
1196-
? {
1197-
blockNumber: firstChangeEvent.blockNumber - 1,
1198-
blockTimestamp: 0,
1199-
}
1200-
: p.latestFetchedBlock,
1200+
latestFetchedBlock,
12011201
})
12021202
}
12031203
}

scenarios/test_codegen/test/helpers/Mock.res

Lines changed: 15 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -217,7 +217,7 @@ module Indexer = {
217217

218218
type chainConfig = {chain: Types.chain, sources: array<Source.t>, startBlock?: int}
219219

220-
let make = async (~chains: array<chainConfig>) => {
220+
let make = async (~chains: array<chainConfig>, ~multichain=InternalConfig.Unordered) => {
221221
DbHelpers.resetPostgresClient()
222222

223223
let config = RegisterHandlers.registerAllHandlers()
@@ -265,6 +265,7 @@ module Indexer = {
265265
persistence,
266266
enableRawEvents: false,
267267
chainMap,
268+
multichain,
268269
}
269270

270271
let gsManagerRef = ref(None)
@@ -398,6 +399,9 @@ module Source = {
398399
{
399400
getHeightOrThrowCalls,
400401
resolveGetHeightOrThrow: height => {
402+
if getHeightOrThrowResolveFns->Utils.Array.isEmpty {
403+
Js.Exn.raiseError("getHeightOrThrowResolveFns is empty")
404+
}
401405
getHeightOrThrowResolveFns->Array.forEach(resolve => resolve(height))
402406
},
403407
rejectGetHeightOrThrow: exn => {
@@ -497,7 +501,16 @@ module Source = {
497501
isWildcard: false,
498502
filterByAddresses: false,
499503
dependsOnAddresses: false,
500-
handler: item.handler->(
504+
handler: (
505+
({context} as args) => {
506+
// We don't want preload optimization for the tests
507+
if context.isPreload {
508+
Promise.resolve()
509+
} else {
510+
item.handler(args)
511+
}
512+
}
513+
)->(
501514
Utils.magic: Types.HandlerTypes.loader<unit, unit> => option<
502515
Internal.handler,
503516
>

0 commit comments

Comments
 (0)