Skip to content

Commit

Permalink
Move IndexCreatingLoadStrategyFactory out of SearchesTest
Browse files Browse the repository at this point in the history
  • Loading branch information
Jochen Schalanda committed Jun 30, 2015
1 parent a33856b commit c0744f4
Show file tree
Hide file tree
Showing 4 changed files with 91 additions and 80 deletions.
Expand Up @@ -20,8 +20,6 @@
import com.lordofthejars.nosqlunit.core.LoadStrategyEnum;
import com.lordofthejars.nosqlunit.elasticsearch.ElasticsearchRule;
import com.lordofthejars.nosqlunit.elasticsearch.EmbeddedElasticsearch;
import org.elasticsearch.action.admin.cluster.health.ClusterHealthRequest;
import org.elasticsearch.action.admin.cluster.health.ClusterHealthResponse;
import org.elasticsearch.action.admin.cluster.state.ClusterStateRequest;
import org.elasticsearch.action.admin.cluster.state.ClusterStateResponse;
import org.elasticsearch.action.admin.indices.alias.IndicesAliasesRequest;
Expand All @@ -32,7 +30,7 @@
import org.elasticsearch.client.IndicesAdminClient;
import org.graylog2.configuration.ElasticsearchConfiguration;
import org.graylog2.indexer.IndexMapping;
import org.graylog2.indexer.searches.SearchesTest;
import org.graylog2.indexer.nosqlunit.IndexCreatingLoadStrategyFactory;
import org.junit.Before;
import org.junit.ClassRule;
import org.junit.Rule;
Expand Down Expand Up @@ -70,7 +68,7 @@ public String getIndexPrefix() {

public IndicesTest() {
this.elasticsearchRule = newElasticsearchRule().defaultEmbeddedElasticsearch();
this.elasticsearchRule.setLoadStrategyFactory(new SearchesTest.IndexCreatingLoadStrategyFactory(Collections.singleton(INDEX_NAME)));
this.elasticsearchRule.setLoadStrategyFactory(new IndexCreatingLoadStrategyFactory(Collections.singleton(INDEX_NAME)));
}

@Before
Expand Down
@@ -0,0 +1,61 @@
package org.graylog2.indexer.nosqlunit;

import com.google.common.collect.ImmutableSet;
import com.lordofthejars.nosqlunit.core.DatabaseOperation;
import org.elasticsearch.action.admin.indices.exists.indices.IndicesExistsResponse;
import org.elasticsearch.client.Client;
import org.elasticsearch.client.IndicesAdminClient;
import org.graylog2.configuration.ElasticsearchConfiguration;
import org.graylog2.indexer.IndexMapping;
import org.graylog2.indexer.indices.Indices;

import java.io.InputStream;
import java.util.Set;

public class IndexCreatingDatabaseOperation implements DatabaseOperation<Client> {
private final DatabaseOperation<Client> databaseOperation;
private final Client client;
private final Set<String> indexes;

public IndexCreatingDatabaseOperation(DatabaseOperation<Client> databaseOperation, Set<String> indexes) {
this.databaseOperation = databaseOperation;
this.client = databaseOperation.connectionManager();
this.indexes = ImmutableSet.copyOf(indexes);
}

@Override
public void insert(InputStream dataScript) {
final IndicesAdminClient indicesAdminClient = client.admin().indices();
for (String index : indexes) {
IndicesExistsResponse indicesExistsResponse = indicesAdminClient.prepareExists(index)
.execute()
.actionGet();

if (indicesExistsResponse.isExists()) {
client.admin().indices().prepareDelete(index).execute().actionGet();
}

Indices indices = new Indices(client, new ElasticsearchConfiguration(), new IndexMapping(client));
if (!indices.create(index)) {
throw new IllegalStateException("Couldn't create index " + index);
}
}

databaseOperation.insert(dataScript);
}

@Override
public void deleteAll() {
databaseOperation.deleteAll();
}

@Override
public boolean databaseIs(InputStream expectedData) {
return databaseOperation.databaseIs(expectedData);
}

@Override
public Client connectionManager() {
return databaseOperation.connectionManager();
}
}
@@ -0,0 +1,27 @@
package org.graylog2.indexer.nosqlunit;

import com.google.common.collect.ImmutableSet;
import com.lordofthejars.nosqlunit.core.DatabaseOperation;
import com.lordofthejars.nosqlunit.core.LoadStrategyEnum;
import com.lordofthejars.nosqlunit.core.LoadStrategyFactory;
import com.lordofthejars.nosqlunit.core.LoadStrategyOperation;
import com.lordofthejars.nosqlunit.core.ReflectionLoadStrategyFactory;

import java.util.Set;

public class IndexCreatingLoadStrategyFactory implements LoadStrategyFactory {
private final LoadStrategyFactory loadStrategyFactory;
private final Set<String> indexNames;

public IndexCreatingLoadStrategyFactory(Set<String> indexNames) {
this.loadStrategyFactory = new ReflectionLoadStrategyFactory();
this.indexNames = ImmutableSet.copyOf(indexNames);
}

@Override
public LoadStrategyOperation getLoadStrategyInstance(LoadStrategyEnum loadStrategyEnum, DatabaseOperation databaseOperation) {
return loadStrategyFactory.getLoadStrategyInstance(
loadStrategyEnum,
new IndexCreatingDatabaseOperation(databaseOperation, indexNames));
}
}
Expand Up @@ -19,26 +19,17 @@
import com.codahale.metrics.Histogram;
import com.codahale.metrics.MetricRegistry;
import com.codahale.metrics.Timer;
import com.google.common.collect.ImmutableSet;
import com.google.common.collect.ImmutableSortedSet;
import com.lordofthejars.nosqlunit.annotation.UsingDataSet;
import com.lordofthejars.nosqlunit.core.DatabaseOperation;
import com.lordofthejars.nosqlunit.core.LoadStrategyEnum;
import com.lordofthejars.nosqlunit.core.LoadStrategyFactory;
import com.lordofthejars.nosqlunit.core.LoadStrategyOperation;
import com.lordofthejars.nosqlunit.core.ReflectionLoadStrategyFactory;
import com.lordofthejars.nosqlunit.elasticsearch.ElasticsearchRule;
import com.lordofthejars.nosqlunit.elasticsearch.EmbeddedElasticsearch;
import org.elasticsearch.action.admin.indices.exists.indices.IndicesExistsResponse;
import org.elasticsearch.client.Client;
import org.elasticsearch.client.IndicesAdminClient;
import org.elasticsearch.indices.IndexMissingException;
import org.elasticsearch.search.SearchHit;
import org.graylog2.Configuration;
import org.graylog2.configuration.ElasticsearchConfiguration;
import org.graylog2.indexer.Deflector;
import org.graylog2.indexer.IndexMapping;
import org.graylog2.indexer.indices.Indices;
import org.graylog2.indexer.nosqlunit.IndexCreatingLoadStrategyFactory;
import org.graylog2.indexer.ranges.IndexRange;
import org.graylog2.indexer.ranges.IndexRangeComparator;
import org.graylog2.indexer.ranges.IndexRangeService;
Expand All @@ -48,7 +39,6 @@
import org.graylog2.indexer.results.TermsResult;
import org.graylog2.indexer.results.TermsStatsResult;
import org.graylog2.indexer.searches.timeranges.AbsoluteRange;
import org.graylog2.plugin.database.validators.Validator;
import org.joda.time.DateTime;
import org.joda.time.DateTimeZone;
import org.junit.Before;
Expand Down Expand Up @@ -439,69 +429,4 @@ public void testTimestampStatsOfIndexWithNonExistingIndex() throws Exception {
searches.timestampStatsOfIndex("does-not-exist");
}

public static class IndexCreatingLoadStrategyFactory implements LoadStrategyFactory {
private final LoadStrategyFactory loadStrategyFactory;
private final Set<String> indexNames;

public IndexCreatingLoadStrategyFactory(Set<String> indexNames) {
this.loadStrategyFactory = new ReflectionLoadStrategyFactory();
this.indexNames = ImmutableSet.copyOf(indexNames);
}

@Override
public LoadStrategyOperation getLoadStrategyInstance(LoadStrategyEnum loadStrategyEnum, DatabaseOperation databaseOperation) {
return loadStrategyFactory.getLoadStrategyInstance(
loadStrategyEnum,
new IndexCreatingDatabaseOperation(databaseOperation, indexNames));
}
}

public static class IndexCreatingDatabaseOperation implements DatabaseOperation<Client> {
private final DatabaseOperation<Client> databaseOperation;
private final Client client;
private final Set<String> indexes;

public IndexCreatingDatabaseOperation(DatabaseOperation<Client> databaseOperation, Set<String> indexes) {
this.databaseOperation = databaseOperation;
this.client = databaseOperation.connectionManager();
this.indexes = ImmutableSet.copyOf(indexes);
}

@Override
public void insert(InputStream dataScript) {
final IndicesAdminClient indicesAdminClient = client.admin().indices();
final String[] indexNames = indexes.toArray(new String[indexes.size()]);
IndicesExistsResponse indicesExistsResponse = indicesAdminClient.prepareExists(indexNames)
.execute()
.actionGet();

if (indicesExistsResponse.isExists()) {
client.admin().indices().prepareDelete(indexNames).execute().actionGet();
}

Indices indices = new Indices(client, new ElasticsearchConfiguration(), new IndexMapping(client));
for (String index : indexes) {
if (!indices.create(index)) {
throw new IllegalStateException("Couldn't create index " + index);
}
}

databaseOperation.insert(dataScript);
}

@Override
public void deleteAll() {
databaseOperation.deleteAll();
}

@Override
public boolean databaseIs(InputStream expectedData) {
return databaseOperation.databaseIs(expectedData);
}

@Override
public Client connectionManager() {
return databaseOperation.connectionManager();
}
}
}

0 comments on commit c0744f4

Please sign in to comment.