Hey folks, I am mostly done with a patch that brings Harry in-tree [1]. I will trigger one more CI run overnight, and my intention was to merge it some time soon, but I wanted to give a fair warning here, since this is a relatively large patch.
Good news for everyone that it: a) touches no production code whatsoever. Only test (in-jvm dtest namely) code that was using Harry already. b) the only tests that are changed are ones that used a duplicate version of placement simulator we had both for testing TCM, and in Harry c) in addition, I have converted 3 existing TCM tests to a new API to have some base for examples/usage. Since we were effectively relying on this code for a while now, and the intention now is to converge to: a) fewer different generators, and have a shareable version of generators for everyone to use accross the base b) a testing tool that can be useful for both trivial cases, and complex scenarios myself and many other Cassandra contributors have expressed an opinion that bringing Harry in-tree will be highly benefitial. I strongly believe that bringing Harry in-tree will help to lower the barrier for fuzz test and simplify co-development of Cassandra and Harry. Previously, it has been rather difficult to debug edge cases because I had to either re-compile an in-jvm dtest jar and bring it to Harry, or re-compile a Harry jar and bring it to Cassandra, which is both tedious and time consuming. Moreover, I believe we have missed at very least one RT regression [2] because Harry was not in-tree, as its tests would've caught the issue even with the model that existed. For other recently found issues, I think having Harry in-tree would have substantially lowered a turnaround time, and allowed me to share repros with developers of corresponding features much quicker. I do expect a slight learning curve for Harry, but my intention is to build a web of simple tests (worked on some of them yesterday after conversation with David already), which can follow the in-jvm-dtest pattern of find-similar-test / copy / modify. There's already copious documentation, so I do not believe not having docs for Harry was ever an issue, since there have been plenty. You all are aware of my dedication to testing and quality of Apache Cassandra, and I hope you also see the benefits of having a model checker in-tree. Thank you and happy upcoming holidays, --Alex [1] https://issues.apache.org/jira/browse/CASSANDRA-19210 [2] https://issues.apache.org/jira/browse/CASSANDRA-18932