fix smoke, search, mock tests, move getMapping() to admin client
This commit is contained in:
parent
4a2cb095df
commit
b580187063
24 changed files with 497 additions and 185 deletions
|
@ -22,6 +22,10 @@ public interface AdminClient extends NativeClient {
|
||||||
*/
|
*/
|
||||||
IndexDefinition buildIndexDefinitionFromSettings(String index, Settings settings) throws IOException;
|
IndexDefinition buildIndexDefinitionFromSettings(String index, Settings settings) throws IOException;
|
||||||
|
|
||||||
|
Map<String, ?> getMapping(String index);
|
||||||
|
|
||||||
|
Map<String, ?> getMapping(String index, String type);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Delete an index.
|
* Delete an index.
|
||||||
* @param indexDefinition the index definition
|
* @param indexDefinition the index definition
|
||||||
|
@ -89,17 +93,6 @@ public interface AdminClient extends NativeClient {
|
||||||
*/
|
*/
|
||||||
boolean forceMerge(String index, long maxWaitTime, TimeUnit timeUnit);
|
boolean forceMerge(String index, long maxWaitTime, TimeUnit timeUnit);
|
||||||
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Wait for index recovery (after replica change).
|
|
||||||
*
|
|
||||||
* @param index index
|
|
||||||
* @param maxWaitTime maximum wait time
|
|
||||||
* @param timeUnit time unit
|
|
||||||
* @return true if wait succeeded, false if wait timed out
|
|
||||||
*/
|
|
||||||
boolean waitForRecovery(String index, long maxWaitTime, TimeUnit timeUnit);
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Resolve alias.
|
* Resolve alias.
|
||||||
*
|
*
|
||||||
|
|
|
@ -55,7 +55,7 @@ public interface NativeClient extends Closeable {
|
||||||
*/
|
*/
|
||||||
void waitForCluster(String healthColor, long maxWaitTime, TimeUnit timeUnit);
|
void waitForCluster(String healthColor, long maxWaitTime, TimeUnit timeUnit);
|
||||||
|
|
||||||
Map<String, ?> getMapping(String index, String mapping);
|
void waitForShards(long maxWaitTime, TimeUnit timeUnit);
|
||||||
|
|
||||||
long getSearchableDocs(String index);
|
long getSearchableDocs(String index);
|
||||||
|
|
||||||
|
|
|
@ -26,6 +26,7 @@ import org.elasticsearch.action.admin.indices.get.GetIndexRequestBuilder;
|
||||||
import org.elasticsearch.action.admin.indices.get.GetIndexResponse;
|
import org.elasticsearch.action.admin.indices.get.GetIndexResponse;
|
||||||
import org.elasticsearch.action.admin.indices.mapping.get.GetMappingsAction;
|
import org.elasticsearch.action.admin.indices.mapping.get.GetMappingsAction;
|
||||||
import org.elasticsearch.action.admin.indices.mapping.get.GetMappingsRequest;
|
import org.elasticsearch.action.admin.indices.mapping.get.GetMappingsRequest;
|
||||||
|
import org.elasticsearch.action.admin.indices.mapping.get.GetMappingsRequestBuilder;
|
||||||
import org.elasticsearch.action.admin.indices.mapping.get.GetMappingsResponse;
|
import org.elasticsearch.action.admin.indices.mapping.get.GetMappingsResponse;
|
||||||
import org.elasticsearch.action.admin.indices.settings.get.GetSettingsAction;
|
import org.elasticsearch.action.admin.indices.settings.get.GetSettingsAction;
|
||||||
import org.elasticsearch.action.admin.indices.settings.get.GetSettingsRequest;
|
import org.elasticsearch.action.admin.indices.settings.get.GetSettingsRequest;
|
||||||
|
@ -127,6 +128,21 @@ public abstract class AbstractAdminClient extends AbstractNativeClient implement
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public Map<String, ?> getMapping(String index) {
|
||||||
|
return getMapping(index, TYPE_NAME);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public Map<String, ?> getMapping(String index, String mapping) {
|
||||||
|
GetMappingsRequestBuilder getMappingsRequestBuilder = new GetMappingsRequestBuilder(client, GetMappingsAction.INSTANCE)
|
||||||
|
.setIndices(index)
|
||||||
|
.setTypes(mapping);
|
||||||
|
GetMappingsResponse getMappingsResponse = getMappingsRequestBuilder.execute().actionGet();
|
||||||
|
logger.info("get mappings response = {}", getMappingsResponse.getMappings().get(index).get(mapping).getSourceAsMap());
|
||||||
|
return getMappingsResponse.getMappings().get(index).get(mapping).getSourceAsMap();
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public AdminClient deleteIndex(IndexDefinition indexDefinition) {
|
public AdminClient deleteIndex(IndexDefinition indexDefinition) {
|
||||||
return deleteIndex(indexDefinition.getFullIndexName());
|
return deleteIndex(indexDefinition.getFullIndexName());
|
||||||
|
@ -134,56 +150,19 @@ public abstract class AbstractAdminClient extends AbstractNativeClient implement
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public AdminClient deleteIndex(String index) {
|
public AdminClient deleteIndex(String index) {
|
||||||
ensureClientIsPresent();
|
|
||||||
if (index == null) {
|
if (index == null) {
|
||||||
logger.warn("no index name given to delete index");
|
logger.warn("no index name given to delete index");
|
||||||
return this;
|
return this;
|
||||||
}
|
}
|
||||||
|
ensureClientIsPresent();
|
||||||
DeleteIndexRequest deleteIndexRequest = new DeleteIndexRequest()
|
DeleteIndexRequest deleteIndexRequest = new DeleteIndexRequest()
|
||||||
.indices(index);
|
.indices(index);
|
||||||
client.execute(DeleteIndexAction.INSTANCE, deleteIndexRequest).actionGet();
|
client.execute(DeleteIndexAction.INSTANCE, deleteIndexRequest).actionGet();
|
||||||
ClusterHealthRequest clusterHealthRequest = new ClusterHealthRequest()
|
waitForCluster("YELLOW", 30L, TimeUnit.SECONDS);
|
||||||
.waitForNoInitializingShards(true)
|
waitForShards(30L, TimeUnit.SECONDS);
|
||||||
.waitForNoRelocatingShards(true)
|
|
||||||
.waitForYellowStatus();
|
|
||||||
ClusterHealthResponse healthResponse =
|
|
||||||
client.execute(ClusterHealthAction.INSTANCE, clusterHealthRequest).actionGet();
|
|
||||||
if (healthResponse.isTimedOut()) {
|
|
||||||
String message = "timeout waiting for cluster shards";
|
|
||||||
logger.error(message);
|
|
||||||
throw new IllegalStateException(message);
|
|
||||||
}
|
|
||||||
return this;
|
return this;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
|
||||||
public boolean waitForRecovery(String index, long maxWaitTime, TimeUnit timeUnit) {
|
|
||||||
ensureClientIsPresent();
|
|
||||||
ensureIndexGiven(index);
|
|
||||||
GetSettingsRequest settingsRequest = new GetSettingsRequest();
|
|
||||||
settingsRequest.indices(index);
|
|
||||||
GetSettingsResponse settingsResponse = client.execute(GetSettingsAction.INSTANCE, settingsRequest).actionGet();
|
|
||||||
int shards = settingsResponse.getIndexToSettings()
|
|
||||||
.get(index).getAsInt("index.number_of_shards", -1);
|
|
||||||
if (shards > 0) {
|
|
||||||
TimeValue timeout = toTimeValue(maxWaitTime, timeUnit);
|
|
||||||
ClusterHealthRequest clusterHealthRequest = new ClusterHealthRequest()
|
|
||||||
.indices(index)
|
|
||||||
.waitForActiveShards(shards)
|
|
||||||
.waitForNoInitializingShards(true)
|
|
||||||
.waitForNoRelocatingShards(true)
|
|
||||||
.waitForYellowStatus()
|
|
||||||
.timeout(timeout);
|
|
||||||
ClusterHealthResponse healthResponse =
|
|
||||||
client.execute(ClusterHealthAction.INSTANCE, clusterHealthRequest).actionGet();
|
|
||||||
if (healthResponse.isTimedOut()) {
|
|
||||||
String message = "timeout waiting for cluster shards";
|
|
||||||
logger.error(message);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public AdminClient updateReplicaLevel(IndexDefinition indexDefinition, int level) throws IOException {
|
public AdminClient updateReplicaLevel(IndexDefinition indexDefinition, int level) throws IOException {
|
||||||
return updateReplicaLevel(indexDefinition.getFullIndexName(), level,
|
return updateReplicaLevel(indexDefinition.getFullIndexName(), level,
|
||||||
|
@ -192,11 +171,12 @@ public abstract class AbstractAdminClient extends AbstractNativeClient implement
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public AdminClient updateReplicaLevel(String index, int level, long maxWaitTime, TimeUnit timeUnit) throws IOException {
|
public AdminClient updateReplicaLevel(String index, int level, long maxWaitTime, TimeUnit timeUnit) throws IOException {
|
||||||
waitForCluster("YELLOW", maxWaitTime, timeUnit); // let cluster settle down from critical operations
|
if (level < 1) {
|
||||||
if (level > 0) {
|
logger.warn("invalid replica level");
|
||||||
updateIndexSetting(index, "number_of_replicas", level, maxWaitTime, timeUnit);
|
return this;
|
||||||
waitForRecovery(index, maxWaitTime, timeUnit);
|
|
||||||
}
|
}
|
||||||
|
updateIndexSetting(index, "number_of_replicas", level, maxWaitTime, timeUnit);
|
||||||
|
waitForShards(maxWaitTime, timeUnit);
|
||||||
return this;
|
return this;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -556,12 +536,6 @@ public abstract class AbstractAdminClient extends AbstractNativeClient implement
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private void ensureIndexGiven(String index) {
|
|
||||||
if (index == null) {
|
|
||||||
throw new IllegalArgumentException("no index given");
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
private Map<String, String> getFilters(GetAliasesResponse getAliasesResponse) {
|
private Map<String, String> getFilters(GetAliasesResponse getAliasesResponse) {
|
||||||
Map<String, String> result = new HashMap<>();
|
Map<String, String> result = new HashMap<>();
|
||||||
for (ObjectObjectCursor<String, List<AliasMetaData>> object : getAliasesResponse.getAliases()) {
|
for (ObjectObjectCursor<String, List<AliasMetaData>> object : getAliasesResponse.getAliases()) {
|
||||||
|
|
|
@ -42,14 +42,15 @@ public abstract class AbstractBulkClient extends AbstractNativeClient implements
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void init(Settings settings) throws IOException {
|
public void init(Settings settings) throws IOException {
|
||||||
logger.log(Level.INFO, "initializing with settings = " + settings.toDelimitedString(','));
|
|
||||||
super.init(settings);
|
super.init(settings);
|
||||||
if (bulkMetric == null) {
|
if (bulkMetric == null) {
|
||||||
bulkMetric = new DefaultBulkMetric();
|
bulkMetric = new DefaultBulkMetric();
|
||||||
|
logger.log(Level.INFO, "initializing bulk metric with settings = " + settings.toDelimitedString(','));
|
||||||
bulkMetric.init(settings);
|
bulkMetric.init(settings);
|
||||||
}
|
}
|
||||||
if (bulkController == null) {
|
if (bulkController == null) {
|
||||||
bulkController = new DefaultBulkController(this, bulkMetric);
|
bulkController = new DefaultBulkController(this, bulkMetric);
|
||||||
|
logger.log(Level.INFO, "initializing bulk controller with settings = " + settings.toDelimitedString(','));
|
||||||
bulkController.init(settings);
|
bulkController.init(settings);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -120,7 +121,6 @@ public abstract class AbstractBulkClient extends AbstractNativeClient implements
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
ensureClientIsPresent();
|
ensureClientIsPresent();
|
||||||
waitForCluster("YELLOW", 30L, TimeUnit.SECONDS);
|
|
||||||
CreateIndexRequestBuilder createIndexRequestBuilder = new CreateIndexRequestBuilder(client, CreateIndexAction.INSTANCE);
|
CreateIndexRequestBuilder createIndexRequestBuilder = new CreateIndexRequestBuilder(client, CreateIndexAction.INSTANCE);
|
||||||
createIndexRequestBuilder.setIndex(index);
|
createIndexRequestBuilder.setIndex(index);
|
||||||
if (settings != null) {
|
if (settings != null) {
|
||||||
|
@ -130,10 +130,11 @@ public abstract class AbstractBulkClient extends AbstractNativeClient implements
|
||||||
// NOTE: addMapping(type, ...) API is very fragile. Use XConteBuilder for safe typing.
|
// NOTE: addMapping(type, ...) API is very fragile. Use XConteBuilder for safe typing.
|
||||||
createIndexRequestBuilder.addMapping(TYPE_NAME, builder);
|
createIndexRequestBuilder.addMapping(TYPE_NAME, builder);
|
||||||
}
|
}
|
||||||
createIndexRequestBuilder.setWaitForActiveShards(1);
|
|
||||||
CreateIndexResponse createIndexResponse = createIndexRequestBuilder.execute().actionGet();
|
CreateIndexResponse createIndexResponse = createIndexRequestBuilder.execute().actionGet();
|
||||||
logger.info("index {} created: {}", index,
|
logger.info("index {} created: {}", index,
|
||||||
Strings.toString(createIndexResponse.toXContent(XContentFactory.jsonBuilder(), ToXContent.EMPTY_PARAMS)));
|
Strings.toString(createIndexResponse.toXContent(XContentFactory.jsonBuilder(), ToXContent.EMPTY_PARAMS)));
|
||||||
|
waitForCluster("YELLOW", 30L, TimeUnit.SECONDS);
|
||||||
|
waitForShards(30L, TimeUnit.SECONDS);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
@ -219,7 +220,9 @@ public abstract class AbstractBulkClient extends AbstractNativeClient implements
|
||||||
@Override
|
@Override
|
||||||
public boolean waitForResponses(long timeout, TimeUnit timeUnit) {
|
public boolean waitForResponses(long timeout, TimeUnit timeUnit) {
|
||||||
ensureClientIsPresent();
|
ensureClientIsPresent();
|
||||||
return bulkController.waitForResponses(timeout, timeUnit);
|
boolean success = bulkController.waitForResponses(timeout, timeUnit);
|
||||||
|
logger.info("waited for all bulk responses: " + success);
|
||||||
|
return success;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
|
|
@ -13,9 +13,6 @@ import org.elasticsearch.action.admin.cluster.state.ClusterStateResponse;
|
||||||
import org.elasticsearch.action.admin.indices.exists.indices.IndicesExistsAction;
|
import org.elasticsearch.action.admin.indices.exists.indices.IndicesExistsAction;
|
||||||
import org.elasticsearch.action.admin.indices.exists.indices.IndicesExistsRequest;
|
import org.elasticsearch.action.admin.indices.exists.indices.IndicesExistsRequest;
|
||||||
import org.elasticsearch.action.admin.indices.exists.indices.IndicesExistsResponse;
|
import org.elasticsearch.action.admin.indices.exists.indices.IndicesExistsResponse;
|
||||||
import org.elasticsearch.action.admin.indices.mapping.get.GetMappingsAction;
|
|
||||||
import org.elasticsearch.action.admin.indices.mapping.get.GetMappingsRequestBuilder;
|
|
||||||
import org.elasticsearch.action.admin.indices.mapping.get.GetMappingsResponse;
|
|
||||||
import org.elasticsearch.action.admin.indices.settings.put.UpdateSettingsAction;
|
import org.elasticsearch.action.admin.indices.settings.put.UpdateSettingsAction;
|
||||||
import org.elasticsearch.action.admin.indices.settings.put.UpdateSettingsRequest;
|
import org.elasticsearch.action.admin.indices.settings.put.UpdateSettingsRequest;
|
||||||
import org.elasticsearch.action.search.SearchAction;
|
import org.elasticsearch.action.search.SearchAction;
|
||||||
|
@ -28,7 +25,6 @@ import org.elasticsearch.common.unit.TimeValue;
|
||||||
import org.elasticsearch.index.query.QueryBuilders;
|
import org.elasticsearch.index.query.QueryBuilders;
|
||||||
import org.xbib.elx.api.NativeClient;
|
import org.xbib.elx.api.NativeClient;
|
||||||
import java.io.IOException;
|
import java.io.IOException;
|
||||||
import java.util.Map;
|
|
||||||
import java.util.concurrent.TimeUnit;
|
import java.util.concurrent.TimeUnit;
|
||||||
import java.util.concurrent.atomic.AtomicBoolean;
|
import java.util.concurrent.atomic.AtomicBoolean;
|
||||||
|
|
||||||
|
@ -64,11 +60,10 @@ public abstract class AbstractNativeClient implements NativeClient {
|
||||||
|
|
||||||
protected abstract void closeClient() throws IOException;
|
protected abstract void closeClient() throws IOException;
|
||||||
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void init(Settings settings) throws IOException {
|
public void init(Settings settings) throws IOException {
|
||||||
logger.log(Level.INFO, "initializing with settings = " + settings.toDelimitedString(','));
|
|
||||||
if (client == null) {
|
if (client == null) {
|
||||||
|
logger.log(Level.INFO, "initializing with settings = " + settings.toDelimitedString(','));
|
||||||
client = createClient(settings);
|
client = createClient(settings);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -96,15 +91,35 @@ public abstract class AbstractNativeClient implements NativeClient {
|
||||||
@Override
|
@Override
|
||||||
public void waitForCluster(String statusString, long maxWaitTime, TimeUnit timeUnit) {
|
public void waitForCluster(String statusString, long maxWaitTime, TimeUnit timeUnit) {
|
||||||
ensureClientIsPresent();
|
ensureClientIsPresent();
|
||||||
|
logger.info("waiting for cluster status " + statusString);
|
||||||
ClusterHealthStatus status = ClusterHealthStatus.fromString(statusString);
|
ClusterHealthStatus status = ClusterHealthStatus.fromString(statusString);
|
||||||
TimeValue timeout = toTimeValue(maxWaitTime, timeUnit);
|
TimeValue timeout = toTimeValue(maxWaitTime, timeUnit);
|
||||||
ClusterHealthResponse healthResponse = client.execute(ClusterHealthAction.INSTANCE,
|
ClusterHealthRequest clusterHealthRequest = new ClusterHealthRequest()
|
||||||
new ClusterHealthRequest().timeout(timeout).waitForStatus(status)).actionGet();
|
.timeout(timeout)
|
||||||
if (healthResponse != null && healthResponse.isTimedOut()) {
|
.waitForStatus(status);
|
||||||
|
ClusterHealthResponse healthResponse =
|
||||||
|
client.execute(ClusterHealthAction.INSTANCE, clusterHealthRequest).actionGet();
|
||||||
|
if (healthResponse.isTimedOut()) {
|
||||||
String message = "timeout, cluster state is " + healthResponse.getStatus().name() + " and not " + status.name();
|
String message = "timeout, cluster state is " + healthResponse.getStatus().name() + " and not " + status.name();
|
||||||
if (logger.isErrorEnabled()) {
|
|
||||||
logger.error(message);
|
logger.error(message);
|
||||||
|
throw new IllegalStateException(message);
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void waitForShards(long maxWaitTime, TimeUnit timeUnit) {
|
||||||
|
ensureClientIsPresent();
|
||||||
|
logger.info("waiting for cluster shard settling");
|
||||||
|
TimeValue timeout = toTimeValue(maxWaitTime, timeUnit);
|
||||||
|
ClusterHealthRequest clusterHealthRequest = new ClusterHealthRequest()
|
||||||
|
.waitForNoInitializingShards(true)
|
||||||
|
.waitForNoRelocatingShards(true)
|
||||||
|
.timeout(timeout);
|
||||||
|
ClusterHealthResponse healthResponse =
|
||||||
|
client.execute(ClusterHealthAction.INSTANCE, clusterHealthRequest).actionGet();
|
||||||
|
if (healthResponse.isTimedOut()) {
|
||||||
|
String message = "timeout waiting for cluster shards";
|
||||||
|
logger.error(message);
|
||||||
throw new IllegalStateException(message);
|
throw new IllegalStateException(message);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -130,16 +145,6 @@ public abstract class AbstractNativeClient implements NativeClient {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
|
||||||
public Map<String, ?> getMapping(String index, String mapping) {
|
|
||||||
GetMappingsRequestBuilder getMappingsRequestBuilder = new GetMappingsRequestBuilder(client, GetMappingsAction.INSTANCE)
|
|
||||||
.setIndices(index)
|
|
||||||
.setTypes(mapping);
|
|
||||||
GetMappingsResponse getMappingsResponse = getMappingsRequestBuilder.execute().actionGet();
|
|
||||||
logger.info("get mappings response = {}", getMappingsResponse.getMappings().get(index).get(mapping).getSourceAsMap());
|
|
||||||
return getMappingsResponse.getMappings().get(index).get(mapping).getSourceAsMap();
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public long getSearchableDocs(String index) {
|
public long getSearchableDocs(String index) {
|
||||||
SearchRequestBuilder searchRequestBuilder = new SearchRequestBuilder(client, SearchAction.INSTANCE)
|
SearchRequestBuilder searchRequestBuilder = new SearchRequestBuilder(client, SearchAction.INSTANCE)
|
||||||
|
@ -158,7 +163,6 @@ public abstract class AbstractNativeClient implements NativeClient {
|
||||||
return indicesExistsResponse.isExists();
|
return indicesExistsResponse.isExists();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void close() throws IOException {
|
public void close() throws IOException {
|
||||||
ensureClientIsPresent();
|
ensureClientIsPresent();
|
||||||
|
@ -186,9 +190,6 @@ public abstract class AbstractNativeClient implements NativeClient {
|
||||||
}
|
}
|
||||||
|
|
||||||
protected void ensureClientIsPresent() {
|
protected void ensureClientIsPresent() {
|
||||||
if (this instanceof MockAdminClient) {
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
if (client == null) {
|
if (client == null) {
|
||||||
throw new IllegalStateException("no client");
|
throw new IllegalStateException("no client");
|
||||||
}
|
}
|
||||||
|
|
|
@ -47,7 +47,7 @@ public class DefaultBulkController implements BulkController {
|
||||||
|
|
||||||
private BulkListener bulkListener;
|
private BulkListener bulkListener;
|
||||||
|
|
||||||
private AtomicBoolean active;
|
private final AtomicBoolean active;
|
||||||
|
|
||||||
private boolean enableBulkLogging;
|
private boolean enableBulkLogging;
|
||||||
|
|
||||||
|
|
|
@ -2,13 +2,22 @@ package org.xbib.elx.common;
|
||||||
|
|
||||||
import org.elasticsearch.client.ElasticsearchClient;
|
import org.elasticsearch.client.ElasticsearchClient;
|
||||||
import org.elasticsearch.common.settings.Settings;
|
import org.elasticsearch.common.settings.Settings;
|
||||||
|
import org.xbib.elx.api.*;
|
||||||
|
|
||||||
|
import java.io.IOException;
|
||||||
|
import java.util.List;
|
||||||
|
import java.util.Map;
|
||||||
import java.util.concurrent.TimeUnit;
|
import java.util.concurrent.TimeUnit;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* A mocked client, it does not perform any actions on a cluster. Useful for testing.
|
* A mocked client, it does not perform any actions on a cluster. Useful for testing.
|
||||||
*/
|
*/
|
||||||
public class MockAdminClient extends AbstractAdminClient {
|
public class MockAdminClient extends MockNativeClient implements AdminClient {
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void setClient(ElasticsearchClient client) {
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public ElasticsearchClient getClient() {
|
public ElasticsearchClient getClient() {
|
||||||
|
@ -20,16 +29,42 @@ public class MockAdminClient extends AbstractAdminClient {
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
protected ElasticsearchClient createClient(Settings settings) {
|
public String getClusterName() {
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
protected void closeClient() {
|
public String getHealthColor(long maxWaitTime, TimeUnit timeUnit) {
|
||||||
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public MockAdminClient deleteIndex(String index) {
|
public IndexDefinition buildIndexDefinitionFromSettings(String index, Settings settings) throws IOException {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public Map<String, ?> getMapping(String index) {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public Map<String, ?> getMapping(String index, String type) {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public AdminClient deleteIndex(IndexDefinition indexDefinition) {
|
||||||
|
return this;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public AdminClient deleteIndex(String index) {
|
||||||
|
return this;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public AdminClient updateReplicaLevel(IndexDefinition indexDefinition, int level) throws IOException {
|
||||||
return this;
|
return this;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -38,20 +73,95 @@ public class MockAdminClient extends AbstractAdminClient {
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public String resolveAlias(String alias) {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public String resolveMostRecentIndex(String alias) {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public Map<String, String> getAliases(String index) {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public IndexShiftResult shiftIndex(IndexDefinition indexDefinition, List<String> additionalAliases) {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public IndexShiftResult shiftIndex(IndexDefinition indexDefinition, List<String> additionalAliases, IndexAliasAdder indexAliasAdder) {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public IndexShiftResult shiftIndex(String index, String fullIndexName, List<String> additionalAliases) {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public IndexShiftResult shiftIndex(String index, String fullIndexName, List<String> additionalAliases, IndexAliasAdder adder) {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public IndexPruneResult pruneIndex(IndexDefinition indexDefinition) {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public IndexPruneResult pruneIndex(String index, String fullIndexName, int delta, int mintokeep, boolean perform) {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public Long mostRecentDocument(String index, String timestampfieldname) throws IOException {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void waitForCluster(String healthColor, long timeValue, TimeUnit timeUnit) {
|
public void waitForCluster(String healthColor, long timeValue, TimeUnit timeUnit) {
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean waitForRecovery(String index, long maxWaitTime, TimeUnit timeUnit) {
|
public void waitForShards(long maxWaitTime, TimeUnit timeUnit) {
|
||||||
return true;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public MockAdminClient updateReplicaLevel(String index, int level, long maxWaitTime, TimeUnit timeUnit) {
|
public long getSearchableDocs(String index) {
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean isIndexExists(String index) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public AdminClient updateReplicaLevel(String index, int level, long maxWaitTime, TimeUnit timeUnit) {
|
||||||
return this;
|
return this;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public int getReplicaLevel(IndexDefinition indexDefinition) {
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public int getReplicaLevel(String index) {
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean forceMerge(IndexDefinition indexDefinition) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void close() {
|
public void close() {
|
||||||
// nothing to do
|
// nothing to do
|
||||||
|
|
|
@ -4,13 +4,22 @@ import org.elasticsearch.action.delete.DeleteRequest;
|
||||||
import org.elasticsearch.action.index.IndexRequest;
|
import org.elasticsearch.action.index.IndexRequest;
|
||||||
import org.elasticsearch.action.update.UpdateRequest;
|
import org.elasticsearch.action.update.UpdateRequest;
|
||||||
import org.elasticsearch.client.ElasticsearchClient;
|
import org.elasticsearch.client.ElasticsearchClient;
|
||||||
|
import org.elasticsearch.common.bytes.BytesReference;
|
||||||
import org.elasticsearch.common.settings.Settings;
|
import org.elasticsearch.common.settings.Settings;
|
||||||
|
import org.elasticsearch.common.xcontent.XContentBuilder;
|
||||||
|
import org.xbib.elx.api.BulkClient;
|
||||||
|
import org.xbib.elx.api.BulkController;
|
||||||
|
import org.xbib.elx.api.BulkMetric;
|
||||||
|
import org.xbib.elx.api.IndexDefinition;
|
||||||
|
|
||||||
|
import java.io.IOException;
|
||||||
|
import java.util.Map;
|
||||||
import java.util.concurrent.TimeUnit;
|
import java.util.concurrent.TimeUnit;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* A mocked client, it does not perform any actions on a cluster. Useful for testing.
|
* A mocked client, it does not perform any actions on a cluster. Useful for testing.
|
||||||
*/
|
*/
|
||||||
public class MockBulkClient extends AbstractBulkClient {
|
public class MockBulkClient extends MockNativeClient implements BulkClient {
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public ElasticsearchClient getClient() {
|
public ElasticsearchClient getClient() {
|
||||||
|
@ -35,6 +44,46 @@ public class MockBulkClient extends AbstractBulkClient {
|
||||||
protected void closeClient() {
|
protected void closeClient() {
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public BulkMetric getBulkMetric() {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public BulkController getBulkController() {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void newIndex(String index) throws IOException {
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void newIndex(IndexDefinition indexDefinition) throws IOException {
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void newIndex(String index, Settings settings) throws IOException {
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void newIndex(String index, Settings settings, XContentBuilder mapping) throws IOException {
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void newIndex(String index, Settings settings, Map<String, ?> mapping) throws IOException {
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public BulkClient index(String index, String id, boolean create, BytesReference source) {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public MockBulkClient index(String index, String id, boolean create, String source) {
|
public MockBulkClient index(String index, String id, boolean create, String source) {
|
||||||
return this;
|
return this;
|
||||||
|
@ -60,15 +109,30 @@ public class MockBulkClient extends AbstractBulkClient {
|
||||||
return this;
|
return this;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public BulkClient update(String index, String id, BytesReference source) {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public MockBulkClient update(UpdateRequest updateRequest) {
|
public MockBulkClient update(UpdateRequest updateRequest) {
|
||||||
return this;
|
return this;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void startBulk(IndexDefinition indexDefinition) throws IOException {
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void startBulk(String index, long startRefreshInterval, long stopRefreshIterval) {
|
public void startBulk(String index, long startRefreshInterval, long stopRefreshIterval) {
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void stopBulk(IndexDefinition indexDefinition) throws IOException {
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void stopBulk(String index, long maxWaitTime, TimeUnit timeUnit) {
|
public void stopBulk(String index, long maxWaitTime, TimeUnit timeUnit) {
|
||||||
}
|
}
|
||||||
|
@ -78,6 +142,11 @@ public class MockBulkClient extends AbstractBulkClient {
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void updateIndexSetting(String index, String key, Object value, long timeout, TimeUnit timeUnit) throws IOException {
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void refreshIndex(String index) {
|
public void refreshIndex(String index) {
|
||||||
}
|
}
|
||||||
|
|
|
@ -0,0 +1,74 @@
|
||||||
|
package org.xbib.elx.common;
|
||||||
|
|
||||||
|
import org.elasticsearch.client.ElasticsearchClient;
|
||||||
|
import org.elasticsearch.common.settings.Settings;
|
||||||
|
import org.xbib.elx.api.NativeClient;
|
||||||
|
|
||||||
|
import java.io.IOException;
|
||||||
|
import java.util.concurrent.TimeUnit;
|
||||||
|
|
||||||
|
public class MockNativeClient extends AbstractNativeClient implements NativeClient {
|
||||||
|
|
||||||
|
@Override
|
||||||
|
protected void ensureClientIsPresent() {
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void setClient(ElasticsearchClient client) {
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public ElasticsearchClient getClient() {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
protected ElasticsearchClient createClient(Settings settings) throws IOException {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
protected void closeClient() throws IOException {
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void init(Settings settings) throws IOException {
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public String getClusterName() {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public String getHealthColor(long maxWaitTime, TimeUnit timeUnit) {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void waitForCluster(String healthColor, long maxWaitTime, TimeUnit timeUnit) {
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void waitForShards(long maxWaitTime, TimeUnit timeUnit) {
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public long getSearchableDocs(String index) {
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean isIndexExists(String index) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void close() throws IOException {
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
|
@ -1,12 +1,25 @@
|
||||||
package org.xbib.elx.common;
|
package org.xbib.elx.common;
|
||||||
|
|
||||||
|
import org.elasticsearch.action.get.GetRequestBuilder;
|
||||||
|
import org.elasticsearch.action.get.GetResponse;
|
||||||
|
import org.elasticsearch.action.get.MultiGetRequestBuilder;
|
||||||
|
import org.elasticsearch.action.get.MultiGetResponse;
|
||||||
|
import org.elasticsearch.action.search.SearchRequestBuilder;
|
||||||
|
import org.elasticsearch.action.search.SearchResponse;
|
||||||
import org.elasticsearch.client.ElasticsearchClient;
|
import org.elasticsearch.client.ElasticsearchClient;
|
||||||
import org.elasticsearch.common.settings.Settings;
|
import org.elasticsearch.common.settings.Settings;
|
||||||
|
import org.elasticsearch.common.unit.TimeValue;
|
||||||
|
import org.elasticsearch.search.SearchHit;
|
||||||
|
import org.xbib.elx.api.SearchClient;
|
||||||
|
|
||||||
|
import java.util.Optional;
|
||||||
|
import java.util.function.Consumer;
|
||||||
|
import java.util.stream.Stream;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* A mocked client, it does not perform any actions on a cluster. Useful for testing.
|
* A mocked client, it does not perform any actions on a cluster. Useful for testing.
|
||||||
*/
|
*/
|
||||||
public class MockSearchClient extends AbstractSearchClient {
|
public class MockSearchClient extends MockNativeClient implements SearchClient {
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public ElasticsearchClient getClient() {
|
public ElasticsearchClient getClient() {
|
||||||
|
@ -35,4 +48,29 @@ public class MockSearchClient extends AbstractSearchClient {
|
||||||
public void close() {
|
public void close() {
|
||||||
// nothing to do
|
// nothing to do
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public Optional<GetResponse> get(Consumer<GetRequestBuilder> getRequestBuilder) {
|
||||||
|
return Optional.empty();
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public Optional<MultiGetResponse> multiGet(Consumer<MultiGetRequestBuilder> multiGetRequestBuilder) {
|
||||||
|
return Optional.empty();
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public Optional<SearchResponse> search(Consumer<SearchRequestBuilder> searchRequestBuilder) {
|
||||||
|
return Optional.empty();
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public Stream<SearchHit> search(Consumer<SearchRequestBuilder> searchRequestBuilder, TimeValue scrollTime, int scrollSize) {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public Stream<String> getIds(Consumer<SearchRequestBuilder> queryBuilder) {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -0,0 +1 @@
|
||||||
|
org.xbib.elx.common.MockBulkClientProvider
|
|
@ -0,0 +1 @@
|
||||||
|
org.xbib.elx.common.MockSearchClientProvider
|
|
@ -1,21 +0,0 @@
|
||||||
package org.xbib.elx.common.test;
|
|
||||||
|
|
||||||
import org.junit.jupiter.api.Test;
|
|
||||||
import org.xbib.elx.common.ClientBuilder;
|
|
||||||
import org.xbib.elx.common.MockAdminClient;
|
|
||||||
import org.xbib.elx.common.MockAdminClientProvider;
|
|
||||||
|
|
||||||
import java.io.IOException;
|
|
||||||
|
|
||||||
import static org.junit.jupiter.api.Assertions.assertNotNull;
|
|
||||||
|
|
||||||
class MockAdminClientProviderTest {
|
|
||||||
|
|
||||||
@Test
|
|
||||||
void testMockAdminProvider() throws IOException {
|
|
||||||
MockAdminClient client = ClientBuilder.builder()
|
|
||||||
.setAdminClientProvider(MockAdminClientProvider.class)
|
|
||||||
.build();
|
|
||||||
assertNotNull(client);
|
|
||||||
}
|
|
||||||
}
|
|
|
@ -0,0 +1,35 @@
|
||||||
|
package org.xbib.elx.common.test;
|
||||||
|
|
||||||
|
import org.junit.jupiter.api.Test;
|
||||||
|
import org.xbib.elx.common.*;
|
||||||
|
|
||||||
|
import java.io.IOException;
|
||||||
|
|
||||||
|
import static org.junit.jupiter.api.Assertions.assertNotNull;
|
||||||
|
|
||||||
|
class MockClientProviderTest {
|
||||||
|
|
||||||
|
@Test
|
||||||
|
void testMockAdminClientProvider() throws IOException {
|
||||||
|
MockAdminClient client = ClientBuilder.builder()
|
||||||
|
.setAdminClientProvider(MockAdminClientProvider.class)
|
||||||
|
.build();
|
||||||
|
assertNotNull(client);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
void testMockBulkClientProvider() throws IOException {
|
||||||
|
MockBulkClient client = ClientBuilder.builder()
|
||||||
|
.setBulkClientProvider(MockBulkClientProvider.class)
|
||||||
|
.build();
|
||||||
|
assertNotNull(client);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
void testMockSearchClientProvider() throws IOException {
|
||||||
|
MockSearchClient client = ClientBuilder.builder()
|
||||||
|
.setSearchClientProvider(MockSearchClientProvider.class)
|
||||||
|
.build();
|
||||||
|
assertNotNull(client);
|
||||||
|
}
|
||||||
|
}
|
|
@ -10,6 +10,8 @@ import org.junit.jupiter.api.Test;
|
||||||
import org.junit.jupiter.api.extension.ExtendWith;
|
import org.junit.jupiter.api.extension.ExtendWith;
|
||||||
import org.xbib.elx.common.ClientBuilder;
|
import org.xbib.elx.common.ClientBuilder;
|
||||||
import org.xbib.elx.common.Parameters;
|
import org.xbib.elx.common.Parameters;
|
||||||
|
import org.xbib.elx.http.HttpAdminClient;
|
||||||
|
import org.xbib.elx.http.HttpAdminClientProvider;
|
||||||
import org.xbib.elx.http.HttpBulkClient;
|
import org.xbib.elx.http.HttpBulkClient;
|
||||||
import org.xbib.elx.http.HttpBulkClientProvider;
|
import org.xbib.elx.http.HttpBulkClientProvider;
|
||||||
|
|
||||||
|
@ -73,11 +75,14 @@ class BulkClientTest {
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
void testMapping() throws Exception {
|
void testMapping() throws Exception {
|
||||||
final HttpBulkClient client = ClientBuilder.builder()
|
try (HttpAdminClient adminClient = ClientBuilder.builder()
|
||||||
|
.setAdminClientProvider(HttpAdminClientProvider.class)
|
||||||
|
.put(helper.getHttpSettings())
|
||||||
|
.build();
|
||||||
|
HttpBulkClient bulkClient = ClientBuilder.builder()
|
||||||
.setBulkClientProvider(HttpBulkClientProvider.class)
|
.setBulkClientProvider(HttpBulkClientProvider.class)
|
||||||
.put(helper.getHttpSettings())
|
.put(helper.getHttpSettings())
|
||||||
.put(Parameters.FLUSH_INTERVAL.name(), TimeValue.timeValueSeconds(5))
|
.build()) {
|
||||||
.build();
|
|
||||||
XContentBuilder builder = JsonXContent.contentBuilder()
|
XContentBuilder builder = JsonXContent.contentBuilder()
|
||||||
.startObject()
|
.startObject()
|
||||||
.startObject("doc")
|
.startObject("doc")
|
||||||
|
@ -88,9 +93,9 @@ class BulkClientTest {
|
||||||
.endObject()
|
.endObject()
|
||||||
.endObject()
|
.endObject()
|
||||||
.endObject();
|
.endObject();
|
||||||
client.newIndex("test", Settings.EMPTY, builder);
|
bulkClient.newIndex("test", Settings.EMPTY, builder);
|
||||||
assertTrue(client.getMapping("test", "doc").containsKey("properties"));
|
assertTrue(adminClient.getMapping("test", "doc").containsKey("properties"));
|
||||||
client.close();
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
|
|
|
@ -16,6 +16,7 @@ import org.xbib.elx.http.HttpBulkClientProvider;
|
||||||
import org.xbib.elx.http.HttpSearchClient;
|
import org.xbib.elx.http.HttpSearchClient;
|
||||||
import org.xbib.elx.http.HttpSearchClientProvider;
|
import org.xbib.elx.http.HttpSearchClientProvider;
|
||||||
import java.util.concurrent.TimeUnit;
|
import java.util.concurrent.TimeUnit;
|
||||||
|
import java.util.concurrent.atomic.AtomicInteger;
|
||||||
import java.util.stream.Stream;
|
import java.util.stream.Stream;
|
||||||
|
|
||||||
@ExtendWith(TestExtension.class)
|
@ExtendWith(TestExtension.class)
|
||||||
|
@ -70,7 +71,12 @@ class SearchTest {
|
||||||
Stream<String> ids = searchClient.getIds(qb -> qb
|
Stream<String> ids = searchClient.getIds(qb -> qb
|
||||||
.setIndices("test")
|
.setIndices("test")
|
||||||
.setQuery(QueryBuilders.matchAllQuery()));
|
.setQuery(QueryBuilders.matchAllQuery()));
|
||||||
ids.forEach(logger::info);
|
final AtomicInteger idcount = new AtomicInteger();
|
||||||
|
ids.forEach(id -> {
|
||||||
|
logger.info(id);
|
||||||
|
idcount.incrementAndGet();
|
||||||
|
});
|
||||||
|
assertEquals(numactions, idcount.get());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -40,6 +40,7 @@ class SmokeTest {
|
||||||
.build()) {
|
.build()) {
|
||||||
IndexDefinition indexDefinition =
|
IndexDefinition indexDefinition =
|
||||||
adminClient.buildIndexDefinitionFromSettings("test_smoke", Settings.EMPTY);
|
adminClient.buildIndexDefinitionFromSettings("test_smoke", Settings.EMPTY);
|
||||||
|
assertEquals(0, indexDefinition.getReplicaLevel());
|
||||||
assertEquals(helper.getClusterName(), adminClient.getClusterName());
|
assertEquals(helper.getClusterName(), adminClient.getClusterName());
|
||||||
bulkClient.newIndex("test_smoke");
|
bulkClient.newIndex("test_smoke");
|
||||||
bulkClient.index("test_smoke", "1", true, "{ \"name\" : \"Hello World\"}"); // single doc ingest
|
bulkClient.index("test_smoke", "1", true, "{ \"name\" : \"Hello World\"}"); // single doc ingest
|
||||||
|
@ -50,12 +51,10 @@ class SmokeTest {
|
||||||
bulkClient.delete("test_smoke", "1");
|
bulkClient.delete("test_smoke", "1");
|
||||||
bulkClient.flush();
|
bulkClient.flush();
|
||||||
bulkClient.waitForResponses(30, TimeUnit.SECONDS);
|
bulkClient.waitForResponses(30, TimeUnit.SECONDS);
|
||||||
adminClient.waitForRecovery("test_smoke", 10L, TimeUnit.SECONDS);
|
|
||||||
bulkClient.delete("test_smoke", "1");
|
|
||||||
bulkClient.index("test_smoke", "1", true, "{ \"name\" : \"Hello World\"}");
|
bulkClient.index("test_smoke", "1", true, "{ \"name\" : \"Hello World\"}");
|
||||||
|
bulkClient.delete("test_smoke", "1");
|
||||||
bulkClient.flush();
|
bulkClient.flush();
|
||||||
adminClient.deleteIndex("test_smoke");
|
adminClient.deleteIndex("test_smoke");
|
||||||
assertEquals(0, indexDefinition.getReplicaLevel());
|
|
||||||
bulkClient.newIndex(indexDefinition);
|
bulkClient.newIndex(indexDefinition);
|
||||||
bulkClient.index(indexDefinition.getFullIndexName(), "1", true, "{ \"name\" : \"Hello World\"}");
|
bulkClient.index(indexDefinition.getFullIndexName(), "1", true, "{ \"name\" : \"Hello World\"}");
|
||||||
bulkClient.flush();
|
bulkClient.flush();
|
||||||
|
@ -63,11 +62,11 @@ class SmokeTest {
|
||||||
adminClient.updateReplicaLevel(indexDefinition, 2);
|
adminClient.updateReplicaLevel(indexDefinition, 2);
|
||||||
int replica = adminClient.getReplicaLevel(indexDefinition);
|
int replica = adminClient.getReplicaLevel(indexDefinition);
|
||||||
assertEquals(2, replica);
|
assertEquals(2, replica);
|
||||||
|
assertEquals(0, bulkClient.getBulkMetric().getFailed().getCount());
|
||||||
|
assertEquals(6, bulkClient.getBulkMetric().getSucceeded().getCount());
|
||||||
if (bulkClient.getBulkController().getLastBulkError() != null) {
|
if (bulkClient.getBulkController().getLastBulkError() != null) {
|
||||||
logger.error("error", bulkClient.getBulkController().getLastBulkError());
|
logger.error("error", bulkClient.getBulkController().getLastBulkError());
|
||||||
}
|
}
|
||||||
assertEquals(0, bulkClient.getBulkMetric().getFailed().getCount());
|
|
||||||
assertEquals(6, bulkClient.getBulkMetric().getSucceeded().getCount());
|
|
||||||
assertNull(bulkClient.getBulkController().getLastBulkError());
|
assertNull(bulkClient.getBulkController().getLastBulkError());
|
||||||
adminClient.deleteIndex(indexDefinition);
|
adminClient.deleteIndex(indexDefinition);
|
||||||
}
|
}
|
||||||
|
|
|
@ -10,6 +10,8 @@ import org.junit.jupiter.api.Test;
|
||||||
import org.junit.jupiter.api.extension.ExtendWith;
|
import org.junit.jupiter.api.extension.ExtendWith;
|
||||||
import org.xbib.elx.common.ClientBuilder;
|
import org.xbib.elx.common.ClientBuilder;
|
||||||
import org.xbib.elx.common.Parameters;
|
import org.xbib.elx.common.Parameters;
|
||||||
|
import org.xbib.elx.node.NodeAdminClient;
|
||||||
|
import org.xbib.elx.node.NodeAdminClientProvider;
|
||||||
import org.xbib.elx.node.NodeBulkClient;
|
import org.xbib.elx.node.NodeBulkClient;
|
||||||
import org.xbib.elx.node.NodeBulkClientProvider;
|
import org.xbib.elx.node.NodeBulkClientProvider;
|
||||||
|
|
||||||
|
@ -71,9 +73,12 @@ class BulkClientTest {
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
void testMapping() throws Exception {
|
void testMapping() throws Exception {
|
||||||
final NodeBulkClient bulkClient = ClientBuilder.builder(helper.client("1"))
|
try (NodeAdminClient adminClient = ClientBuilder.builder(helper.client("1"))
|
||||||
.setBulkClientProvider(NodeBulkClientProvider.class)
|
.setAdminClientProvider(NodeAdminClientProvider.class)
|
||||||
.build();
|
.build();
|
||||||
|
NodeBulkClient bulkClient = ClientBuilder.builder(helper.client("1"))
|
||||||
|
.setBulkClientProvider(NodeBulkClientProvider.class)
|
||||||
|
.build()) {
|
||||||
XContentBuilder builder = JsonXContent.contentBuilder()
|
XContentBuilder builder = JsonXContent.contentBuilder()
|
||||||
.startObject()
|
.startObject()
|
||||||
.startObject("doc")
|
.startObject("doc")
|
||||||
|
@ -85,8 +90,8 @@ class BulkClientTest {
|
||||||
.endObject()
|
.endObject()
|
||||||
.endObject();
|
.endObject();
|
||||||
bulkClient.newIndex("test", Settings.EMPTY, builder);
|
bulkClient.newIndex("test", Settings.EMPTY, builder);
|
||||||
assertTrue(bulkClient.getMapping("test", "doc").containsKey("properties"));
|
assertTrue(adminClient.getMapping("test", "doc").containsKey("properties"));
|
||||||
bulkClient.close();
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
|
|
|
@ -16,6 +16,7 @@ import org.xbib.elx.node.NodeBulkClientProvider;
|
||||||
import org.xbib.elx.node.NodeSearchClient;
|
import org.xbib.elx.node.NodeSearchClient;
|
||||||
import org.xbib.elx.node.NodeSearchClientProvider;
|
import org.xbib.elx.node.NodeSearchClientProvider;
|
||||||
import java.util.concurrent.TimeUnit;
|
import java.util.concurrent.TimeUnit;
|
||||||
|
import java.util.concurrent.atomic.AtomicInteger;
|
||||||
import java.util.stream.Stream;
|
import java.util.stream.Stream;
|
||||||
|
|
||||||
@ExtendWith(TestExtension.class)
|
@ExtendWith(TestExtension.class)
|
||||||
|
@ -68,7 +69,12 @@ class SearchTest {
|
||||||
Stream<String> ids = searchClient.getIds(qb -> qb
|
Stream<String> ids = searchClient.getIds(qb -> qb
|
||||||
.setIndices("test")
|
.setIndices("test")
|
||||||
.setQuery(QueryBuilders.matchAllQuery()));
|
.setQuery(QueryBuilders.matchAllQuery()));
|
||||||
ids.forEach(logger::info);
|
final AtomicInteger idcount = new AtomicInteger();
|
||||||
|
ids.forEach(id -> {
|
||||||
|
logger.info(id);
|
||||||
|
idcount.incrementAndGet();
|
||||||
|
});
|
||||||
|
assertEquals(numactions, idcount.get());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -38,6 +38,7 @@ class SmokeTest {
|
||||||
.build()) {
|
.build()) {
|
||||||
IndexDefinition indexDefinition =
|
IndexDefinition indexDefinition =
|
||||||
adminClient.buildIndexDefinitionFromSettings("test_smoke", Settings.EMPTY);
|
adminClient.buildIndexDefinitionFromSettings("test_smoke", Settings.EMPTY);
|
||||||
|
assertEquals(0, indexDefinition.getReplicaLevel());
|
||||||
assertEquals(helper.getClusterName(), adminClient.getClusterName());
|
assertEquals(helper.getClusterName(), adminClient.getClusterName());
|
||||||
bulkClient.newIndex("test_smoke");
|
bulkClient.newIndex("test_smoke");
|
||||||
bulkClient.index("test_smoke", "1", true, "{ \"name\" : \"Hello World\"}"); // single doc ingest
|
bulkClient.index("test_smoke", "1", true, "{ \"name\" : \"Hello World\"}"); // single doc ingest
|
||||||
|
@ -48,12 +49,10 @@ class SmokeTest {
|
||||||
bulkClient.delete("test_smoke", "1");
|
bulkClient.delete("test_smoke", "1");
|
||||||
bulkClient.flush();
|
bulkClient.flush();
|
||||||
bulkClient.waitForResponses(30, TimeUnit.SECONDS);
|
bulkClient.waitForResponses(30, TimeUnit.SECONDS);
|
||||||
adminClient.waitForRecovery("test_smoke", 10L, TimeUnit.SECONDS);
|
|
||||||
bulkClient.index("test_smoke", "1", true, "{ \"name\" : \"Hello World\"}");
|
bulkClient.index("test_smoke", "1", true, "{ \"name\" : \"Hello World\"}");
|
||||||
bulkClient.delete("test_smoke", "1");
|
bulkClient.delete("test_smoke", "1");
|
||||||
bulkClient.flush();
|
bulkClient.flush();
|
||||||
adminClient.deleteIndex("test_smoke");
|
adminClient.deleteIndex("test_smoke");
|
||||||
assertEquals(0, indexDefinition.getReplicaLevel());
|
|
||||||
bulkClient.newIndex(indexDefinition);
|
bulkClient.newIndex(indexDefinition);
|
||||||
bulkClient.index(indexDefinition.getFullIndexName(), "1", true, "{ \"name\" : \"Hello World\"}");
|
bulkClient.index(indexDefinition.getFullIndexName(), "1", true, "{ \"name\" : \"Hello World\"}");
|
||||||
bulkClient.flush();
|
bulkClient.flush();
|
||||||
|
@ -61,11 +60,11 @@ class SmokeTest {
|
||||||
adminClient.updateReplicaLevel(indexDefinition, 2);
|
adminClient.updateReplicaLevel(indexDefinition, 2);
|
||||||
int replica = adminClient.getReplicaLevel(indexDefinition);
|
int replica = adminClient.getReplicaLevel(indexDefinition);
|
||||||
assertEquals(2, replica);
|
assertEquals(2, replica);
|
||||||
|
assertEquals(0, bulkClient.getBulkMetric().getFailed().getCount());
|
||||||
|
assertEquals(6, bulkClient.getBulkMetric().getSucceeded().getCount());
|
||||||
if (bulkClient.getBulkController().getLastBulkError() != null) {
|
if (bulkClient.getBulkController().getLastBulkError() != null) {
|
||||||
logger.error("error", bulkClient.getBulkController().getLastBulkError());
|
logger.error("error", bulkClient.getBulkController().getLastBulkError());
|
||||||
}
|
}
|
||||||
assertEquals(0, bulkClient.getBulkMetric().getFailed().getCount());
|
|
||||||
assertEquals(6, bulkClient.getBulkMetric().getSucceeded().getCount());
|
|
||||||
assertNull(bulkClient.getBulkController().getLastBulkError());
|
assertNull(bulkClient.getBulkController().getLastBulkError());
|
||||||
adminClient.deleteIndex(indexDefinition);
|
adminClient.deleteIndex(indexDefinition);
|
||||||
}
|
}
|
||||||
|
|
|
@ -11,6 +11,8 @@ import org.junit.jupiter.api.Test;
|
||||||
import org.junit.jupiter.api.extension.ExtendWith;
|
import org.junit.jupiter.api.extension.ExtendWith;
|
||||||
import org.xbib.elx.common.ClientBuilder;
|
import org.xbib.elx.common.ClientBuilder;
|
||||||
import org.xbib.elx.common.Parameters;
|
import org.xbib.elx.common.Parameters;
|
||||||
|
import org.xbib.elx.transport.TransportAdminClient;
|
||||||
|
import org.xbib.elx.transport.TransportAdminClientProvider;
|
||||||
import org.xbib.elx.transport.TransportBulkClient;
|
import org.xbib.elx.transport.TransportBulkClient;
|
||||||
import org.xbib.elx.transport.TransportBulkClientProvider;
|
import org.xbib.elx.transport.TransportBulkClientProvider;
|
||||||
|
|
||||||
|
@ -74,10 +76,14 @@ class BulkClientTest {
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
void testMapping() throws Exception {
|
void testMapping() throws Exception {
|
||||||
final TransportBulkClient bulkClient = ClientBuilder.builder()
|
try (TransportAdminClient adminClient = ClientBuilder.builder()
|
||||||
.setBulkClientProvider(TransportBulkClientProvider.class)
|
.setAdminClientProvider(TransportAdminClientProvider.class)
|
||||||
.put(helper.getTransportSettings())
|
.put(helper.getTransportSettings())
|
||||||
.build();
|
.build();
|
||||||
|
TransportBulkClient bulkClient = ClientBuilder.builder()
|
||||||
|
.setBulkClientProvider(TransportBulkClientProvider.class)
|
||||||
|
.put(helper.getTransportSettings())
|
||||||
|
.build()) {
|
||||||
XContentBuilder builder = JsonXContent.contentBuilder()
|
XContentBuilder builder = JsonXContent.contentBuilder()
|
||||||
.startObject()
|
.startObject()
|
||||||
.startObject("doc")
|
.startObject("doc")
|
||||||
|
@ -89,8 +95,8 @@ class BulkClientTest {
|
||||||
.endObject()
|
.endObject()
|
||||||
.endObject();
|
.endObject();
|
||||||
bulkClient.newIndex("test", Settings.EMPTY, builder);
|
bulkClient.newIndex("test", Settings.EMPTY, builder);
|
||||||
assertTrue(bulkClient.getMapping("test", "doc").containsKey("properties"));
|
assertTrue(adminClient.getMapping("test", "doc").containsKey("properties"));
|
||||||
bulkClient.close();
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
|
|
|
@ -16,6 +16,7 @@ import org.xbib.elx.transport.TransportBulkClientProvider;
|
||||||
import org.xbib.elx.transport.TransportSearchClient;
|
import org.xbib.elx.transport.TransportSearchClient;
|
||||||
import org.xbib.elx.transport.TransportSearchClientProvider;
|
import org.xbib.elx.transport.TransportSearchClientProvider;
|
||||||
import java.util.concurrent.TimeUnit;
|
import java.util.concurrent.TimeUnit;
|
||||||
|
import java.util.concurrent.atomic.AtomicInteger;
|
||||||
import java.util.stream.Stream;
|
import java.util.stream.Stream;
|
||||||
|
|
||||||
@ExtendWith(TestExtension.class)
|
@ExtendWith(TestExtension.class)
|
||||||
|
@ -70,7 +71,12 @@ class SearchTest {
|
||||||
Stream<String> ids = searchClient.getIds(qb -> qb
|
Stream<String> ids = searchClient.getIds(qb -> qb
|
||||||
.setIndices("test")
|
.setIndices("test")
|
||||||
.setQuery(QueryBuilders.matchAllQuery()));
|
.setQuery(QueryBuilders.matchAllQuery()));
|
||||||
ids.forEach(logger::info);
|
final AtomicInteger idcount = new AtomicInteger();
|
||||||
|
ids.forEach(id -> {
|
||||||
|
logger.info(id);
|
||||||
|
idcount.incrementAndGet();
|
||||||
|
});
|
||||||
|
assertEquals(numactions, idcount.get());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -40,6 +40,7 @@ class SmokeTest {
|
||||||
.build()) {
|
.build()) {
|
||||||
IndexDefinition indexDefinition =
|
IndexDefinition indexDefinition =
|
||||||
adminClient.buildIndexDefinitionFromSettings("test_smoke", Settings.EMPTY);
|
adminClient.buildIndexDefinitionFromSettings("test_smoke", Settings.EMPTY);
|
||||||
|
assertEquals(0, indexDefinition.getReplicaLevel());
|
||||||
assertEquals(helper.getClusterName(), adminClient.getClusterName());
|
assertEquals(helper.getClusterName(), adminClient.getClusterName());
|
||||||
bulkClient.newIndex("test_smoke");
|
bulkClient.newIndex("test_smoke");
|
||||||
bulkClient.index("test_smoke", "1", true, "{ \"name\" : \"Hello World\"}"); // single doc ingest
|
bulkClient.index("test_smoke", "1", true, "{ \"name\" : \"Hello World\"}"); // single doc ingest
|
||||||
|
@ -50,9 +51,10 @@ class SmokeTest {
|
||||||
bulkClient.delete("test_smoke", "1");
|
bulkClient.delete("test_smoke", "1");
|
||||||
bulkClient.flush();
|
bulkClient.flush();
|
||||||
bulkClient.waitForResponses(30, TimeUnit.SECONDS);
|
bulkClient.waitForResponses(30, TimeUnit.SECONDS);
|
||||||
adminClient.checkMapping("test_smoke");
|
bulkClient.index("test_smoke", "1", true, "{ \"name\" : \"Hello World\"}");
|
||||||
|
bulkClient.delete("test_smoke", "1");
|
||||||
|
bulkClient.flush();
|
||||||
adminClient.deleteIndex("test_smoke");
|
adminClient.deleteIndex("test_smoke");
|
||||||
assertEquals(0, indexDefinition.getReplicaLevel());
|
|
||||||
bulkClient.newIndex(indexDefinition);
|
bulkClient.newIndex(indexDefinition);
|
||||||
bulkClient.index(indexDefinition.getFullIndexName(), "1", true, "{ \"name\" : \"Hello World\"}");
|
bulkClient.index(indexDefinition.getFullIndexName(), "1", true, "{ \"name\" : \"Hello World\"}");
|
||||||
bulkClient.flush();
|
bulkClient.flush();
|
||||||
|
@ -61,7 +63,7 @@ class SmokeTest {
|
||||||
int replica = adminClient.getReplicaLevel(indexDefinition);
|
int replica = adminClient.getReplicaLevel(indexDefinition);
|
||||||
assertEquals(2, replica);
|
assertEquals(2, replica);
|
||||||
assertEquals(0, bulkClient.getBulkMetric().getFailed().getCount());
|
assertEquals(0, bulkClient.getBulkMetric().getFailed().getCount());
|
||||||
assertEquals(4, bulkClient.getBulkMetric().getSucceeded().getCount());
|
assertEquals(6, bulkClient.getBulkMetric().getSucceeded().getCount());
|
||||||
if (bulkClient.getBulkController().getLastBulkError() != null) {
|
if (bulkClient.getBulkController().getLastBulkError() != null) {
|
||||||
logger.error("error", bulkClient.getBulkController().getLastBulkError());
|
logger.error("error", bulkClient.getBulkController().getLastBulkError());
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
group = org.xbib
|
group = org.xbib
|
||||||
name = elx
|
name = elx
|
||||||
version = 6.3.2.6
|
version = 6.3.2.7
|
||||||
|
|
||||||
gradle.wrapper.version = 6.4.1
|
gradle.wrapper.version = 6.4.1
|
||||||
elasticsearch-server.version = 6.3.2.4
|
elasticsearch-server.version = 6.3.2.4
|
||||||
|
|
Loading…
Reference in a new issue