-
Notifications
You must be signed in to change notification settings - Fork 84
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Model-based Testing With Quickcheck-Dynamic #391
Conversation
Transactions CostsSizes and execution budgets for Hydra protocol transactions. Note that unlisted parameters are currently using
Cost of Init Transaction
Cost of Commit TransactionCurrently only one UTxO per commit allowed (this is about to change soon)
Cost of CollectCom Transaction
Cost of Close Transaction
Cost of Contest Transaction
Cost of Abort Transaction
Cost of FanOut TransactionInvolves spending head output and burning head tokens. Uses ada-only UTxO for better comparability.
|
and spawns a thread to run the nodes
Also distinct ctors for each action type and increase success to increase coverage
also provide correct Eq and Show instances for Actions
Question: how do we get a handle on the test nodes from within the property execution?
Need to accumulate observed outputs
Now we can write moar!
Also adapt generators to reduce the number of discarded actions
* Use tabulate instead of label for better classification * Improve generators to reduce the number of discards * Tweak frequencies to increase the number of Initial -> Open transitions which are more interesting
Implementing actionName allows us to provide sensible names for actions and remove the need for dedicated constructors.
So far, we only send to addresses owned by participants of the head. We may want to change that later, but that is tricky because, if there's no longer any utxo owned by participants, they can't spend anything.
We realise we need to make our model more abstract as we don't have access to the details of the snapshots easily.
We model payments, and only within the inner-circle of the head participants. This is analogous to an account-based system. Kind of.
This removes the Typable constraint on the model and was needed to explore ideas on how we could use DynLogic stuff with the ActionMonad being over IOSim
Still puzzling how to get it to work with (forall s. IOSim s)
This is stashed in another branch we'll be working on soonish
Fix #375 |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
These things need addressing:
- api changed -> update api.yaml and changelog (why are we seeing no CI errors?)
- Take a
Proxy log
instead of aProxy tx
inprintTrace
Oddly enough this did not break our tests, we probably need to strengthen our property check here
printTrace _ tr = | ||
unlines . map (decodeUtf8 . Aeson.encode) $ | ||
selectTraceEventsDynamic' @_ @(HydraNodeLog tx) tr | ||
selectTraceEventsDynamic' @_ @log tr |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
👍
This is a first shot of MBT approach using Quviq's framework, I think we should merge it as-is. We have a follow-up meeting with Quviq end of the week which will provide some insights on what to do next. |
No description provided.