Hi all, I would like to propose adding [junit-quickcheck](1) to Geode. It's named after the [Haskell tool](2) and functions more or less as automated testing for JUnit Theories (if anyone is familiar with those).
Property-based testing means basically that you write a function that tests some code and checks some conditions you expect to hold true for all inputs, and then have a computer program test all sorts of weird inputs to try prove you wrong. Because the test data is randomly generated, you get to test against more inputs than you might even think of, and because the seed is saved, the test is reproducible. If junit-quickcheck finds one failure, it will even try to narrow down to a smallest example of a test failure. There are some limitations to this library -- for example, it doesn't tend to generate strings more than a few hundred characters in length (though this increases with sample size, so if you kick the sample size up, you can get into the thousands fairly quickly). [ScalaCheck](3) is another option that does much the same and seems to have more functionality (and in particular, it seems to be able to handle state in tests), but it requires Scala to run and tests are also written in Scala (though it can test Java code). I don't think there will be much support for including Scala as a dependency for Geode. I've put up a Review board request and PR: https://reviews.apache.org/r/56242/ https://github.com/apache/geode/pull/383 I'd like to hear the community's input. Thanks, Galen O'Sullivan [1]: http://pholser.github.io/junit-quickcheck/site/0.7/ [2]: http://www.cse.chalmers.se/~rjmh/QuickCheck/manual.html [3]: http://www.scalacheck.org/index.html