With Ruby Client, How to Test for Server Availability or Clear All Data?

Sean Cribbs sean at basho.com
Fri Jul 1 09:05:30 EDT 2011


Keith,

If this is just testing (e.g. Test::Unit or RSpec), I encourage you to use
the Riak::TestServer instead (which you can also use from irb if you like).
It will create a "phantom" node that uses the same code/runtime as your
existing Riak installation, but exists completely separately and uses an
in-memory backend so that it is trivial to wipe its data.  The docs for it
are here (although they could use some improvement):
http://seancribbs.github.com/ripple/Riak/TestServer.html

In IRB I might do this to get it started:

require 'riak/test_server'
server = Riak::TestServer.new(:bin_dir => "/opt/local/riak/bin", :temp_dir
=> "~/riaktest")
server.prepare!
server.start

Then when you want to wipe the data:

server.recycle

If you're using Ripple in a Rails 3 project, `rails generate ripple` will
generate all of this for you and add it to your chosen testing framework.

On Thu, Jun 30, 2011 at 6:43 PM, Keith Bennett <
keith.bennett at lmnsolutions.com> wrote:

> All -
>
> I have some test procedures that require that I start with an empty data
> store and end with the data exactly as it was before the test.
>
> The brute force approach I'm taking now is to:
>
> * shut down riak
> * rename the data/bitcask directory
> * start riak
> * run my test and validate the results in riak
> * shut down riak
> * move the saved bitcask-xyz dir to bitcask again
> * start riak
>
> As you can see, I *really* want to start with no data, and end with no
> changes to the existing data.  Of course, if other users were accessing
> riak, this wouldn't work, but this is a test environment over which I have
> control.
>
> My problem is that it takes a little time after running riak start or stop
> for the operation to complete, and so I have to insert a sleep afterwards so
> that the next step in the code is not performed prematurely.  Is there a way
> using the Ruby Riak client to know for sure whether or not riak is ready for
> action? I could loop every fraction of a second, or, if there were a
> blocking call, that would be even better.
>
> That said, the shutting down and restarting is pretty drastic action.  Is
> there a faster/easier/better way to accomplish what I want to do?
>
> Thanks,
> Keith
>
>
>
> _______________________________________________
> riak-users mailing list
> riak-users at lists.basho.com
> http://lists.basho.com/mailman/listinfo/riak-users_lists.basho.com
>



-- 
Sean Cribbs <sean at basho.com>
Developer Advocate
Basho Technologies, Inc.
http://www.basho.com/
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.basho.com/pipermail/riak-users_lists.basho.com/attachments/20110701/4a62a307/attachment.html>


More information about the riak-users mailing list