Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -113,6 +113,15 @@ public NoSqlPopulatorConfigurator withOptions(Map<String, Object> options) {
return this;
}

public void execute(Object connection) {
try {
connect(connection);
populatorService.execute(Collections.unmodifiableList(datasets));
} finally {
populatorService.disconnect();
}
}

@Override
public void execute() {
// TODO Improve this so connect and disconnect only happens once.
Expand All @@ -125,6 +134,10 @@ public void execute() {
}
}

private void connect(Object connection) {
populatorService.connect(connection, database, options);
}

private void connect() {
if (this.uri != null) {
populatorService.connect(uri, database, options);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,18 @@
* You can think about this interface as wrapper to real connection against service.
*/
public interface NoSqlPopulatorService<T> extends PopulatorService<T> {

/**
* This method is used to set directly the connection to the service.
*
* Useful for embedded inmemory connections where there is no network implied or for mocking.
*
* @param embeddedConnection to use.
* @param database to use.
* @param customOptions to use for connection.
*/
void connect(Object embeddedConnection, String database, Map<String, Object> customOptions);

/**
* Methods called to connect to the backend.
*
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -20,6 +20,16 @@ class CouchbasePopulatorService implements NoSqlPopulatorService<Couchbase> {
private CouchbaseCluster couchbaseCluster;
private Bucket bucket;

@Override
public void connect(Object embeddedConnection, String database, Map<String, Object> customOptions) {
if (database == null) {
database = "default";
}

this.couchbaseCluster = (CouchbaseCluster) embeddedConnection;
connectToBucket(database, customOptions);
}

@Override
public void connect(String host, int port, String database, Map<String, Object> customOptions) {
if (database == null) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -19,6 +19,11 @@ class CouchDbPopulatorService implements NoSqlPopulatorService<CouchDb> {

private CouchDbConnector couchDbConnector;

@Override
public void connect(Object embeddedConnection, String database, Map<String, Object> customOptions) {
this.couchDbConnector = (CouchDbConnector) embeddedConnection;
}

@Override
public void connect(String host, int port, String database, Map<String, Object> customOptions) {
this.couchDbConnector = couchDbConnector(createCouchDbClusterUri(host, port), database, customOptions);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -10,11 +10,25 @@
import org.infinispan.client.hotrod.RemoteCacheManager;
import org.infinispan.client.hotrod.configuration.ConfigurationBuilder;
import org.infinispan.commons.api.BasicCache;
import org.infinispan.commons.api.BasicCacheContainer;

class InfinispanPopulatorService implements NoSqlPopulatorService<Infinispan> {

private BasicCache<Object, Object> infinispanBasicCache;

@Override
public void connect(Object embeddedConnection, String database, Map<String, Object> customOptions) {

BasicCacheContainer cacheContainer = (BasicCacheContainer) embeddedConnection;

if (database == null) {
infinispanBasicCache = cacheContainer.getCache();
} else {
infinispanBasicCache = cacheContainer.getCache(database);
}

}

@Override
public void connect(String host, int port, String database, Map<String, Object> customOptions) {

Expand Down
8 changes: 7 additions & 1 deletion arquillian-ape-nosql/mongodb-ftest/pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@
<modelVersion>4.0.0</modelVersion>

<properties>
<mongodb-driver.version>3.2.2</mongodb-driver.version>
<mongodb-driver.version>3.5.0</mongodb-driver.version>
</properties>

<artifactId>arquillian-ape-nosql-mongodb-ftest</artifactId>
Expand Down Expand Up @@ -46,6 +46,12 @@
<artifactId>arquillian-junit-standalone</artifactId>
<scope>test</scope>
</dependency>
<dependency>
<groupId>com.github.fakemongo</groupId>
<artifactId>fongo</artifactId>
<version>2.1.0</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.assertj</groupId>
<artifactId>assertj-core</artifactId>
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,44 @@
package org.arquilian.ape.nosql.mongodb;

import com.github.fakemongo.Fongo;
import com.mongodb.client.FindIterable;
import com.mongodb.client.MongoCollection;
import com.mongodb.client.MongoDatabase;
import org.arquillian.ape.nosql.NoSqlPopulator;
import org.arquillian.ape.nosql.mongodb.MongoDb;
import org.bson.Document;
import org.jboss.arquillian.junit.Arquillian;
import org.jboss.arquillian.test.api.ArquillianResource;
import org.junit.Test;
import org.junit.runner.RunWith;

import static org.assertj.core.api.Assertions.assertThat;

@RunWith(Arquillian.class)
public class FongoDbTest {

@ArquillianResource
@MongoDb
NoSqlPopulator populator;

private static Fongo fongo = new Fongo("db");

@Test
public void should_populate_fongodb() {

populator.project()
.withStorage("test")
.usingDataSet("books.json")
.execute(fongo.getMongo());

final MongoDatabase database = fongo.getMongo().getDatabase("test");
final MongoCollection<Document> book = database.getCollection("Book");
final FindIterable<Document> documents = book.find();

assertThat(documents.first())
.containsEntry("title", "The Hobbit")
.containsEntry("numberOfPages", 293);

}

}
Original file line number Diff line number Diff line change
Expand Up @@ -24,6 +24,16 @@ class MongoDbPopulatorService implements NoSqlPopulatorService<MongoDb> {
private MongoClient mongoClient;
private MongoDatabase database;

@Override
public void connect(Object embeddedConnection, String database, Map<String, Object> customOptions) {
if (database == null) {
database = "test";
}

this.mongoClient = (MongoClient) embeddedConnection;
this.database = mongoClient.getDatabase(database);
}

@Override
public void connect(String host, int port, String database, Map<String, Object> customOptions) {
if (database == null) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -19,6 +19,12 @@ class RedisPopulatorService implements NoSqlPopulatorService<Redis> {

private Jedis jedis;

@Override
public void connect(Object embeddedConnection, String database, Map<String, Object> customOptions) {
this.jedis = (Jedis) embeddedConnection;
this.jedis.connect();
}

@Override
public void connect(String host, int port, String database, Map<String, Object> customOptions) {
RedisOptions redisOptions = new RedisOptions(customOptions);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,13 @@ class VaultPopulatorService implements NoSqlPopulatorService<Vault> {

private VaultConfig vaultConfig;

@Override
public void connect(Object embeddedConnection, String database, Map<String, Object> customOptions) {
this.vaultConfig = (VaultConfig) embeddedConnection;
VaultOptions vaultOptions = new VaultOptions(customOptions);
vaultOptions.configure(vaultConfig);
}

@Override
public void connect(String host, int bindPort, String database, Map<String, Object> customOptions) {
this.vaultConfig = new VaultConfig();
Expand Down