Skip to content

basho-labs/rinamo

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Rinamo

A DynamoDB API implementation built on Riak 2.0.

Building

$ make

Unit Testing

$ make test

Development environment

A virtual development environment for Rinamo can be built using the steps below.

Install Vagrant

Download and install Vagrant via the Vagrant installer.

Install Vagrant plugins

$ vagrant plugin install vagrant-berkshelf
$ vagrant plugin install vagrant-omnibus
$ vagrant plugin install vagrant-cachier (Use RINAMO_USE_CACHE to enable)

Note: If you're using Vagrant 1.5+, use the following command to install vagrant-berkshelf:

$ vagrant plugin install vagrant-berkshelf --plugin-version 2.0.0.rc3

Add your local SSH key to ssh-agent

The Vagrantfile is configured to enable agent forwarding over SSH, but your local key must be added to ssh-agent:

$ ssh-add .ssh/id_rsa

Create base development environment

The development environment for Rinamo has several dependencies that take a while to build. In order to expedite the process, the base development environment can be built once, and made into a Vagrant base box:

$ RINAMO_USE_CACHE=1 vagrant up rinamo-base
$ vagrant package rinamo-base
$ vagrant box add rinamo-base package.box
$ rm package.box

Provision Rinamo development environment

Now that the rinamo-base box is built, Rinamo itself can be provisioned:

$ vagrant up rinamo-dev

Once running, Rinamo can be updated at any time by rebuilding the Riak release by running the provision command:

$ vagrant provision rinamo-dev

Rinamo Client Test Console

Rinamo responds to requests issued by AWS Client APIs. Anything can be used, but we package up a scala test console for use during development. This makes it easy to use the AWS Java Client API to explore Rinamo.

To fire up the console run the following from within the vagrant development environment:

$ cd /vagrant/tests/com.basho.dynamodb.integ
$ mvn test-compile scala:console; reset

Then run commands like this:

scala> Table.create("books_range", "Id", "N", Some("Title"), Some("S"))
res0: com.amazonaws.services.dynamodbv2.model.CreateTableResult = { ...

scala> Table.list()
res1: List[String] = List(books_range)

For more examples, refer to the console examples.

Acceptance Testing

Acceptance tests use the same commands availabe in the Test Console.

$ cd /vagrant/tests/com.basho.dynamodb.integ
$ mvn test

Additional documentation