Farsandra 0.0.1 is in maven central. Added a couple features to allow customizing cassandra.yaml and cassandra env (control memory of forked instance), auto downloading of version specified.
http://search.maven.org/#search%7Cga%7C1%7Ca%3A%22farsandra%22 On Wednesday, January 22, 2014, Edward Capriolo <edlinuxg...@gmail.com> wrote: > Right, > > This does not have to be thought of as a replacement for ccm or dtest. > > The particular problems I tend to have are: > > When trying to do Hive and Cassandra storage handler, Cassandra and Hive had incompatible versions of antlr. Short of rebuilding one or both it can not be resolved. > > I have had a version of Astyanax that is build against thrift 0.7.X and Cassandra is using thrift 0.9.X. So if I can get the Cassandra Server off the classpath the conflict goes away. > > You could do something like dtest like scenario or ccm thing as well. It is a 100% java (minus the fork) solution. That has some wins but may not be worth re-writing something you already have. > > Edward > > > > > On Wed, Jan 22, 2014 at 10:11 PM, Jonathan Ellis <jbel...@gmail.com> wrote: >> >> 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 > > -- Sorry this was sent from mobile. Will do less grammar and spell check than usual.