git.delta.rocks / unique-network / refs/commits / 9ecb329aa0c0

difftreelog

source

tests/src/blocks-production.test.ts1.5 KiBsourcehistory
1//2// This file is subject to the terms and conditions defined in3// file 'LICENSE', which is part of this source code package.4//56import usingApi from "./substrate/substrate-api";7import promisifySubstrate from "./substrate/promisify-substrate";8import { expect } from "chai";910describe('Blocks Production smoke test', () => {11  it('Node produces new blocks', async () => {12    await usingApi(async api => {13      const blocksPromise = promisifySubstrate(api, () => {14        return new Promise<number[]>((resolve, reject) => {15          const blockNumbers: number[] = [];16          const unsubscribe = api.rpc.chain.subscribeNewHeads(async head => {17            blockNumbers.push(head.number.toNumber());18            if(blockNumbers.length >= 2) {19              (await unsubscribe)();20              resolve(blockNumbers);21            }22          });23        })24      })();2526      let blocks: number[] | undefined = undefined;2728      const timeoutPromise = new Promise<void>((resolve, reject) => {29        let secondsPassed = 0;30        let incrementSeconds = () => {31          secondsPassed++;32          if(secondsPassed > 5 * 60) {33            reject('Block production test failed due to timeout.');34            return;35          }3637          if(blocks) {38            resolve();39            return;40          }4142          setTimeout(incrementSeconds, 1000);43        }4445        incrementSeconds();46      });4748      blocks = await Promise.race([blocksPromise, timeoutPromise]) as number[];4950      expect(blocks[0]).to.be.lessThan(blocks[1]);51    });52  });53});