Agoric / agoric-sdk

monorepo for the Agoric Javascript smart contract platform
Apache License 2.0
327 stars 207 forks source link

Support simapp for agd and write sim tests of our modules #9022

Open JimLarson opened 8 months ago

JimLarson commented 8 months ago

What is the Problem Being Solved?

Cosmos-sdk has a simapp application that sets up a minimal Cosmos application with no external interfaces for use in testing. It is used in unit tests and in whole-system simulation tests.

In agoric-sdk, we do not use simapp, largely due to the difficulty in integration with the swingset side of the running system. But the work on split brain makes it more tractable to stub out the "bridge" connection to the node runtime and write a simapp, at least for the golang half of agd.

We'd like to adapt or clone simapp for use in agoric-sdk/golang/cosmos, adapt our current verbose, ad-hoc, limited unit tests to be simpler and more accurate by using this simapp, and write some whole-system (or at least half-system) simulation tests to run in CI.

Description of the Design

Security Considerations

N/A

Scaling Considerations

N/A

Test Plan

Upgrade Considerations

Relies on the split-brain work that's been merged into master, so to release work built upon this, we'd have to release the split-brain code too.

JimLarson commented 8 months ago

Note from 0.47 UPGRADE doc:

The simapp package should not be imported in your own app. Instead, you should import the runtime.AppI interface, that defines an App, and use the simtestutil package for application testing.