DynamoDB Local Maven Plugin

DynamoDB Local
is a locally running copy of Amazon DynamoDB server. Amazon developed
the tool and based it on SQLite. It acts as a real DynamoDB
service through the RESTful API.

I guess, DynamoDB Local is meant to be used in
integration testing and this is how we’re going to use it below.

I use Maven to run all of my Java integration
testing using maven-failsafe-plugin.
The philosophy of integration testing with Maven is
that you start all your supplementary test stubs during
the pre-integration-test phase, run your tests in the integration-test
phase and then shutdown all stubs during the post-integration-test.

It would be great if it were possible to use DynamoDB Local
that way. I didn’t find any Maven plugins for that purpose,
so I decided to create my own—jcabi-dynamodb-maven-plugin.

Full usage details for the plugin are explained
on its website. However, here is a simple example
(get its latest versions in Maven Central):

The above configuration will start DynamoDB Local
right before running integration tests, and then stop it
immediately afterwards. The server will listen at TCP port 10500.
While the number is used in the example, you’re supposed
to use a randomly allocated port instead.

When the DynamoDB Local server is up and running,
we can create an integration test for it:

Of course, there won’t be any output because the server
starts without any tables. Since the server is empty,
you should create tables before every integration test, using
createTable() from DynamoDB SDK.

The foo.json file used above should contain a JSON request
that is sent to DynamoDB Local right after it is up and running.
The request should comply with the specification
of CreateTable request. For example:

The table will be created during the
pre-integration-test phase and dropped at the
post-integration-test phase. Now, we can make our
integration test much more meaningful with the help of jcabi-dynamo: