Expand description

Framework code for making it easier to write test cases.

If you want to create a common test setup that is shared by multiple test cases, the best way is to define them as new traits within the framework module.

The actual operations for bootstrapping the test setup should not be implemented in this module. Instead, they should be implemented as functions in the bootstrap module. This is so that test writers can still have the option to manually bootstrap the test setup without getting locked-in to using the test framework.

We can think of the test framework as being a DSL for making it easier to write declarative tests. On the other hand, the bootstrap module allows the same test setup to be done in an imperative way.

Common Test Cases

Here is a short list of common traits that are used for defining simple test scenarios:

  • BinaryNodeTest - Test with two full nodes running without setting up the relayer.
  • BinaryChainTest - Test with two full nodes running with the relayer setup with chain handles.
  • BinaryChannelTest - Test with two full nodes running with the relayer setup with chain handles together with channels that are already connected.

Modules

Base infrastructure for the test framework. Includes basic setup for initializing the logger and loading the test configuration.
Constructs for test cases that involve interaction between two chains.
Run N-ary test cases that involve more than 2 chains.
Constructs for implementing overrides for test cases.