Skip to content

Overarching design for new functional testing #38

@fcooper8472

Description

@fcooper8472

Some thoughts, very much open to discussion. Most relevant to @MichaelClerx @martinjrobins @ben18785.

  • Move the actual functional tests to the main PINTS repo. This will ensure all PINTS specific code is version controlled with PINTS, not somewhere else. I would imagine this being a new top level directory in the PINTS repo. This also means a single commit hash gives you a complete view into PINTS + functional testing state at once.
  • Functional testing repo would just contain code for running those tests, helping to separate code that uses PINTS from the infrastructure that runs the functional test.
  • Use GitHub pages to host a new (hugo) website for showing results, using this template: each model (mcmc_banana, nested_normal, etc) would have top-level navigation sections, with specific tests (mcmc_banana_DifferentialEvolutionMCMC, mcmc_banana_DreamMCMC, ...) being individual pages containing plots.
  • Frontpage would include an overview of any currently failing tests (with links).
  • Outputs could be customised on a per-test basis because each test would write to a dedicated table in the sqlite database: presumably functional testing would pass a database connection to the test. This eliminates the need for a hacky random JSON object, and instead each test would have a nice simple flat data table containing all relevant info.
  • Plots would use altair, would be interactive, and allow clicking through to commits, hovering over points, etc.
  • Each test would be responsible for plotting: for instance by returning a list of vega-lite specifications.
  • The tests could be run on skip, via GitHub actions: each run would cause a fresh checkout of functional testing and PINTS, and would refer to a hardcoded database location (which will grow and is not suitable for versioning).

Anyone have any major thoughts/comments on this as a basic structure?

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    Status

    To do

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions