mirror of
https://github.com/honeymoose/OpenSearch.git
synced 2025-02-20 03:45:02 +00:00
Add Random MergePolicy via index templates in integration tests
This commit adds support for random merge policies set for every index created in an AbstractIntegrationTest. It will either set 'logbyte', 'logdoc' or 'tiered' merge policy as well as a random value for compound files.
This commit is contained in:
parent
ec6539df37
commit
ec809200f0
@ -28,6 +28,7 @@ import org.elasticsearch.common.settings.Settings;
|
|||||||
public class MergePolicyModule extends AbstractModule {
|
public class MergePolicyModule extends AbstractModule {
|
||||||
|
|
||||||
private final Settings settings;
|
private final Settings settings;
|
||||||
|
public static final String MERGE_POLICY_TYPE_KEY = "index.merge.policy.type";
|
||||||
|
|
||||||
public MergePolicyModule(Settings settings) {
|
public MergePolicyModule(Settings settings) {
|
||||||
this.settings = settings;
|
this.settings = settings;
|
||||||
|
@ -55,6 +55,7 @@ import org.elasticsearch.common.Priority;
|
|||||||
import org.elasticsearch.common.settings.ImmutableSettings;
|
import org.elasticsearch.common.settings.ImmutableSettings;
|
||||||
import org.elasticsearch.common.settings.Settings;
|
import org.elasticsearch.common.settings.Settings;
|
||||||
import org.elasticsearch.common.xcontent.XContentBuilder;
|
import org.elasticsearch.common.xcontent.XContentBuilder;
|
||||||
|
import org.elasticsearch.index.merge.policy.*;
|
||||||
import org.elasticsearch.indices.IndexAlreadyExistsException;
|
import org.elasticsearch.indices.IndexAlreadyExistsException;
|
||||||
import org.elasticsearch.indices.IndexMissingException;
|
import org.elasticsearch.indices.IndexMissingException;
|
||||||
import org.elasticsearch.indices.IndexTemplateMissingException;
|
import org.elasticsearch.indices.IndexTemplateMissingException;
|
||||||
@ -201,11 +202,33 @@ public abstract class AbstractIntegrationTest extends ElasticSearchTestCase {
|
|||||||
client().admin().indices().preparePutTemplate("random_index_template")
|
client().admin().indices().preparePutTemplate("random_index_template")
|
||||||
.setTemplate("*")
|
.setTemplate("*")
|
||||||
.setOrder(0)
|
.setOrder(0)
|
||||||
.setSettings(ImmutableSettings.builder()
|
.setSettings(setRandomMergePolicy(getRandom(), ImmutableSettings.builder()
|
||||||
.put(INDEX_SEED_SETTING, getRandom().nextLong()))
|
.put(INDEX_SEED_SETTING, getRandom().nextLong())))
|
||||||
.execute().actionGet();
|
.execute().actionGet();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
private static ImmutableSettings.Builder setRandomMergePolicy(Random random, ImmutableSettings.Builder builder) {
|
||||||
|
if (random.nextBoolean()) {
|
||||||
|
builder.put(AbstractMergePolicyProvider.INDEX_COMPOUND_FORMAT,
|
||||||
|
random.nextBoolean() ? random.nextDouble() : random.nextBoolean());
|
||||||
|
}
|
||||||
|
Class<? extends MergePolicyProvider<?>> clazz = TieredMergePolicyProvider.class;
|
||||||
|
switch(random.nextInt(5)) {
|
||||||
|
case 4:
|
||||||
|
clazz = LogByteSizeMergePolicyProvider.class;
|
||||||
|
break;
|
||||||
|
case 3:
|
||||||
|
clazz = LogDocMergePolicyProvider.class;
|
||||||
|
break;
|
||||||
|
case 0:
|
||||||
|
return builder; // don't set the setting at all
|
||||||
|
}
|
||||||
|
assert clazz != null;
|
||||||
|
builder.put(MergePolicyModule.MERGE_POLICY_TYPE_KEY, clazz.getName());
|
||||||
|
return builder;
|
||||||
|
}
|
||||||
|
|
||||||
public static Iterable<Client> clients() {
|
public static Iterable<Client> clients() {
|
||||||
return cluster();
|
return cluster();
|
||||||
|
Loading…
x
Reference in New Issue
Block a user