The invalidated/reconsidered block polling depends on timing and results in a flaky test. Moving this case so it happens earlier in the test fixes the issue.
Details
- Reviewers
PiRK - Group Reviewers
Restricted Project - Commits
- rABCc291418925bd: [chronik-client] Fix flaky websocket integration test
./contrib/teamcity/build-configurations.py chronik-client-integration-tests
Diff Detail
- Repository
- rABC Bitcoin ABC
- Lint
Lint Not Applicable - Unit
Tests Not Applicable
Event Timeline
Failed tests logs:
====== /blockchain-info: gives us the blockchain info./blockchain-info gives us the blockchain info ====== Error: Error connecting to known Chronik instances at FailoverProxy.<anonymous> (src/failoverProxy.ts:37:32) at Generator.throw (<anonymous>) at rejected (src/failoverProxy.ts:5:3638) at processTicksAndRejections (node:internal/process/task_queues:95:5) ====== /block/:hash: gives us the Genesis block by hash./block/:hash gives us the Genesis block by hash ====== Error: Error connecting to known Chronik instances at FailoverProxy.<anonymous> (src/failoverProxy.ts:37:32) at Generator.throw (<anonymous>) at rejected (src/failoverProxy.ts:5:3638) at processTicksAndRejections (node:internal/process/task_queues:95:5) ====== /block/:hash: gives us the Genesis block by height./block/:hash gives us the Genesis block by height ====== Error: Error connecting to known Chronik instances at FailoverProxy.<anonymous> (src/failoverProxy.ts:37:32) at Generator.throw (<anonymous>) at rejected (src/failoverProxy.ts:5:3638) at processTicksAndRejections (node:internal/process/task_queues:95:5) ====== /blocks/:start/:end: gives us the first few blocks./blocks/:start/:end gives us the first few blocks ====== Error: Error connecting to known Chronik instances at FailoverProxy.<anonymous> (src/failoverProxy.ts:37:32) at Generator.throw (<anonymous>) at rejected (src/failoverProxy.ts:5:3638) at processTicksAndRejections (node:internal/process/task_queues:95:5) ====== /tx/:txid: results in the right tx./tx/:txid results in the right tx ====== Error: Error connecting to known Chronik instances at FailoverProxy.<anonymous> (src/failoverProxy.ts:37:32) at Generator.throw (<anonymous>) at rejected (src/failoverProxy.ts:5:3638) at processTicksAndRejections (node:internal/process/task_queues:95:5) ====== /token/:tokenId: gives us a token./token/:tokenId gives us a token ====== Error: Error connecting to known Chronik instances at FailoverProxy.<anonymous> (src/failoverProxy.ts:37:32) at Generator.throw (<anonymous>) at rejected (src/failoverProxy.ts:5:3638) at processTicksAndRejections (node:internal/process/task_queues:95:5) ====== /validate-utxos: validates the UTXOs./validate-utxos validates the UTXOs ====== Error: Error connecting to known Chronik instances at FailoverProxy.<anonymous> (src/failoverProxy.ts:37:32) at Generator.throw (<anonymous>) at rejected (src/failoverProxy.ts:5:3638) at processTicksAndRejections (node:internal/process/task_queues:95:5) ====== /script/:type/:payload/history: gives us the first page./script/:type/:payload/history gives us the first page ====== Error: Error connecting to known Chronik instances at FailoverProxy.<anonymous> (src/failoverProxy.ts:37:32) at Generator.throw (<anonymous>) at rejected (src/failoverProxy.ts:5:3638) at processTicksAndRejections (node:internal/process/task_queues:95:5) ====== /script/:type/:payload/history: gives us an empty page for ?page=1./script/:type/:payload/history gives us an empty page for ?page=1 ====== Error: Error connecting to known Chronik instances at FailoverProxy.<anonymous> (src/failoverProxy.ts:37:32) at Generator.throw (<anonymous>) at rejected (src/failoverProxy.ts:5:3638) at processTicksAndRejections (node:internal/process/task_queues:95:5) ====== /script/:type/:payload/history: gives us just one tx for ?page_size=1./script/:type/:payload/history gives us just one tx for ?page_size=1 ====== Error: Error connecting to known Chronik instances at FailoverProxy.<anonymous> (src/failoverProxy.ts:37:32) at Generator.throw (<anonymous>) at rejected (src/failoverProxy.ts:5:3638) at processTicksAndRejections (node:internal/process/task_queues:95:5) ====== /script/:type/:payload/history: gives us the Genesis tx for ?page=1&page_size=1./script/:type/:payload/history gives us the Genesis tx for ?page=1&page_size=1 ====== Error: Error connecting to known Chronik instances at FailoverProxy.<anonymous> (src/failoverProxy.ts:37:32) at Generator.throw (<anonymous>) at rejected (src/failoverProxy.ts:5:3638) at processTicksAndRejections (node:internal/process/task_queues:95:5) ====== /script/:type/:payload/utxos: gives us the UTXOs./script/:type/:payload/utxos gives us the UTXOs ====== Error: Error connecting to known Chronik instances at FailoverProxy.<anonymous> (src/failoverProxy.ts:37:32) at Generator.throw (<anonymous>) at rejected (src/failoverProxy.ts:5:3638) at processTicksAndRejections (node:internal/process/task_queues:95:5) ====== /ws: connects to the ws./ws connects to the ws ====== Error: Error connecting to known Chronik websockets at FailoverProxy.<anonymous> (src/failoverProxy.ts:53:9) at Generator.next (<anonymous>) at fulfilled (src/failoverProxy.ts:5:3451) at processTicksAndRejections (node:internal/process/task_queues:95:5) ====== /ws: connects to a working ws in an array of broken ws./ws connects to a working ws in an array of broken ws ====== Error: Error connecting to known Chronik websockets at FailoverProxy.<anonymous> (src/failoverProxy.ts:53:9) at Generator.next (<anonymous>) at fulfilled (src/failoverProxy.ts:5:3451) at processTicksAndRejections (node:internal/process/task_queues:95:5)
Each failure log is accessible here:
/blockchain-info: gives us the blockchain info./blockchain-info gives us the blockchain info
/block/:hash: gives us the Genesis block by hash./block/:hash gives us the Genesis block by hash
/block/:hash: gives us the Genesis block by height./block/:hash gives us the Genesis block by height
/blocks/:start/:end: gives us the first few blocks./blocks/:start/:end gives us the first few blocks
/tx/:txid: results in the right tx./tx/:txid results in the right tx
/token/:tokenId: gives us a token./token/:tokenId gives us a token
/validate-utxos: validates the UTXOs./validate-utxos validates the UTXOs
/script/:type/:payload/history: gives us the first page./script/:type/:payload/history gives us the first page
/script/:type/:payload/history: gives us an empty page for ?page=1./script/:type/:payload/history gives us an empty page for ?page=1
/script/:type/:payload/history: gives us just one tx for ?page_size=1./script/:type/:payload/history gives us just one tx for ?page_size=1
/script/:type/:payload/history: gives us the Genesis tx for ?page=1&page_size=1./script/:type/:payload/history gives us the Genesis tx for ?page=1&page_size=1
/script/:type/:payload/utxos: gives us the UTXOs./script/:type/:payload/utxos gives us the UTXOs
/ws: connects to the ws./ws connects to the ws
/ws: connects to a working ws in an array of broken ws./ws connects to a working ws in an array of broken ws
Failed tests logs:
====== /blockchain-info: gives us the blockchain info./blockchain-info gives us the blockchain info ====== Error: Error connecting to known Chronik instances at FailoverProxy.<anonymous> (src/failoverProxy.ts:37:32) at Generator.throw (<anonymous>) at rejected (src/failoverProxy.ts:5:3638) at processTicksAndRejections (node:internal/process/task_queues:95:5) ====== /block/:hash: gives us the Genesis block by hash./block/:hash gives us the Genesis block by hash ====== Error: Error connecting to known Chronik instances at FailoverProxy.<anonymous> (src/failoverProxy.ts:37:32) at Generator.throw (<anonymous>) at rejected (src/failoverProxy.ts:5:3638) at processTicksAndRejections (node:internal/process/task_queues:95:5) ====== /block/:hash: gives us the Genesis block by height./block/:hash gives us the Genesis block by height ====== Error: Error connecting to known Chronik instances at FailoverProxy.<anonymous> (src/failoverProxy.ts:37:32) at Generator.throw (<anonymous>) at rejected (src/failoverProxy.ts:5:3638) at processTicksAndRejections (node:internal/process/task_queues:95:5) ====== /blocks/:start/:end: gives us the first few blocks./blocks/:start/:end gives us the first few blocks ====== Error: Error connecting to known Chronik instances at FailoverProxy.<anonymous> (src/failoverProxy.ts:37:32) at Generator.throw (<anonymous>) at rejected (src/failoverProxy.ts:5:3638) at processTicksAndRejections (node:internal/process/task_queues:95:5) ====== /tx/:txid: results in the right tx./tx/:txid results in the right tx ====== Error: Error connecting to known Chronik instances at FailoverProxy.<anonymous> (src/failoverProxy.ts:37:32) at Generator.throw (<anonymous>) at rejected (src/failoverProxy.ts:5:3638) at processTicksAndRejections (node:internal/process/task_queues:95:5) ====== /token/:tokenId: gives us a token./token/:tokenId gives us a token ====== Error: Error connecting to known Chronik instances at FailoverProxy.<anonymous> (src/failoverProxy.ts:37:32) at Generator.throw (<anonymous>) at rejected (src/failoverProxy.ts:5:3638) at processTicksAndRejections (node:internal/process/task_queues:95:5) ====== /validate-utxos: validates the UTXOs./validate-utxos validates the UTXOs ====== Error: Error connecting to known Chronik instances at FailoverProxy.<anonymous> (src/failoverProxy.ts:37:32) at Generator.throw (<anonymous>) at rejected (src/failoverProxy.ts:5:3638) at processTicksAndRejections (node:internal/process/task_queues:95:5) ====== /script/:type/:payload/history: gives us the first page./script/:type/:payload/history gives us the first page ====== Error: Error connecting to known Chronik instances at FailoverProxy.<anonymous> (src/failoverProxy.ts:37:32) at Generator.throw (<anonymous>) at rejected (src/failoverProxy.ts:5:3638) at processTicksAndRejections (node:internal/process/task_queues:95:5) ====== /script/:type/:payload/history: gives us an empty page for ?page=1./script/:type/:payload/history gives us an empty page for ?page=1 ====== Error: Error connecting to known Chronik instances at FailoverProxy.<anonymous> (src/failoverProxy.ts:37:32) at Generator.throw (<anonymous>) at rejected (src/failoverProxy.ts:5:3638) at processTicksAndRejections (node:internal/process/task_queues:95:5) ====== /script/:type/:payload/history: gives us just one tx for ?page_size=1./script/:type/:payload/history gives us just one tx for ?page_size=1 ====== Error: Error connecting to known Chronik instances at FailoverProxy.<anonymous> (src/failoverProxy.ts:37:32) at Generator.throw (<anonymous>) at rejected (src/failoverProxy.ts:5:3638) at processTicksAndRejections (node:internal/process/task_queues:95:5) ====== /script/:type/:payload/history: gives us the Genesis tx for ?page=1&page_size=1./script/:type/:payload/history gives us the Genesis tx for ?page=1&page_size=1 ====== Error: Error connecting to known Chronik instances at FailoverProxy.<anonymous> (src/failoverProxy.ts:37:32) at Generator.throw (<anonymous>) at rejected (src/failoverProxy.ts:5:3638) at processTicksAndRejections (node:internal/process/task_queues:95:5) ====== /script/:type/:payload/utxos: gives us the UTXOs./script/:type/:payload/utxos gives us the UTXOs ====== Error: Error connecting to known Chronik instances at FailoverProxy.<anonymous> (src/failoverProxy.ts:37:32) at Generator.throw (<anonymous>) at rejected (src/failoverProxy.ts:5:3638) at processTicksAndRejections (node:internal/process/task_queues:95:5) ====== /ws: connects to the ws./ws connects to the ws ====== Error: Error connecting to known Chronik websockets at FailoverProxy.<anonymous> (src/failoverProxy.ts:53:9) at Generator.next (<anonymous>) at fulfilled (src/failoverProxy.ts:5:3451) at processTicksAndRejections (node:internal/process/task_queues:95:5) ====== /ws: connects to a working ws in an array of broken ws./ws connects to a working ws in an array of broken ws ====== Error: Error connecting to known Chronik websockets at FailoverProxy.<anonymous> (src/failoverProxy.ts:53:9) at Generator.next (<anonymous>) at fulfilled (src/failoverProxy.ts:5:3451) at processTicksAndRejections (node:internal/process/task_queues:95:5)
Each failure log is accessible here:
/blockchain-info: gives us the blockchain info./blockchain-info gives us the blockchain info
/block/:hash: gives us the Genesis block by hash./block/:hash gives us the Genesis block by hash
/block/:hash: gives us the Genesis block by height./block/:hash gives us the Genesis block by height
/blocks/:start/:end: gives us the first few blocks./blocks/:start/:end gives us the first few blocks
/tx/:txid: results in the right tx./tx/:txid results in the right tx
/token/:tokenId: gives us a token./token/:tokenId gives us a token
/validate-utxos: validates the UTXOs./validate-utxos validates the UTXOs
/script/:type/:payload/history: gives us the first page./script/:type/:payload/history gives us the first page
/script/:type/:payload/history: gives us an empty page for ?page=1./script/:type/:payload/history gives us an empty page for ?page=1
/script/:type/:payload/history: gives us just one tx for ?page_size=1./script/:type/:payload/history gives us just one tx for ?page_size=1
/script/:type/:payload/history: gives us the Genesis tx for ?page=1&page_size=1./script/:type/:payload/history gives us the Genesis tx for ?page=1&page_size=1
/script/:type/:payload/utxos: gives us the UTXOs./script/:type/:payload/utxos gives us the UTXOs
/ws: connects to the ws./ws connects to the ws
/ws: connects to a working ws in an array of broken ws./ws connects to a working ws in an array of broken ws