Skip to content
This repository

HTTPS clone URL

Subversion checkout URL

You can clone with HTTPS or Subversion.

Download ZIP

a fake version of Amazon's SimpleDB for local/integration testing

branch: master

Fetching latest commit…

Octocat-spinner-32-eaf2f5

Cannot retrieve the latest commit at this time

Octocat-spinner-32 .settings
Octocat-spinner-32 src
Octocat-spinner-32 .classpath
Octocat-spinner-32 .gitignore
Octocat-spinner-32 .project
Octocat-spinner-32 Jetty.launch
Octocat-spinner-32 README.markdown
Octocat-spinner-32 buildfile
Octocat-spinner-32 fakesdb.rb
Octocat-spinner-32 ivy.xml
Octocat-spinner-32 ivysettings.xml
README.markdown

Overview

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.

Install

You can get fakesdb from:

  1. The downloads page

  2. The http://repo.joist.ws Maven repository, e.g. com.bizo + fakesdb-testing_2.9.1 + 2.6.1 here

There are a few different modules:

  • fakesdb-standalone has 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=X to specify a different port.

  • fakesdb-testing is the dependencies (without Scala) as an uber-jar for embedding.

    From within a unit test, you can call:

    fakesdb.Jetty.apply(8080)

    To start up fakesdb on port 8080.

  • fakesdb-servlet is just the fakesdb classes (no dependencies) for running within your own webapp. E.g. add the fakesdb.FakeSdbServlet to your own web.xml file.

    You could also use this version for AmazonSimpleDbStub if you want to do in-memory only testing.

  • fakesdb.war is (was--it's not being published right now) to drop into your Tomcat/etc.

Notes

  • To facilitate testing, issuing a CreateDomain command with DomainName=_flush will reset all of the data

  • If you're using the typica Java SimpleDB client, versions through 1.6 only use port 80, even when given a non-80 setting. So you'll either have to run fakesdb on port 80 or else redirect port 80 traffic to 8080 with a firewall rule.

Changelog

  • 2.6.1 - 15 November 2012
    • Add <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.jar which has jetty but not scala-library
  • 2.3 - 23 Aug 2011
    • Remove Jetty bootstrap classes from fakesdb-servlet.jar
  • 2.2 - 25 Apr 2011
    • BatchDeleteAttributes support (Alexander Gorkunov)
    • Partial Select support (Alexander Gorkunov)
  • Pre-2.2 various releases

Todo

  • 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 fakesdb purposefully lock up, fail, etc., to test how your real application responds--it would be cool to flip fakesdb into several error modes either via a web UI or meta-domains (like the current _flush domain)
Something went wrong with that request. Please try again.