A fake version of Amazon's SimpleDB. Local, in-memory, consistent, deployed as a war.
The entire REST API (Query, Select, etc.) is implemented in ~750 lines of Scala.
You can get fakesdb from:
The downloads page
There are a few different modules:
fakesdb-standalonehas all of the dependencies (including Scala) as an uber-jar for running from the CLI.
You can run this as:
java -jar fakesdb-standalone-1.5.jar
And it will start up an embedded instance of Jetty on port 8080. You can pass
-Dport=Xto specify a different port.
fakesdb-testingis the dependencies (without Scala) as an uber-jar for embedding.
From within a unit test, you can call:
To start up fakesdb on port 8080.
fakesdb-servletis just the fakesdb classes (no dependencies) for running within your own webapp. E.g. add the
fakesdb.FakeSdbServletto your own
You could also use this version for
AmazonSimpleDbStubif you want to do in-memory only testing.
fakesdb.waris (was--it's not being published right now) to drop into your Tomcat/etc.
To facilitate testing, issuing a
DomainName=_flushwill reset all of the data
If you're using the
typicaJava SimpleDB client, versions through 1.6 only use port 80, even when given a non-80 setting. So you'll either have to run
fakesdbon port 80 or else redirect port 80 traffic to 8080 with a firewall rule.
- 2.6.1 - 15 November 2012
<stacktrace>to error responses (Alex Boisvert)
- Build improvements (Alex Boisvert)
- 2.5 - 6 Oct 2012
- Add AmazonSimpleDbStub for in-memory testing of clients using the AWS Java SDK
- Switch from sbt to buildr
- 2.4 - 23 Aug 2011
- Upgrade to Scala 2.9.0-1 and Jetty 8.0.0.RC0
- Make new
fakesdb-testing.jarwhich has jetty but not scala-library
- 2.3 - 23 Aug 2011
Jettybootstrap classes from
- 2.2 - 25 Apr 2011
- BatchDeleteAttributes support (Alexander Gorkunov)
- Partial Select support (Alexander Gorkunov)
- Pre-2.2 various releases
- Loading the SDB URL in a browser (e.g. without a REST action) should display all of the current data
Release It talks about having "fake" (better term?) versions of systems like
fakesdbpurposefully lock up, fail, etc., to test how your real application responds--it would be cool to flip
fakesdbinto several error modes either via a web UI or meta-domains (like the current