Skip to content

Commit d93a81d

Browse files
committed
HSEARCH-1375 Remove abstractions from the TCK backend setup strategies
I want to add more features in there and the abstractions get in the way.
1 parent 5afc90a commit d93a81d

File tree

10 files changed

+203
-151
lines changed

10 files changed

+203
-151
lines changed

integrationtest/backend/elasticsearch/src/test/java/org/hibernate/search/integrationtest/backend/elasticsearch/client/ElasticsearchContentLengthIT.java

Lines changed: 3 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -169,11 +169,9 @@ public void payloadJustAboveBufferSize_requestPostProcessing() throws Exception
169169
}
170170

171171
private ElasticsearchClientImplementor createClient() {
172-
ConfigurationPropertySource defaultBackendProperties = ConfigurationPropertySource.fromMap(
173-
testConfigurationProvider.getPropertiesFromFile(
174-
ElasticsearchTckBackendHelper.DEFAULT_BACKEND_PROPERTIES_PATH
175-
)
176-
);
172+
ConfigurationPropertySource defaultBackendProperties =
173+
new ElasticsearchTckBackendHelper().createDefaultBackendSetupStrategy()
174+
.createBackendConfigurationPropertySource( testConfigurationProvider );
177175

178176
// Redirect requests to Wiremock
179177
Map<String, Object> configurationOverride = new HashMap<>();

integrationtest/backend/elasticsearch/src/test/java/org/hibernate/search/integrationtest/backend/elasticsearch/testsupport/util/ElasticsearchTckBackendHelper.java

Lines changed: 9 additions & 51 deletions
Original file line numberDiff line numberDiff line change
@@ -6,30 +6,21 @@
66
*/
77
package org.hibernate.search.integrationtest.backend.elasticsearch.testsupport.util;
88

9-
import java.util.LinkedHashMap;
10-
import java.util.Map;
11-
import java.util.function.BiConsumer;
12-
import java.util.function.Consumer;
139
import java.util.Optional;
1410

15-
import org.hibernate.search.engine.cfg.spi.ConfigurationPropertySource;
1611
import org.hibernate.search.integrationtest.backend.elasticsearch.testsupport.configuration.AnalysisCustomITAnalysisConfigurer;
1712
import org.hibernate.search.integrationtest.backend.elasticsearch.testsupport.configuration.AnalysisOverrideITAnalysisConfigurer;
18-
import org.hibernate.search.util.impl.integrationtest.backend.elasticsearch.ElasticsearchTestHostConnectionConfiguration;
19-
import org.hibernate.search.util.impl.integrationtest.backend.elasticsearch.dialect.ElasticsearchTestDialect;
2013
import org.hibernate.search.integrationtest.backend.tck.testsupport.util.TckBackendFeatures;
2114
import org.hibernate.search.integrationtest.backend.tck.testsupport.util.TckBackendHelper;
2215
import org.hibernate.search.integrationtest.backend.tck.testsupport.util.TckBackendSetupStrategy;
2316
import org.hibernate.search.integrationtest.backend.tck.testsupport.util.rule.SearchSetupHelper;
24-
import org.hibernate.search.util.impl.integrationtest.common.TestConfigurationProvider;
17+
import org.hibernate.search.util.impl.integrationtest.backend.elasticsearch.dialect.ElasticsearchTestDialect;
2518
import org.hibernate.search.util.impl.integrationtest.backend.elasticsearch.rule.TestElasticsearchClient;
2619

2720
import org.junit.rules.TestRule;
2821

2922
public class ElasticsearchTckBackendHelper implements TckBackendHelper {
3023

31-
public static final String DEFAULT_BACKEND_PROPERTIES_PATH = "/backend-defaults.properties";
32-
3324
private final ElasticsearchTckBackendFeatures features = new ElasticsearchTckBackendFeatures( ElasticsearchTestDialect.get() );
3425

3526
@Override
@@ -39,48 +30,25 @@ public TckBackendFeatures getBackendFeatures() {
3930

4031
@Override
4132
public TckBackendSetupStrategy createDefaultBackendSetupStrategy() {
42-
return TckBackendSetupStrategy.of( DEFAULT_BACKEND_PROPERTIES_PATH, createProperties() );
33+
return new ElasticsearchTckBackendSetupStrategy();
4334
}
4435

4536
@Override
4637
public TckBackendSetupStrategy createMultiTenancyBackendSetupStrategy() {
47-
return TckBackendSetupStrategy.of(
48-
DEFAULT_BACKEND_PROPERTIES_PATH,
49-
createProperties( c -> c.accept( "multi_tenancy.strategy", "discriminator" ) )
50-
);
38+
return new ElasticsearchTckBackendSetupStrategy()
39+
.setProperty( "multi_tenancy.strategy", "discriminator" );
5140
}
5241

5342
@Override
5443
public TckBackendSetupStrategy createAnalysisCustomBackendSetupStrategy() {
55-
return TckBackendSetupStrategy.of(
56-
DEFAULT_BACKEND_PROPERTIES_PATH,
57-
createProperties( c ->
58-
c.accept( "analysis.configurer", AnalysisCustomITAnalysisConfigurer.class.getName() )
59-
)
60-
);
44+
return new ElasticsearchTckBackendSetupStrategy()
45+
.setProperty( "analysis.configurer", AnalysisCustomITAnalysisConfigurer.class.getName() );
6146
}
6247

6348
@Override
6449
public TckBackendSetupStrategy createAnalysisOverrideBackendSetupStrategy() {
65-
return TckBackendSetupStrategy.of(
66-
DEFAULT_BACKEND_PROPERTIES_PATH,
67-
createProperties( c ->
68-
c.accept( "analysis.configurer", AnalysisOverrideITAnalysisConfigurer.class.getName() )
69-
)
70-
);
71-
}
72-
73-
private Map<String, Object> createProperties() {
74-
Map<String, Object> map = new LinkedHashMap<>();
75-
// Always add configuration options that allow to connect to Elasticsearch
76-
ElasticsearchTestHostConnectionConfiguration.get().addToBackendProperties( map );
77-
return map;
78-
}
79-
80-
private Map<String, Object> createProperties(Consumer<BiConsumer<String, Object>> overrides) {
81-
Map<String, Object> map = createProperties();
82-
overrides.accept( map::put );
83-
return map;
50+
return new ElasticsearchTckBackendSetupStrategy()
51+
.setProperty( "analysis.configurer", AnalysisOverrideITAnalysisConfigurer.class.getName() );
8452
}
8553

8654
@Override
@@ -95,24 +63,14 @@ public TckBackendSetupStrategy createNoShardingBackendSetupStrategy() {
9563

9664
@Override
9765
public TckBackendSetupStrategy createHashBasedShardingBackendSetupStrategy(int shardCount) {
98-
return new TckBackendSetupStrategy() {
66+
return new ElasticsearchTckBackendSetupStrategy() {
9967
private final TestElasticsearchClient elasticsearchClient = new TestElasticsearchClient();
10068

10169
@Override
10270
public Optional<TestRule> getTestRule() {
10371
return Optional.of( elasticsearchClient );
10472
}
10573

106-
@Override
107-
public ConfigurationPropertySource createBackendConfigurationPropertySource(
108-
TestConfigurationProvider configurationProvider) {
109-
Map<String, Object> properties = configurationProvider.getPropertiesFromFile(
110-
DEFAULT_BACKEND_PROPERTIES_PATH
111-
);
112-
ElasticsearchTestHostConnectionConfiguration.get().addToBackendProperties( properties );
113-
return ConfigurationPropertySource.fromMap( properties );
114-
}
115-
11674
@Override
11775
public SearchSetupHelper.SetupContext startSetup(SearchSetupHelper.SetupContext setupHelper) {
11876
// Make sure automatically created indexes will have an appropriate number of shards
Lines changed: 58 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,58 @@
1+
/*
2+
* Hibernate Search, full-text search for your domain model
3+
*
4+
* License: GNU Lesser General Public License (LGPL), version 2.1 or later
5+
* See the lgpl.txt file in the root directory or <http://www.gnu.org/licenses/lgpl-2.1.html>.
6+
*/
7+
package org.hibernate.search.integrationtest.backend.elasticsearch.testsupport.util;
8+
9+
import java.util.LinkedHashMap;
10+
import java.util.Map;
11+
import java.util.Optional;
12+
13+
import org.hibernate.search.engine.cfg.spi.ConfigurationPropertySource;
14+
import org.hibernate.search.integrationtest.backend.elasticsearch.testsupport.configuration.DefaultITAnalysisConfigurer;
15+
import org.hibernate.search.integrationtest.backend.tck.testsupport.util.TckBackendSetupStrategy;
16+
import org.hibernate.search.integrationtest.backend.tck.testsupport.util.rule.SearchSetupHelper;
17+
import org.hibernate.search.util.impl.integrationtest.backend.elasticsearch.ElasticsearchTestHostConnectionConfiguration;
18+
import org.hibernate.search.util.impl.integrationtest.common.TestConfigurationProvider;
19+
20+
import org.junit.rules.TestRule;
21+
22+
class ElasticsearchTckBackendSetupStrategy implements TckBackendSetupStrategy {
23+
24+
private final Map<String, Object> properties = new LinkedHashMap<>();
25+
26+
ElasticsearchTckBackendSetupStrategy() {
27+
setProperty( "type", "elasticsearch" );
28+
setProperty( "log.json_pretty_printing", "true" );
29+
setProperty( "analysis.configurer", DefaultITAnalysisConfigurer.class.getName() );
30+
setProperty( "index_defaults.lifecycle.strategy", "drop-and-create-and-drop" );
31+
setProperty( "index_defaults.lifecycle.minimal_required_status", "yellow" );
32+
// Always add configuration options that allow to connect to Elasticsearch
33+
ElasticsearchTestHostConnectionConfiguration.get().addToBackendProperties( properties );
34+
}
35+
36+
ElasticsearchTckBackendSetupStrategy setProperty(String key, Object value) {
37+
properties.put( key, value );
38+
return this;
39+
}
40+
41+
@Override
42+
public Optional<TestRule> getTestRule() {
43+
return Optional.empty();
44+
}
45+
46+
@Override
47+
public ConfigurationPropertySource createBackendConfigurationPropertySource(
48+
TestConfigurationProvider configurationProvider) {
49+
return ConfigurationPropertySource.fromMap(
50+
configurationProvider.interpolateProperties( properties )
51+
);
52+
}
53+
54+
@Override
55+
public SearchSetupHelper.SetupContext startSetup(SearchSetupHelper.SetupContext setupContext) {
56+
return setupContext;
57+
}
58+
}

integrationtest/backend/lucene/src/test/java/org/hibernate/search/integrationtest/backend/lucene/testsupport/util/LuceneTckBackendHelper.java

Lines changed: 11 additions & 29 deletions
Original file line numberDiff line numberDiff line change
@@ -6,10 +6,6 @@
66
*/
77
package org.hibernate.search.integrationtest.backend.lucene.testsupport.util;
88

9-
import java.util.Collections;
10-
import java.util.HashMap;
11-
import java.util.Map;
12-
139
import org.hibernate.search.engine.cfg.BackendSettings;
1410
import org.hibernate.search.integrationtest.backend.lucene.testsupport.configuration.AnalysisCustomITAnalysisConfigurer;
1511
import org.hibernate.search.integrationtest.backend.lucene.testsupport.configuration.AnalysisOverrideITAnalysisConfigurer;
@@ -19,8 +15,6 @@
1915

2016
public class LuceneTckBackendHelper implements TckBackendHelper {
2117

22-
private static final String DEFAULT_BACKEND_PROPERTIES_PATH = "/backend-defaults.properties";
23-
2418
private final LuceneTckBackendFeatures features = new LuceneTckBackendFeatures();
2519

2620
@Override
@@ -30,31 +24,25 @@ public TckBackendFeatures getBackendFeatures() {
3024

3125
@Override
3226
public TckBackendSetupStrategy createDefaultBackendSetupStrategy() {
33-
return TckBackendSetupStrategy.of( DEFAULT_BACKEND_PROPERTIES_PATH );
27+
return new LuceneTckBackendSetupStrategy();
3428
}
3529

3630
@Override
3731
public TckBackendSetupStrategy createMultiTenancyBackendSetupStrategy() {
38-
return TckBackendSetupStrategy.of(
39-
DEFAULT_BACKEND_PROPERTIES_PATH,
40-
Collections.singletonMap( "multi_tenancy.strategy", "discriminator" )
41-
);
32+
return new LuceneTckBackendSetupStrategy()
33+
.setProperty( "multi_tenancy.strategy", "discriminator" );
4234
}
4335

4436
@Override
4537
public TckBackendSetupStrategy createAnalysisCustomBackendSetupStrategy() {
46-
return TckBackendSetupStrategy.of(
47-
DEFAULT_BACKEND_PROPERTIES_PATH,
48-
Collections.singletonMap( "analysis.configurer", AnalysisCustomITAnalysisConfigurer.class.getName() )
49-
);
38+
return new LuceneTckBackendSetupStrategy()
39+
.setProperty( "analysis.configurer", AnalysisCustomITAnalysisConfigurer.class.getName() );
5040
}
5141

5242
@Override
5343
public TckBackendSetupStrategy createAnalysisOverrideBackendSetupStrategy() {
54-
return TckBackendSetupStrategy.of(
55-
DEFAULT_BACKEND_PROPERTIES_PATH,
56-
Collections.singletonMap( "analysis.configurer", AnalysisOverrideITAnalysisConfigurer.class.getName() )
57-
);
44+
return new LuceneTckBackendSetupStrategy()
45+
.setProperty( "analysis.configurer", AnalysisOverrideITAnalysisConfigurer.class.getName() );
5846
}
5947

6048
@Override
@@ -65,15 +53,9 @@ public TckBackendSetupStrategy createNoShardingBackendSetupStrategy() {
6553

6654
@Override
6755
public TckBackendSetupStrategy createHashBasedShardingBackendSetupStrategy(int shardCount) {
68-
Map<String, Object> overrides = new HashMap<>();
69-
overrides.put(
70-
BackendSettings.INDEX_DEFAULTS + ".sharding.strategy",
71-
"hash"
72-
);
73-
overrides.put(
74-
BackendSettings.INDEX_DEFAULTS + ".sharding.number_of_shards",
75-
String.valueOf( shardCount )
76-
);
77-
return TckBackendSetupStrategy.of( DEFAULT_BACKEND_PROPERTIES_PATH, overrides );
56+
return new LuceneTckBackendSetupStrategy()
57+
.setProperty( BackendSettings.INDEX_DEFAULTS + ".sharding.strategy", "hash" )
58+
.setProperty( BackendSettings.INDEX_DEFAULTS + ".sharding.number_of_shards",
59+
String.valueOf( shardCount ) );
7860
}
7961
}
Lines changed: 54 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,54 @@
1+
/*
2+
* Hibernate Search, full-text search for your domain model
3+
*
4+
* License: GNU Lesser General Public License (LGPL), version 2.1 or later
5+
* See the lgpl.txt file in the root directory or <http://www.gnu.org/licenses/lgpl-2.1.html>.
6+
*/
7+
package org.hibernate.search.integrationtest.backend.lucene.testsupport.util;
8+
9+
import java.util.LinkedHashMap;
10+
import java.util.Map;
11+
import java.util.Optional;
12+
13+
import org.hibernate.search.engine.cfg.spi.ConfigurationPropertySource;
14+
import org.hibernate.search.integrationtest.backend.lucene.testsupport.configuration.DefaultITAnalysisConfigurer;
15+
import org.hibernate.search.integrationtest.backend.tck.testsupport.util.TckBackendSetupStrategy;
16+
import org.hibernate.search.integrationtest.backend.tck.testsupport.util.rule.SearchSetupHelper;
17+
import org.hibernate.search.util.impl.integrationtest.common.TestConfigurationProvider;
18+
19+
import org.junit.rules.TestRule;
20+
21+
class LuceneTckBackendSetupStrategy implements TckBackendSetupStrategy {
22+
23+
private final Map<String, Object> properties = new LinkedHashMap<>();
24+
25+
LuceneTckBackendSetupStrategy() {
26+
setProperty( "type", "lucene" );
27+
setProperty( "directory.root", LuceneTestIndexesPathConfiguration.get().getPath()
28+
+ "/#{tck.startup.timestamp}/#{tck.test.id}/" );
29+
setProperty( "analysis.configurer", DefaultITAnalysisConfigurer.class.getName() );
30+
}
31+
32+
LuceneTckBackendSetupStrategy setProperty(String key, Object value) {
33+
properties.put( key, value );
34+
return this;
35+
}
36+
37+
@Override
38+
public Optional<TestRule> getTestRule() {
39+
return Optional.empty();
40+
}
41+
42+
@Override
43+
public ConfigurationPropertySource createBackendConfigurationPropertySource(
44+
TestConfigurationProvider configurationProvider) {
45+
return ConfigurationPropertySource.fromMap(
46+
configurationProvider.interpolateProperties( properties )
47+
);
48+
}
49+
50+
@Override
51+
public SearchSetupHelper.SetupContext startSetup(SearchSetupHelper.SetupContext setupContext) {
52+
return setupContext;
53+
}
54+
}
Lines changed: 48 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,48 @@
1+
/*
2+
* Hibernate Search, full-text search for your domain model
3+
*
4+
* License: GNU Lesser General Public License (LGPL), version 2.1 or later
5+
* See the lgpl.txt file in the root directory or <http://www.gnu.org/licenses/lgpl-2.1.html>.
6+
*/
7+
package org.hibernate.search.integrationtest.backend.lucene.testsupport.util;
8+
9+
import java.nio.file.Paths;
10+
11+
import org.jboss.logging.Logger;
12+
13+
public class LuceneTestIndexesPathConfiguration {
14+
15+
private static final Logger log = Logger.getLogger( LuceneTestIndexesPathConfiguration.class.getName() );
16+
17+
private static LuceneTestIndexesPathConfiguration instance;
18+
19+
public static LuceneTestIndexesPathConfiguration get() {
20+
if ( instance == null ) {
21+
instance = new LuceneTestIndexesPathConfiguration();
22+
}
23+
return instance;
24+
}
25+
26+
private final String path;
27+
28+
private LuceneTestIndexesPathConfiguration() {
29+
String pathFromSystemProperties = System.getProperty( "test.lucene.indexes.path" );
30+
if ( pathFromSystemProperties == null ) {
31+
// Happens when running tests from the IDE.
32+
// Assume tests are run from the module's root directory.
33+
this.path = Paths.get( "target/test-indexes" ).toAbsolutePath().toString();
34+
}
35+
else {
36+
this.path = pathFromSystemProperties;
37+
}
38+
39+
log.infof(
40+
"Integration tests will put indexes in directory '%s'",
41+
path
42+
);
43+
}
44+
45+
public String getPath() {
46+
return path;
47+
}
48+
}

0 commit comments

Comments
 (0)