From c0744f4abf3eeee7415ec4867b1e182422ee42c4 Mon Sep 17 00:00:00 2001 From: Jochen Schalanda Date: Tue, 30 Jun 2015 11:45:16 +0200 Subject: [PATCH] Move IndexCreatingLoadStrategyFactory out of SearchesTest --- .../graylog2/indexer/indices/IndicesTest.java | 6 +- .../IndexCreatingDatabaseOperation.java | 61 +++++++++++++++ .../IndexCreatingLoadStrategyFactory.java | 27 +++++++ .../indexer/searches/SearchesTest.java | 77 +------------------ 4 files changed, 91 insertions(+), 80 deletions(-) create mode 100644 graylog2-server/src/test/java/org/graylog2/indexer/nosqlunit/IndexCreatingDatabaseOperation.java create mode 100644 graylog2-server/src/test/java/org/graylog2/indexer/nosqlunit/IndexCreatingLoadStrategyFactory.java diff --git a/graylog2-server/src/test/java/org/graylog2/indexer/indices/IndicesTest.java b/graylog2-server/src/test/java/org/graylog2/indexer/indices/IndicesTest.java index fa4e44aad561..826beeedc9f9 100644 --- a/graylog2-server/src/test/java/org/graylog2/indexer/indices/IndicesTest.java +++ b/graylog2-server/src/test/java/org/graylog2/indexer/indices/IndicesTest.java @@ -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; @@ -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; @@ -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 diff --git a/graylog2-server/src/test/java/org/graylog2/indexer/nosqlunit/IndexCreatingDatabaseOperation.java b/graylog2-server/src/test/java/org/graylog2/indexer/nosqlunit/IndexCreatingDatabaseOperation.java new file mode 100644 index 000000000000..0dcc9c1bd132 --- /dev/null +++ b/graylog2-server/src/test/java/org/graylog2/indexer/nosqlunit/IndexCreatingDatabaseOperation.java @@ -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 { + private final DatabaseOperation databaseOperation; + private final Client client; + private final Set indexes; + + public IndexCreatingDatabaseOperation(DatabaseOperation databaseOperation, Set 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(); + } +} diff --git a/graylog2-server/src/test/java/org/graylog2/indexer/nosqlunit/IndexCreatingLoadStrategyFactory.java b/graylog2-server/src/test/java/org/graylog2/indexer/nosqlunit/IndexCreatingLoadStrategyFactory.java new file mode 100644 index 000000000000..0b8850333289 --- /dev/null +++ b/graylog2-server/src/test/java/org/graylog2/indexer/nosqlunit/IndexCreatingLoadStrategyFactory.java @@ -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 indexNames; + + public IndexCreatingLoadStrategyFactory(Set 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)); + } +} diff --git a/graylog2-server/src/test/java/org/graylog2/indexer/searches/SearchesTest.java b/graylog2-server/src/test/java/org/graylog2/indexer/searches/SearchesTest.java index 763d54856798..88eb9e38580f 100644 --- a/graylog2-server/src/test/java/org/graylog2/indexer/searches/SearchesTest.java +++ b/graylog2-server/src/test/java/org/graylog2/indexer/searches/SearchesTest.java @@ -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; @@ -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; @@ -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 indexNames; - - public IndexCreatingLoadStrategyFactory(Set 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 { - private final DatabaseOperation databaseOperation; - private final Client client; - private final Set indexes; - - public IndexCreatingDatabaseOperation(DatabaseOperation databaseOperation, Set 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(); - } - } }