Nice work, Ed. Personally, I do find it more productive to write system tests in Python (dtest builds on ccm to provide a number of utilities that cut down on the bolierplate [1]), but I can understand that others will feel differently and more testing can only improve Cassandra.
Thanks! [1] https://github.com/riptano/cassandra-dtest On Wed, Jan 22, 2014 at 7:06 AM, Edward Capriolo <edlinuxg...@gmail.com> wrote: > The repo: > https://github.com/edwardcapriolo/farsandra > > The code: > Farsandra fs = new Farsandra(); > fs.withVersion("2.0.4"); > fs.withCleanInstanceOnStart(true); > fs.withInstanceName("1"); > fs.withCreateConfigurationFiles(true); > fs.withHost("localhost"); > fs.withSeeds(Arrays.asList("localhost")); > fs.start(); > > The story: > For a while I have been developing applications that use Apache Cassandra as > their data store. Personally I am more of an end-to-end test person then a > mock test person. For years I have relied heavily on Hector's embedded > cassandra to bring up Cassandra in a sane way inside a java project. > > The concept of Farsandra is to keep Cassandra close (in end to end tests and > not mocked away) but keep your classpath closer (running cassandra embedded > should be seamless and not mess with your client classpath). > > Recently there has been much fragmentation with Hector Asytanax, CQL, and > multiple Cassandra releases. Bringing up an embedded test is much harder > then it need be. > > Cassandra's core methods get, put, slice over thrift have been > wire-compatible from version 0.7 - current. However Java libraries for > thrift and things like guava differ across the Cassandra versions. This > makes a large number of "issues" when trying to use your favourite client > with your 1 or more versions of Cassandra. (sometimes a thrift mismatch > kills the entire integration and you (CANT)! test anything. > > Farsandra is much like https://github.com/pcmanus/ccm in that it launches > Cassandra instances remotely inside a sub-process. Farsandra is done in java > not python, making it easier to use with java development. > > I will not go and say Farsandra solves all problems. in fact it has it's own > challenges (building yaml configurations across versions, fetching binary > cassandra from the internet), but it opens up new opportunities to developer > complicated multi-node testing scenarios which are impossible due to > re-entrant embedded cassandra code! > > Have fun. -- Jonathan Ellis Project Chair, Apache Cassandra co-founder, http://www.datastax.com @spyced