quickcheck-state-machine
quickcheck-state-machine copied to clipboard
Test monadic programs using state machine based models
In the [latest revision](https://hackage.haskell.org/package/quickcheck-state-machine-0.7.0/revision/0.cabal) (`r0`) of `quickcheck-state-machine-0.7` on Hackage, there is a constraint `text >=1.2.4.0`, which is not present in [master](https://github.com/advancedtelematic/quickcheck-state-machine/blob/3cbf466db302235afdea91dac06a57b8fe0f0b4d/quickcheck-state-machine.cabal#L74). This constraint makes it *currently* impossible to build with...
Module `Test.StateMachine.Labelling` [defines](https://github.com/advancedtelematic/quickcheck-state-machine/blob/97728ec744af61fc31be46652e3ff0ff0622e2d0/src/Test/StateMachine/Labelling.hs#L98-104) ```haskell data Event model cmd resp (r :: Type -> Type) = Event { eventBefore :: model r , eventCmd :: cmd r , eventAfter :: model...
My system under test has an operation that returns a list of references, however, there is no way to precisely mock it using the model. I only know a constraint...
Work in progress. Consider the following example, a simple server that when sent a number replies by sending the sum of all numbers it has been sent so far (asynchronously,...
[Jepsen](https://github.com/jepsen-io/jepsen) is a framework for testing distributed systems. It has been used to find bugs in [many](https://jepsen.io/analyses) systems, e.g. Kafka, Cassandra, RabbitMQ. It is also based on performing randomly generate...
Some links: * http://www.anishathalye.com/2017/06/04/testing-distributed-systems-for-linearizability/ * https://github.com/anishathalye/porcupine * https://github.com/ahorn/linearizability-checker We should also think about incomplete histories...
Writing example `Commands` by hand (when developing the tests, or when wanting to save particular generated tests) is a bit inconvenient. Not only does `Commands` capture the result of the...
Fix CI
From https://travis-ci.org/advancedtelematic/quickcheck-state-machine/jobs/582287824 : ``` AnnotateC "ExceptionThrown \"UnexpectedResponse \\\"peers were empty while querying status! This probably indicates that the node path /rqlite/file/data does not exist or the peers file was deleted\\\"\""...
As @stevana mentioned > Regarding visualisation: perhaps it's easier to use/read graphviz (dot) instead of ASCII? > > Examples: > > Jepsen: https://github.com/jepsen-io/knossos/blob/master/README.md#visualization-of-faults > Molly: https://gist.github.com/cstorey/38d2ba04f661a7ed727d76cd47d6b40e#file-lamport-svg we can use dot...
I think this is a very common issue many users face: Since q-s-m is used to test monadic code, it's possible that there is some interference between consecutive tests, or...