Skip to content

Marconi-Sidechain Test Plan #93

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

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions