From 21a0683de3c90a4a7dd5993a277575139f98b028 Mon Sep 17 00:00:00 2001 From: Yaroslav Bolyukin Date: Fri, 01 Sep 2023 13:28:26 +0000 Subject: [PATCH] test: rewrite metadata fetch to js --- --- a/tests/package.json +++ b/tests/package.json @@ -117,7 +117,7 @@ "benchMintingFee": "ts-node src/benchmarks/mintFee/benchmark.ts", "load": "yarn _test './**/*.load.ts'", "loadTransfer": "ts-node src/transfer.nload.ts", - "polkadot-types-fetch-metadata": "curl -L -H 'Content-Type: application/json' -d '{\"id\":\"1\", \"jsonrpc\":\"2.0\", \"method\": \"state_getMetadata\", \"params\":[]}' $RPC_URL > src/interfaces/metadata.json", + "polkadot-types-fetch-metadata": "yarn ts-node --esm src/fetchMetadata.ts", "polkadot-types-from-defs": "ts-node --esm ./node_modules/.bin/polkadot-types-from-defs --endpoint src/interfaces/metadata.json --input src/interfaces/ --package .", "polkadot-types-from-chain": "ts-node --esm ./node_modules/.bin/polkadot-types-from-chain --endpoint src/interfaces/metadata.json --output src/interfaces/ --package .", "polkadot-types": "echo \"export default {}\" > src/interfaces/lookup.ts && yarn polkadot-types-fetch-metadata && yarn polkadot-types-from-defs && yarn polkadot-types-from-defs && yarn polkadot-types-from-chain", --- /dev/null +++ b/tests/src/fetchMetadata.ts @@ -0,0 +1,40 @@ +import { writeFile } from "fs/promises"; +import { join } from "path"; +import { exit } from "process"; +import { fileURLToPath } from "url"; + +const url = process.env.RPC_URL; +if (!url) throw new Error('RPC_URL is not set'); + +const srcDir = fileURLToPath(new URL('.', import.meta.url)); + +for (let i = 0; i < 10; i++) { + try { + console.log(`Trying to fetch metadata, retry ${i + 1}/${10}`) + const response = await fetch(url, { + method: 'POST', + headers: { + 'Content-Type': 'application/json', + }, + redirect: 'follow', + body: JSON.stringify({ + jsonrpc: '2.0', + id: '1', + method: 'state_getMetadata', + params: [], + }), + }); + const json = await response.json(); + const output = join(srcDir, 'interfaces/metadata.json'); + console.log(`Received response, saving to ${output}`); + await writeFile(output, JSON.stringify(json)); + exit(0); + } catch (e) { + console.error('Failed to request metadata:'); + console.error(e); + console.error('Waiting 1 minute'); + await new Promise(res => setTimeout(res, 60 * 1000)); + } +} +console.error('Out of retries'); +exit(1); -- gitstuff