Hey Sean,

Just wanted to say thanks for all this info, sorry it's a bit late. I was able 
to get this up and running and it's been significantly more performant and 
reliable than our previous solution!

Cheers,
Brad

On Sep 9, 2012, at 10:08 AM, Sean Cribbs <s...@basho.com> wrote:

> Brad,
> 
> :root should be where you want the test node generated to. In a Rails
> project this is typically tmp/riak_test_server.
> :source should point to the directory where the 'riak' control script
> lives in your local install. On Linux this is usually /usr/sbin, on
> Mac/Homebrew it might be /usr/local/bin.
> 
> Using the same binaries but a different configuration is *exactly*
> what the Riak::TestServer does (these go for Riak::Node as well, which
> generates non-test nodes). #create will create a new directory on the
> filesystem (pointed to by :root) which contains bin/ etc/ data/ log/
> ring/ and possibly some other directories. It will write your
> specified configuration to etc/app.config and etc/vm.args, using
> defaults that include memory-only backends for KV and Search and point
> the appropriate directories to the new root. It will also modify the
> riak & riak-admin scripts to point to the new root and write them to
> bin/. All of this happens without copying the Riak code or Erlang
> runtime into the new location.
> 
> The other interesting and useful feature, aside from isolating the new
> Riak node to the generated directory, is the Console and the
> memory-backends that were specifically written for usage in
> test-suites. Riak::TestServer#drop will open a console (just like
> "riak attach") and run a command in the Riak node that makes it drop
> all data in RAM, which gives you a clean slate for each test/example.
> 
> There is one bug in the generation process currently, which is that
> you must have started the normal installation at least once. I hope to
> resolve this bug in the future.
> 
> On Sat, Sep 8, 2012 at 6:42 PM, Brad Heller <b...@cloudability.com> wrote:
>> Hey Sean,
>> 
>> Thanks for the suggestion. I've spent a few hours trying to get this up and
>> running and I'm having a bit of a hard time. Is there any documentation
>> around Riak::TestServer?
>> 
>> What are the configuration values for :source and :root supposed to be
>> exactly? As I understand it, :root should be something like
>> /path/to/riak/bin and source should be something like /path/to/riak. Is that
>> correct? Also, how does Riak:: TestServer#create behave exactly?
>> 
>> In our dev environments we have a Riak configuration that includes config
>> files and binaries that our dev's can just git clone so they can get started
>> quickly. It is very similar to what the following docs outline only with
>> three nodes instead of one:
>> https://wiki.basho.com/Building-a-Development-Environment.html
>> 
>> What I'd really like to set up is a way for Riak::TestServer to use the same
>> binaries as our dev riak config, but a different configuration (app.config,
>> vm.args, etc.). Is this possible? Alternatively, we could stick a copy of
>> the Riak binaries directly in the repo that is using Ripple to make it a bit
>> more standalone.
>> 
>> What is the configuration you were anticipating when you wrote the
>> Riak::TestServer class?
>> 
>> Thanks,
>> Brad Heller
>> 
>> On Sep 7, 2012, at 5:02 AM, Sean Cribbs <s...@basho.com> wrote:
>> 
>> If it's only for your test suite, use a local memory-only node via the
>> Ripple::TestServer. If you configure it correctly (there's a bundled
>> Rails generator that helps), it will delete all the contents of Riak
>> in one fell-swoop after or before each test/example.
>> 
>> On Fri, Sep 7, 2012 at 2:49 AM, Brad Heller <b...@cloudability.com> wrote:
>> 
>> Hey all,
>> 
>> So we're rolling out Riak more and more and so far, so good. In fact we're
>> starting to accumulate a pretty sizable test suite of our data access layer.
>> To support this we've written some code that helps clean out buckets between
>> test runs. We're using Ruby (ripple + ruby-risk-client, obviously) so we
>> just monkey patch the bucket object and detect if it was used or not.
>> 
>> If it was used during a test, we iterate over all the keys and delete each
>> one. We're cognizant of the risks in doing this for large clusters, but in
>> our test enviro the number of documents per test is pretty small and the
>> operations themselves are quite fast.
>> 
>> The problem we're having, though, is that when we run the full suite (or a
>> large subset of the suite) all at once the churn in Riak seems to be so
>> quick that sometimes Riak isn't quite in the state that we expect it to be
>> in when the test runs! For instance, we have a test that checks that the
>> right number of linked documents are created when a given object is saved.
>> If we run the test by itself everything works fine--the expectation that 10
>> documents are created indeed checks out. If we run this test as part of a
>> large suite of tests, the expectation fails and sometimes 11 documents or 12
>> documents appear (we check by counting the keys in the linked bucket).
>> 
>> I would think that this has something to do with Riak's eventually
>> consistent delete operation, but wanted to tap in to the brain trust: Is
>> there any tuning we can do in test to prevent this?
>> 
>> Thanks,
>> 
>> Brad Heller | Engineering Lead | Cloudability.com | 541-231-1514 | Skype:
>> brad.heller | @bradhe | @cloudability
>> 
>> We're hiring! http://cloudability.com/jobs
>> 
>> 
>> _______________________________________________
>> riak-users mailing list
>> riak-users@lists.basho.com
>> http://lists.basho.com/mailman/listinfo/riak-users_lists.basho.com
>> 
>> 
>> 
>> 
>> --
>> Sean Cribbs <s...@basho.com>
>> Software Engineer
>> Basho Technologies, Inc.
>> http://basho.com/
>> 
>> 
> 
> 
> 
> -- 
> Sean Cribbs <s...@basho.com>
> Software Engineer
> Basho Technologies, Inc.
> http://basho.com/


_______________________________________________
riak-users mailing list
riak-users@lists.basho.com
http://lists.basho.com/mailman/listinfo/riak-users_lists.basho.com

Reply via email to