From d1851d8ede930e4fb7143fcd33b615faa2821e13 Mon Sep 17 00:00:00 2001 From: Fahrrader Date: Fri, 07 Oct 2022 17:39:57 +0000 Subject: [PATCH] tests(util): fix and adapt feed-alices to asynchronisity --- --- a/tests/package.json +++ b/tests/package.json @@ -29,14 +29,14 @@ "feedAlices": "ts-node ./src/util/playgrounds/feedAlices.ts", "test": "yarn feedAlices && mocha --parallel --timeout 9999999 -r ts-node/register './src/**/*.test.ts'", + "testSequential": "yarn feedAlices && mocha --timeout 9999999 -r ts-node/register './src/**/*.seqtest.ts'", "testStructure": "yarn feedAlices && mocha --parallel --timeout 9999999 -r ts-node/register ./**/nesting/**.test.ts", "testEth": "yarn feedAlices && mocha --parallel --timeout 9999999 -r ts-node/register './**/eth/**/*.test.ts'", "testEthNesting": "yarn feedAlices && mocha --parallel --timeout 9999999 -r ts-node/register './**/eth/nesting/**/*.test.ts'", "testEthFractionalizer": "yarn feedAlices && mocha --parallel --timeout 9999999 -r ts-node/register './**/eth/fractionalizer/**/*.test.ts'", "testEthMarketplace": "yarn feedAlices && mocha --parallel --timeout 9999999 -r ts-node/register './**/eth/marketplace/**/*.test.ts'", - "testCollision": "yarn feedAlices && mocha --parallel --timeout 9999999 -r ts-node/register ./src/collision-tests/*.test.ts", "testEvent": "yarn feedAlices && mocha --parallel --timeout 9999999 -r ts-node/register ./src/check-event/*.test.ts", - "testRmrk": "mocha --timeout 9999999 -r ts-node/register ./**/rmrk/**.test.ts", + "testRmrk": "mocha --timeout 9999999 -r ts-node/register ./**/rmrk/**test.ts", "testEthPayable": "mocha --timeout 9999999 -r ts-node/register './**/eth/payable.test.ts'", "testEthTokenProperties": "mocha --timeout 9999999 -r ts-node/register ./**/eth/tokenProperties.test.ts", @@ -48,7 +48,7 @@ "testSetCollectionLimits": "mocha --timeout 9999999 -r ts-node/register ./**/setCollectionLimits.test.ts", "testChangeCollectionOwner": "mocha --timeout 9999999 -r ts-node/register ./**/change-collection-owner.test.ts", "testSetCollectionSponsor": "mocha --timeout 9999999 -r ts-node/register ./**/setCollectionSponsor.test.ts", - "testConfirmSponsorship": "mocha --timeout 9999999 -r ts-node/register ./**/confirmSponsorship.test.ts", + "testConfirmSponsorship": "mocha --timeout 9999999 --parallel -r ts-node/register ./**/confirmSponsorship.test.ts", "testRemoveCollectionAdmin": "mocha --timeout 9999999 -r ts-node/register ./**/removeCollectionAdmin.test.ts", "testRemoveCollectionSponsor": "mocha --timeout 9999999 -r ts-node/register ./**/removeCollectionSponsor.test.ts", "testAllowLists": "mocha --timeout 9999999 -r ts-node/register ./**/allowLists.test.ts", @@ -78,12 +78,6 @@ "testInflation": "mocha --timeout 9999999 -r ts-node/register ./**/inflation.test.ts", "testScheduler": "mocha --timeout 9999999 -r ts-node/register ./**/scheduler.test.ts", "testSchedulingEVM": "mocha --timeout 9999999 -r ts-node/register ./**/eth/scheduling.test.ts", - "testXcmUnique": "RUN_XCM_TESTS=1 mocha --timeout 9999999 -r ts-node/register ./**/xcm/xcmUnique.test.ts", - "testXcmQuartz": "RUN_XCM_TESTS=1 mocha --timeout 9999999 -r ts-node/register ./**/xcm/xcmQuartz.test.ts", - "testXcmOpal": "RUN_XCM_TESTS=1 mocha --timeout 9999999 -r ts-node/register ./**/xcm/xcmOpal.test.ts", - "testXcmTransferAcala": "mocha --timeout 9999999 -r ts-node/register ./**/xcm/xcmTransferAcala.test.ts acalaId=2000 uniqueId=5000", - "testXcmTransferStatemine": "mocha --timeout 9999999 -r ts-node/register ./**/xcm/xcmTransferStatemine.test.ts statemineId=1000 uniqueId=5000", - "testXcmTransferMoonbeam": "mocha --timeout 9999999 -r ts-node/register ./**/xcm/xcmTransferMoonbeam.test.ts", "testPalletPresence": "mocha --timeout 9999999 -r ts-node/register ./**/pallet-presence.test.ts", "testBlockProduction": "mocha --timeout 9999999 -r ts-node/register ./**/block-production.test.ts", "testEnableDisableTransfers": "mocha --timeout 9999999 -r ts-node/register ./**/enableDisableTransfer.test.ts", @@ -97,6 +91,13 @@ "testEthFT": "mocha --timeout 9999999 -r ts-node/register ./**/eth/fungible.test.ts", "testRPC": "mocha --timeout 9999999 -r ts-node/register ./**/rpc.test.ts", "testPromotion": "mocha --timeout 9999999 -r ts-node/register ./**/app-promotion.test.ts", + + "testXcmUnique": "RUN_XCM_TESTS=1 mocha --timeout 9999999 -r ts-node/register ./**/xcm/xcmUnique.test.ts", + "testXcmQuartz": "RUN_XCM_TESTS=1 mocha --timeout 9999999 -r ts-node/register ./**/xcm/xcmQuartz.test.ts", + "testXcmOpal": "RUN_XCM_TESTS=1 mocha --timeout 9999999 -r ts-node/register ./**/xcm/xcmOpal.test.ts", + "testXcmTransferAcala": "mocha --timeout 9999999 -r ts-node/register ./**/xcm/xcmTransferAcala.test.ts acalaId=2000 uniqueId=5000", + "testXcmTransferStatemine": "mocha --timeout 9999999 -r ts-node/register ./**/xcm/xcmTransferStatemine.test.ts statemineId=1000 uniqueId=5000", + "testXcmTransferMoonbeam": "mocha --timeout 9999999 -r ts-node/register ./**/xcm/xcmTransferMoonbeam.test.ts", "load": "mocha --timeout 9999999 -r ts-node/register './**/*.load.ts'", "loadTransfer": "ts-node src/transfer.nload.ts", --- a/tests/src/eth/util/playgrounds/unique.dev.ts +++ b/tests/src/eth/util/playgrounds/unique.dev.ts @@ -142,14 +142,14 @@ return account.address; } - async createAccountWithBalance(donor: IKeyringPair, amount=1000n) { + async createAccountWithBalance(donor: IKeyringPair, amount=100n) { const account = this.createAccount(); await this.transferBalanceFromSubstrate(donor, account, amount); return account; } - async transferBalanceFromSubstrate(donor: IKeyringPair, recepient: string, amount=1000n, inTokens=true) { + async transferBalanceFromSubstrate(donor: IKeyringPair, recepient: string, amount=100n, inTokens=true) { return await this.helper.balance.transferToSubstrate(donor, evmToAddress(recepient), amount * (inTokens ? this.helper.balance.getOneTokenNominal() : 1n)); } --- a/tests/src/util/playgrounds/feedAlices.ts +++ b/tests/src/util/playgrounds/feedAlices.ts @@ -26,23 +26,23 @@ const nonce = await helper.chain.getNonce(alice.address); const filenames = await getFiles(path.resolve(__dirname, '../..')); - console.log(`Main Alice address: ${alice.address}, with balance:`, await helper.balance.getSubstrate(alice.address)); - - const batchSize = 20; + // batching is actually undesired, it takes away the time while all the transactions actually succeed + const batchSize = 300; let balanceGrantedCounter = 0; for (let b = 0; b < filenames.length; b += batchSize) { const tx = []; let batchBalanceGrantedCounter = 0; - for (const f of filenames.slice(b, b + batchSize)) { - if (!f.endsWith('.test.ts')) continue; - const account = await privateKey({filename: f}); + for (let i = 0; batchBalanceGrantedCounter < batchSize && b + i < filenames.length; i++) { + const f = filenames[b + i]; + if (!f.endsWith('.test.ts') || f.includes('.outdated')) continue; + const account = await privateKey({filename: f, ignoreFundsPresence: true}); const aliceBalance = await helper.balance.getSubstrate(account.address); - if (aliceBalance < 5000n * oneToken) { + if (aliceBalance < 7500n * oneToken) { tx.push(helper.executeExtrinsic( alice, 'api.tx.balances.transfer', - [account.address, 10000n * oneToken], + [account.address, 15000n * oneToken], true, {nonce: nonce + balanceGrantedCounter++}, ).then(() => true).catch(() => {console.error(`Transaction to ${path.basename(f)} registered as failed. Strange.`); return false;})); @@ -65,13 +65,14 @@ if (retriesLeft <= 0) return Promise.resolve(false); return fundFilenames() .then(() => Promise.resolve(true)) - .catch(() => { - console.error(`Some transactions have failed. ${retriesLeft >= 1 ? 'Retrying...' : 'Something is wrong.'}`); + .catch(e => { + console.error(e); + console.error(`Some transactions might have failed. ${retriesLeft > 1 ? 'Retrying...' : 'Something is wrong.'}\n`); return fundFilenamesWithRetries(--retriesLeft); }); }; -fundFilenamesWithRetries(2).then((result) => process.exit(result ? 0 : 1)).catch(e => { +fundFilenamesWithRetries(3).then((result) => process.exit(result ? 0 : 1)).catch(e => { console.error(e); process.exit(1); }); --- a/tests/src/util/playgrounds/index.ts +++ b/tests/src/util/playgrounds/index.ts @@ -22,8 +22,7 @@ return `//Alice+${getTestHash(filename)}`; }; -// todo:playgrounds normalize to seed and filename -export const usingPlaygrounds = async (code: (helper: DevUniqueHelper, privateKey: (seed: string | {filename: string}) => Promise) => Promise, url: string = config.substrateUrl) => { +export const usingPlaygrounds = async (code: (helper: DevUniqueHelper, privateKey: (seed: string | {filename: string, ignoreFundsPresence?: boolean}) => Promise) => Promise, url: string = config.substrateUrl) => { const silentConsole = new SilentConsole(); silentConsole.enable(); @@ -32,14 +31,14 @@ try { await helper.connect(url); const ss58Format = helper.chain.getChainProperties().ss58Format; - const privateKey = async (seed: string | {filename: string}) => { + const privateKey = async (seed: string | {filename: string, ignoreFundsPresence?: boolean}) => { if (typeof seed === 'string') { return helper.util.fromSeed(seed, ss58Format); } else { const actualSeed = getTestSeed(seed.filename); let account = helper.util.fromSeed(actualSeed, ss58Format); - if (await helper.balance.getSubstrate(account.address) == 0n) { + if (!seed.ignoreFundsPresence && await helper.balance.getSubstrate(account.address) == 0n) { console.warn(`${path.basename(seed.filename)}: Not enough funds present on the filename account. Using the default one as the donor instead.`); account = helper.util.fromSeed('//Alice', ss58Format); } -- gitstuff