Re: How do you run integration tests for your cassandra code?

2014-10-14 Thread Daniel Compton
At SMX we use https://github.com/SMX-LTD/ccm-clj for our Cassandra integration 
tests. ccm-clj is a Clojure wrapper around CCM. 

--
Daniel

 On 14/10/2014, at 6:54 pm, Ranjib Dey dey.ran...@gmail.com wrote:
 
 you can use tools like chef along side vagrant to bring a cassandra. I 
 personally prefer LXC containers, as they mimic full blown vms, along side 
 chef-lxc which provides chef's awesome DSL for container customization 
 (similar dockerfile, and you wont install chef inside the container), for our 
 scenarios, i use 5 node clusters. and those whole spawn+ token set + 
 rebalance is done as part of the test setup, 
 
 this is assuming you want to run full blown integration test within a single 
 host. if you can afford multiple hosts, you can set up either ephemeral hosts 
 (chef-metal) or dedicated hosts (normal chef nodes but with a CI agent , like 
 team city or go-cd etc).
 
 So, depending upon how big you want integration environment (from a single 
 host developer environment) till a production clone (say for capacity 
 planning  load testing), you can automate cassandra cluster provisioning 
 before you actually kick in your tests, which might be jmeter/gatling based 
 testing to actual unit/functional/UAT style testing. I use chef, but im sure 
 alternate exists in other frameworks
 hope this help
 ranjib 
 
 On Mon, Oct 13, 2014 at 10:36 PM, Paco Trujillo f.truji...@genetwister.nl 
 wrote:
 Hi Kevin
 
  
 
 We are using a similar solution than horschi. In the past we use 
 CassandraUnit (https://github.com/jsevellec/cassandra-unit) but truncate the 
 tables after and before each test works better for us. We also set 
 gc_grace_seconds to zero.
 
  
 
 
  
 
 From: horschi [mailto:hors...@gmail.com] 
 Sent: maandag 13 oktober 2014 22:17
 To: user@cassandra.apache.org
 Subject: Re: How do you run integration tests for your cassandra code?
 
  
 
 Hi Kevin,
 
 I run my tests against my locally running Cassandra instance. I am not using 
 any framework, but simply truncate all my tables after/before each test. 
 With which I am quite happy.
 
  
 
 You have to enable the unsafeSystem property, disable durable writes on the 
 CFs and disable auto-snapshot in the yaml for it to be fast.
 
 kind regards,
 
 Christian
 
  
 
 On Mon, Oct 13, 2014 at 9:50 PM, Kevin Burton bur...@spinn3r.com wrote:
 
 Curious to see if any of you have an elegant solution here.  
 
  
 
 Right now I”m using cassandra unit;
 
  
 
 https://github.com/jsevellec/cassandra-unit
 
  
 
 for my integration tests.
 
  
 
 The biggest problem is that it doesn’t support shutdown.  so I can’t stop or 
 cleanup after cassandra between tests.
 
  
 
 I have other Java daemons that have the same problem.  For example, ActiveMQ 
 doesn’t clean up after itself.
 
  
 
 I was *thinking* of using docker or vagrant to startup a daemon in a 
 container, then shut it down between tests.
 
  
 
 But this seems difficult to setup and configure … as well as being not 
 amazingly portable.
 
  
 
 Another solution is to use a test suite, and a setUp/tearDown that drops all 
 tables created by a test.   This way you’re still on the same cassandra 
 instance, but the tables are removed for each pass.
 
  
 
 Anyone have an elegant solution to this?
 
  
 
 --
 
 Founder/CEO Spinn3r.com
 
 Location: San Francisco, CA
 
 blog: http://burtonator.wordpress.com
 
 … or check out my Google+ profile
 
 


How do you run integration tests for your cassandra code?

2014-10-13 Thread Kevin Burton
Curious to see if any of you have an elegant solution here.

Right now I”m using cassandra unit;

https://github.com/jsevellec/cassandra-unit

for my integration tests.

The biggest problem is that it doesn’t support shutdown.  so I can’t stop
or cleanup after cassandra between tests.

I have other Java daemons that have the same problem.  For example,
ActiveMQ doesn’t clean up after itself.

I was *thinking* of using docker or vagrant to startup a daemon in a
container, then shut it down between tests.

But this seems difficult to setup and configure … as well as being not
amazingly portable.

Another solution is to use a test suite, and a setUp/tearDown that drops
all tables created by a test.   This way you’re still on the same cassandra
instance, but the tables are removed for each pass.

Anyone have an elegant solution to this?

-- 

Founder/CEO Spinn3r.com
Location: *San Francisco, CA*
blog: http://burtonator.wordpress.com
… or check out my Google+ profile
https://plus.google.com/102718274791889610666/posts
http://spinn3r.com


Re: How do you run integration tests for your cassandra code?

2014-10-13 Thread Philip Thompson
Kevin,

Have you looked at the Cassandra integration tests used by the Cassandra
development team: https://github.com/riptano/cassandra-dtest ? They make
use of CCM for integration testing: https://github.com/pcmanus/ccm

Philip Thompson

On Mon, Oct 13, 2014 at 2:50 PM, Kevin Burton bur...@spinn3r.com wrote:

 Curious to see if any of you have an elegant solution here.

 Right now I”m using cassandra unit;

 https://github.com/jsevellec/cassandra-unit

 for my integration tests.

 The biggest problem is that it doesn’t support shutdown.  so I can’t stop
 or cleanup after cassandra between tests.

 I have other Java daemons that have the same problem.  For example,
 ActiveMQ doesn’t clean up after itself.

 I was *thinking* of using docker or vagrant to startup a daemon in a
 container, then shut it down between tests.

 But this seems difficult to setup and configure … as well as being not
 amazingly portable.

 Another solution is to use a test suite, and a setUp/tearDown that drops
 all tables created by a test.   This way you’re still on the same cassandra
 instance, but the tables are removed for each pass.

 Anyone have an elegant solution to this?

 --

 Founder/CEO Spinn3r.com
 Location: *San Francisco, CA*
 blog: http://burtonator.wordpress.com
 … or check out my Google+ profile
 https://plus.google.com/102718274791889610666/posts
 http://spinn3r.com




Re: How do you run integration tests for your cassandra code?

2014-10-13 Thread horschi
Hi Kevin,

I run my tests against my locally running Cassandra instance. I am not
using any framework, but simply truncate all my tables after/before each
test. With which I am quite happy.

You have to enable the unsafeSystem property, disable durable writes on the
CFs and disable auto-snapshot in the yaml for it to be fast.

kind regards,
Christian


On Mon, Oct 13, 2014 at 9:50 PM, Kevin Burton bur...@spinn3r.com wrote:

 Curious to see if any of you have an elegant solution here.

 Right now I”m using cassandra unit;

 https://github.com/jsevellec/cassandra-unit

 for my integration tests.

 The biggest problem is that it doesn’t support shutdown.  so I can’t stop
 or cleanup after cassandra between tests.

 I have other Java daemons that have the same problem.  For example,
 ActiveMQ doesn’t clean up after itself.

 I was *thinking* of using docker or vagrant to startup a daemon in a
 container, then shut it down between tests.

 But this seems difficult to setup and configure … as well as being not
 amazingly portable.

 Another solution is to use a test suite, and a setUp/tearDown that drops
 all tables created by a test.   This way you’re still on the same cassandra
 instance, but the tables are removed for each pass.

 Anyone have an elegant solution to this?

 --

 Founder/CEO Spinn3r.com
 Location: *San Francisco, CA*
 blog: http://burtonator.wordpress.com
 … or check out my Google+ profile
 https://plus.google.com/102718274791889610666/posts
 http://spinn3r.com




Re: How do you run integration tests for your cassandra code?

2014-10-13 Thread Ben Hood
FWIW we run a 3 node cluster with ccm on Travis to regression test the
gocql driver - here's the descriptor:
https://github.com/gocql/gocql/blob/master/.travis.yml

On Mon, Oct 13, 2014 at 9:04 PM, Philip Thompson 
philip.thomp...@datastax.com wrote:

 Kevin,

 Have you looked at the Cassandra integration tests used by the Cassandra
 development team: https://github.com/riptano/cassandra-dtest ? They make
 use of CCM for integration testing: https://github.com/pcmanus/ccm

 Philip Thompson

 On Mon, Oct 13, 2014 at 2:50 PM, Kevin Burton bur...@spinn3r.com wrote:

 Curious to see if any of you have an elegant solution here.

 Right now I”m using cassandra unit;

 https://github.com/jsevellec/cassandra-unit

 for my integration tests.

 The biggest problem is that it doesn’t support shutdown.  so I can’t stop
 or cleanup after cassandra between tests.

 I have other Java daemons that have the same problem.  For example,
 ActiveMQ doesn’t clean up after itself.

 I was *thinking* of using docker or vagrant to startup a daemon in a
 container, then shut it down between tests.

 But this seems difficult to setup and configure … as well as being not
 amazingly portable.

 Another solution is to use a test suite, and a setUp/tearDown that drops
 all tables created by a test.   This way you’re still on the same cassandra
 instance, but the tables are removed for each pass.

 Anyone have an elegant solution to this?

 --

 Founder/CEO Spinn3r.com
 Location: *San Francisco, CA*
 blog: http://burtonator.wordpress.com
 … or check out my Google+ profile
 https://plus.google.com/102718274791889610666/posts
 http://spinn3r.com





RE: How do you run integration tests for your cassandra code?

2014-10-13 Thread Paco Trujillo
Hi Kevin

We are using a similar solution than horschi. In the past we use CassandraUnit 
(https://github.com/jsevellec/cassandra-unit) but truncate the tables after and 
before each test works better for us. We also set gc_grace_seconds to zero.


From: horschi [mailto:hors...@gmail.com]
Sent: maandag 13 oktober 2014 22:17
To: user@cassandra.apache.org
Subject: Re: How do you run integration tests for your cassandra code?

Hi Kevin,
I run my tests against my locally running Cassandra instance. I am not using 
any framework, but simply truncate all my tables after/before each test. With 
which I am quite happy.

You have to enable the unsafeSystem property, disable durable writes on the CFs 
and disable auto-snapshot in the yaml for it to be fast.
kind regards,
Christian

On Mon, Oct 13, 2014 at 9:50 PM, Kevin Burton 
bur...@spinn3r.commailto:bur...@spinn3r.com wrote:
Curious to see if any of you have an elegant solution here.

Right now I”m using cassandra unit;

https://github.com/jsevellec/cassandra-unit

for my integration tests.

The biggest problem is that it doesn’t support shutdown.  so I can’t stop or 
cleanup after cassandra between tests.

I have other Java daemons that have the same problem.  For example, ActiveMQ 
doesn’t clean up after itself.

I was *thinking* of using docker or vagrant to startup a daemon in a container, 
then shut it down between tests.

But this seems difficult to setup and configure … as well as being not 
amazingly portable.

Another solution is to use a test suite, and a setUp/tearDown that drops all 
tables created by a test.   This way you’re still on the same cassandra 
instance, but the tables are removed for each pass.

Anyone have an elegant solution to this?

--
Founder/CEO Spinn3r.comhttp://Spinn3r.com
Location: San Francisco, CA
blog: http://burtonator.wordpress.com
… or check out my Google+ 
profilehttps://plus.google.com/102718274791889610666/posts
http://spinn3r.com
 http://spinn3r.com


Re: How do you run integration tests for your cassandra code?

2014-10-13 Thread Ranjib Dey
you can use tools like chef along side vagrant to bring a cassandra. I
personally prefer LXC containers, as they mimic full blown vms, along side
chef-lxc which provides chef's awesome DSL for container customization
(similar dockerfile, and you wont install chef inside the container), for
our scenarios, i use 5 node clusters. and those whole spawn+ token set +
rebalance is done as part of the test setup,

this is assuming you want to run full blown integration test within a
single host. if you can afford multiple hosts, you can set up either
ephemeral hosts (chef-metal) or dedicated hosts (normal chef nodes but with
a CI agent , like team city or go-cd etc).

So, depending upon how big you want integration environment (from a single
host developer environment) till a production clone (say for capacity
planning  load testing), you can automate cassandra cluster provisioning
before you actually kick in your tests, which might be jmeter/gatling based
testing to actual unit/functional/UAT style testing. I use chef, but im
sure alternate exists in other frameworks
hope this help
ranjib

On Mon, Oct 13, 2014 at 10:36 PM, Paco Trujillo f.truji...@genetwister.nl
wrote:

 Hi Kevin



 We are using a similar solution than horschi. In the past we use
 CassandraUnit (https://github.com/jsevellec/cassandra-unit) but truncate
 the tables after and before each test works better for us. We also set
 gc_grace_seconds to zero.





 *From:* horschi [mailto:hors...@gmail.com]
 *Sent:* maandag 13 oktober 2014 22:17
 *To:* user@cassandra.apache.org
 *Subject:* Re: How do you run integration tests for your cassandra code?



 Hi Kevin,

 I run my tests against my locally running Cassandra instance. I am not
 using any framework, but simply truncate all my tables after/before each
 test. With which I am quite happy.



 You have to enable the unsafeSystem property, disable durable writes on
 the CFs and disable auto-snapshot in the yaml for it to be fast.

 kind regards,

 Christian



 On Mon, Oct 13, 2014 at 9:50 PM, Kevin Burton bur...@spinn3r.com wrote:

 Curious to see if any of you have an elegant solution here.



 Right now I”m using cassandra unit;



 https://github.com/jsevellec/cassandra-unit



 for my integration tests.



 The biggest problem is that it doesn’t support shutdown.  so I can’t stop
 or cleanup after cassandra between tests.



 I have other Java daemons that have the same problem.  For example,
 ActiveMQ doesn’t clean up after itself.



 I was *thinking* of using docker or vagrant to startup a daemon in a
 container, then shut it down between tests.



 But this seems difficult to setup and configure … as well as being not
 amazingly portable.



 Another solution is to use a test suite, and a setUp/tearDown that drops
 all tables created by a test.   This way you’re still on the same cassandra
 instance, but the tables are removed for each pass.



 Anyone have an elegant solution to this?



 --

 Founder/CEO Spinn3r.com

 Location: *San Francisco, CA*

 blog: http://burtonator.wordpress.com

 … or check out my Google+ profile
 https://plus.google.com/102718274791889610666/posts

  http://spinn3r.com

   http://spinn3r.com