Skip to content

Commit d312a07

Browse files
committed
Use ERC20 subscriptions instead of eventually to check balances
1 parent 7eb2fb1 commit d312a07

File tree

1 file changed

+44
-16
lines changed

1 file changed

+44
-16
lines changed

tests/integration/30_minutes/testmarketplace.nim

Lines changed: 44 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -109,6 +109,16 @@ marketplacesuite(name = "Marketplace", stopOnRequestFail = true):
109109

110110
discard await waitForRequestToStart()
111111

112+
var counter = 0
113+
var transferEvent = newAsyncEvent()
114+
proc onTransfer(eventResult: ?!Transfer) =
115+
assert not eventResult.isErr
116+
counter += 1
117+
if counter == 6:
118+
transferEvent.fire()
119+
120+
let tokenSubscription = await token.subscribe(Transfer, onTransfer)
121+
112122
let purchase = (await client.getPurchase(id)).get
113123
check purchase.error == none string
114124

@@ -119,17 +129,18 @@ marketplacesuite(name = "Marketplace", stopOnRequestFail = true):
119129
# only with new transaction
120130
await ethProvider.advanceTime(duration.u256)
121131

132+
await transferEvent.wait().wait(timeout = chronos.seconds(60))
133+
122134
# Checking that the hosting node received reward for at least the time between <expiry;end>
123135
let slotSize = slotSize(blocks, ecNodes, ecTolerance)
124136
let pricePerSlotPerSecond = minPricePerBytePerSecond * slotSize
125-
check eventually (await token.balanceOf(hostAccount)) - startBalanceHost >=
137+
check (await token.balanceOf(hostAccount)) - startBalanceHost >=
126138
(duration - 5 * 60).u256 * pricePerSlotPerSecond * ecNodes.u256
127139

128140
# Checking that client node receives some funds back that were not used for the host nodes
129-
check eventually(
130-
(await token.balanceOf(clientAccount)) - clientBalanceBeforeFinished > 0,
131-
timeout = 10 * 1000, # give client a bit of time to withdraw its funds
132-
)
141+
check ((await token.balanceOf(clientAccount)) - clientBalanceBeforeFinished > 0)
142+
143+
await tokenSubscription.unsubscribe()
133144

134145
test "SP are able to process slots after workers were busy with other slots and ignored them",
135146
NodeConfigs(
@@ -286,33 +297,47 @@ marketplacesuite(name = "Marketplace payouts", stopOnRequestFail = true):
286297
check eventually(slotIdxFilled.isSome, timeout = expiry.int * 1000)
287298
let slotId = slotId(!(await clientApi.requestId(id)), !slotIdxFilled)
288299

300+
var counter = 0
301+
var transferEvent = newAsyncEvent()
302+
proc onTransfer(eventResult: ?!Transfer) =
303+
assert not eventResult.isErr
304+
counter += 1
305+
if counter == 3:
306+
transferEvent.fire()
307+
308+
let tokenAddress = await marketplace.token()
309+
let token = Erc20Token.new(tokenAddress, ethProvider.getSigner())
310+
let tokenSubscription = await token.subscribe(Transfer, onTransfer)
311+
289312
# wait until sale is cancelled
290313
await ethProvider.advanceTime(expiry.u256)
291314

292315
await requestCancelledEvent.wait().wait(timeout = chronos.seconds(5))
293316

294317
await advanceToNextPeriod()
295318

319+
await transferEvent.wait().wait(timeout = chronos.seconds(60))
320+
296321
let slotSize = slotSize(blocks, ecNodes, ecTolerance)
297322
let pricePerSlotPerSecond = minPricePerBytePerSecond * slotSize
298323

299-
check eventually (
324+
check (
300325
let endBalanceProvider = (await token.balanceOf(provider.ethAccount))
301326
endBalanceProvider > startBalanceProvider and
302327
endBalanceProvider < startBalanceProvider + expiry.u256 * pricePerSlotPerSecond
303328
)
304-
check eventually(
329+
check(
305330
(
306331
let endBalanceClient = (await token.balanceOf(client.ethAccount))
307332
let endBalanceProvider = (await token.balanceOf(provider.ethAccount))
308333
(startBalanceClient - endBalanceClient) ==
309334
(endBalanceProvider - startBalanceProvider)
310-
),
311-
timeout = 10 * 1000, # give client a bit of time to withdraw its funds
335+
)
312336
)
313337

314338
await slotFilledSubscription.unsubscribe()
315339
await requestCancelledSubscription.unsubscribe()
340+
await tokenSubscription.unsubscribe()
316341

317342
test "the collateral is returned after a sale is ignored",
318343
NodeConfigs(
@@ -386,12 +411,15 @@ marketplacesuite(name = "Marketplace payouts", stopOnRequestFail = true):
386411
let client = provider.client
387412
check eventually(
388413
block:
389-
let availabilities = (await client.getAvailabilities()).get
390-
let availability = availabilities[0]
391-
let slots = (await client.getSlots()).get
392-
let availableSlots = (3 - slots.len).u256
393-
394-
availability.totalRemainingCollateral ==
395-
availableSlots * slotSize * minPricePerBytePerSecond,
414+
try:
415+
let availabilities = (await client.getAvailabilities()).get
416+
let availability = availabilities[0]
417+
let slots = (await client.getSlots()).get
418+
let availableSlots = (3 - slots.len).u256
419+
420+
availability.totalRemainingCollateral ==
421+
availableSlots * slotSize * minPricePerBytePerSecond
422+
except HttpConnectionError:
423+
return false,
396424
timeout = 30 * 1000,
397425
)

0 commit comments

Comments
 (0)