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