Page MenuHomePhabricator

[chronik-client] Fix flaky websocket integration test
ClosedPublic

Authored by Fabien on Aug 1 2024, 11:54.

Details

Reviewers
PiRK
Group Reviewers
Restricted Project
Commits
rABCc291418925bd: [chronik-client] Fix flaky websocket integration test
Summary

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.

Test Plan
./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

Fabien requested review of this revision.Aug 1 2024, 11:54
This revision is now accepted and ready to land.Aug 1 2024, 13:29

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

This revision was landed with ongoing or failed builds.Aug 1 2024, 14:36
This revision was automatically updated to reflect the committed changes.