Agoric / agoric-sdk

monorepo for the Agoric Javascript smart contract platform
Apache License 2.0
325 stars 205 forks source link

Test tools for async flow #9753

Open mhofman opened 1 month ago

mhofman commented 1 month ago

What is the Problem Being Solved?

In order to gain confidence in the resumability of orchestrated flows, we need to actually upgrade contracts at different steps of an orchestrated flow.

Description of the Design

One way to do that might be to have a test jig into async flow to enable executing the guest function "step by step".

For retriable, it'd give a way to not fulfil the vow with the result of the retried function, or run the retried function multiple times before fulfilling.

Security Considerations

Scaling Considerations

Test Plan

Upgrade Considerations

turadg commented 1 month ago

In discussion we realized this might detect false-positives because it will allow stopping at places the kernel won't. As an alternative, we can have bootstrapTests force bridge stalls through the message mocking. @michaelfig and I will pursue that in the context of https://github.com/Agoric/agoric-sdk/issues/9303. I think we should leave this ticket open for some general utilities for async-flow.

mhofman commented 1 month ago

Another use case that has recently arisen is the ability to more easily test values piercing the membrane: https://github.com/Agoric/agoric-sdk/issues/9780