Agoric / agoric-sdk

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

upgrade tests of Orch contracts restarting during a flow #9303

Open erights opened 5 months ago

erights commented 5 months ago

What is the Problem Being Solved?

Confidence in upgrading Orchestration flows while they're in progress.

Description of the Design

Upgrade test of each example contract.

For remote calls to Agoric vats, can use retriable like in https://github.com/Agoric/agoric-sdk/pull/9719/ once we have https://github.com/Agoric/agoric-sdk/issues/9541

### Dependencies
- [ ] https://github.com/Agoric/agoric-sdk/issues/9541

In parallel make test that wait on bridge messages.

Security Considerations

Scaling Considerations

Test Plan

Upgrade Considerations

July 22 replaced earlier test: See #9125 #9126 #9097 #7966

The point of asyncFlow is for these flows to survive upgrade. However, the current upgrade testing framework asyncFlow uses, as of #9097, is low fidelity. All incarnations co-exist in one JS heap, and their turns may even interleave! This creates known failures to adequately test upgradability #9126 #9125 . Worse, when it succeeds, we don't know what problems might have been detected by a higher fidelity test, giving us less confidence than we'd like.

Most likely, we should follow the precedent of https://github.com/Agoric/agoric-sdk/pull/7966

erights commented 2 months ago

Hi @mhofman , ok to reassign to you?

turadg commented 2 months ago

https://github.com/Agoric/agoric-sdk/pull/9719/ has one upgrade. We'll need to test the vat terminating at any point, for which we'll need some testing tools in async-flow: https://github.com/Agoric/agoric-sdk/issues/9753

I'll keep this open until we have tests that do that.