/mock-aerospike

Mock Aerospike Java Client for unit testing

Primary LanguageJavaApache License 2.0Apache-2.0

mock-aerospike

Just use MockAerospikeClient implementation for the interface IAerospikeClient in your unit tests.

Goals

  • Lightweight & Embedded
  • Easy to use (implements the same interface)
  • Reduce effort in unit testing
  • Allow extensibility

Issues with IAerospikeClient

Currently, Aerospike provides for IAerospikeClient (in Java) with sole intention of making AerospikeClient testable. However, there are few issues pointed out - aerospike/aerospike-client-java#34

  • Don't mock what you don't own (Mocking IAerospikeClient, then mocking Record).

Better approach to testing is to create MockAerospikeClient which implements IAerospikeClient, thus avoiding mocking RecordSet and Record itself.

Implementation

MockAerospikeClient implements IAerospikeClient (version - 4.4.9)
Currently, MockAerospikeClient supports the following methods:

  • put
  • get
  • delete
  • exists
  • getHeader

MockAerospikeClient internally uses a HashMap to store Record corresponding to a Key

Setup

  • Maven
  • Java 1.8 or greater

Usage

  • pom.xml
    Add the following dependency to your pom.xml
<dependency>
  <groupId>com.github.srini156</groupId>
  <artifactId>mock-aerospike-java</artifactId>
  <version>0.0.4</version>
</dependency>
  • Code
  MockAerospikeClient client = new MockAerospikeClient();
  //Put entry into Aerospike
  client.put(null, new Key("namespace", "set", "key"), new Bin[] { new Bin("bin1", "value1") });
  //Fetch entry from Aerospike
  client.get(null, new Key("namespace","set","key"));

Contributions

It is currently alpha and WIP. Contributions are welcome, please raise a pull request.