cassandra-user mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Jonathan Ellis <jbel...@gmail.com>
Subject Re: Introducing farsandra: A different way to integration test with c*
Date Thu, 23 Jan 2014 03:11:13 GMT
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 <edlinuxguru@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

Mime
View raw message