-
Notifications
You must be signed in to change notification settings - Fork 5
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
How to use? #3
Comments
Yeah, the documentation (other than comments in the code itself) is basically non-existent at this point ;-) If you're interested in using it, I'd be more than happy to write up documentation, and help you iron out any issues you run into. FWIW, at some point in the future, I think it would be fun to give a tech talk at Typesafe. For now though, the tool itself obviously isn't easily understandable. For now, a whirwind tour:
|
Thanks for the description. After reading the raft blog post I think the tool looks interesting and I was thinking I could try it on Akka Distributed Data. I can't promise that I will do it, but if I do and run into questions I will ask you. |
That looks interesting! I wasn't aware of that library. We're actually looking for another system to evaluate on for our research paper, and that use case looks interesting and different from our previous two use cases (Spark, akka-raft). If you'd be willing to walk us through an example use case for that library, we'd be glad to set up the fuzzer. (Might be somewhat delayed though -- I'm busy for the next 3 weeks or so) |
One concern though: we need well-defined safety conditions to check. I'm no expert, but it seems that CDRTs are specified as a liveness condition ("eventually, all updates will be reflected on all nodes, and all values will be the same"). Are there safety conditions we can also check? I guess we could also convert the liveness condition into a safety condition ("if all nodes have received a message from all other nodes, the CDRT value should be the same across all nodes") |
We might also check safety conditions for each consistency level ("If a Replicator.UpdateSuccess is sent, then at least N nodes must have that value replicated") |
That sounds awesome. As a first inspiration you can look at this test: https://github.com/akka/akka/blob/master/akka-distributed-data/src/multi-jvm/scala/akka/cluster/ddata/JepsenInspiredInsertSpec.scala We should probably use the Starting out with a |
@patriknw One more questions [also see above]:
Thanks! |
That bug is actually not in Distributed Data. It's in Cluster Sharding's usage of Distributed Data, so it's not intereresting for you. Issues are marked with label t:distributed-data, but non of these are bugs as far as I know.
Jonas' was an early prototype, which got me inspired. Distributed Data still have a few code lines that originates from Jonas' library. There is also my patriknw/akka-data-replication, which is a predecessor of Akka Distributed Data. Both these libraries are superseeded by Akka Distributed Data.
Yes, you can start several ActorSystem instances in the same JVM, each corresponds to an Akka Cluster node, and each can host a Replicator actor (or more Replicator actors, but that's not interesting to test). Each must bind to a unique remoting port. Here is an example of how to do that: https://github.com/akka/akka/blob/master/akka-samples/akka-sample-cluster-scala/src/main/scala/sample/cluster/simple/SimpleClusterApp.scala |
Awesome, thanks! |
Hey @patriknw, sorry for the delay on this. I just bumped across a tool that may help you achieve the same kind of fuzz testing without having to deal with the vagaries of research prototypes. Check it out here: |
@colin-scott Wow, thank you a lot for mentioning our tool 👍 |
thanks for the link |
Are there any instructions of how to setup a project with the Fuzz tester? I can see that the branches contain tests for various projects, but it is hard to see what I would need to do to setup a new project.
The text was updated successfully, but these errors were encountered: