Skip to content

Marconi-Sidechain Test Plan #93

@catch-21

Description

@catch-21

A checklist of functional Integration and End-to-end tests to be implemented (see ADR-8 for overall strategy)

Integration tests

CLI

  • CLI-1: (PLT-6859) that the application starts correctly using each of the the cli options (mandatory and optional)
    • Mandatory flags: node config path, node socket path, marconi db directory, magic id
    • Optional flags: address filter and asset id filter
  • CLI-2: (PLT-6836) local validation correctly catches invalid input, such as incorrectness of address formats for all cli options that take an input and a useful error is shown.
  • CLI-3: query version has correct commit hash

RPC

  • RPC-1: (PLT-6865) that input validation catches each error scenario with useful feedback

    • use property tests to randomise invalid inputs ?
    • getUtxosFromAddress
      • invalid format address (e.g. pubkeyhash instead of Bech32)
      • unsupported address (e.g. stake address)
      • address not included in the --address-to-index
      • createdAfterSlotNo higher than current slot
      • createAfterSlotNo and unspentBeforeSlotNo not a natural number
      • unspentBeforeSlotNo value larger than createdAfterSlotNo
    • getBurnTokensEvents
      • invalid policyId hash
      • invalid afterTx id format
      • policyId not included in --match-asset-id filter
      • policyId is included in --match-asset-id filter but the assetName is not
      • afterTx value is not an existing burn txId (e.g. use one that only mints)
    • getNonceByEpoch
      • epochNo in future
      • epochNo in byron era
      • epochNo not a natural number
    • getActiveStakePoolDelegationByEpoch
      • epochNo not a natural number
      • epochNo in future
    • getActiveStakePoolDelegationByEpoch
      • epochNo not a natural number
      • epochNo in future
  • RPC-2: (PLT-6865) sanity check each RPC method for a valid query to prove validation doesn't block correct use (response data is not important)

    • use property tests to randomise invalid inputs ?
    • getCurrentSyncedBlock
    • getUtxosFromAddress
    • getBurnTokensEvents
    • getNonceByEpoch
    • getActiveStakePoolDelegationByEpoch
  • RPC-3: (PLT-6866) check that only mandatory fields are required for each method

  • RPC-4: getCurrentSyncedBlock test pre-fully-synced response ?

End-to-end tests

  • RPC-1: (PLT-6867) test query response for each method against known correct data when there is lots of other relevant transaction data around the same area (e.g. period or asset policy)
    • getCurrentSyncedBlock
      • check for valid values in result object (e.g. presence and bytestring length)
    • getUtxosFromAddress
      • check at least one unspent and one spent utxo for correct key attributes
      • use createdAfterSlotNo and unspentBeforeSlotNo together to find a specfic utxo
      • query using more than one address included in the --address-to-index filter
      • query address when no --address-to-index filter is used
    • getBurnTokensEvents
      • query using more than one policyId= and assetName pair included in the --match-asset-id filter
      • query policyId when no --match-asset-id is used
      • use slotNo and afterTx together to find a specific burn event
    • getNonceByEpoch
      • check for valid values in result object (e.g. known correct nonce)
    • getActiveStakePoolDelegationByEpoch
      • check for valid values in result object(e.g. check known delegation of a particular epoch remains consistent)
  • RPC-2: (PLT-6868) test query response for each method compared against db-sync's result for a board set of data (query with a wide time period and large number of addresses and assets)
    • PLT-6165 getUtxosFromAddress
    • PLT-5384 getBurnTokensEvents
    • getNonceByEpoch
    • getActiveStakePoolDelegationByEpoch
    • run all tests nightly in CI
    • produce test reports for each test in CI
      • host reports in Allure format

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions