Skip to content

Commit 26e470c

Browse files
committed
iter
1 parent 0796328 commit 26e470c

File tree

6 files changed

+111
-26
lines changed

6 files changed

+111
-26
lines changed

gradle/verification-metadata.xml

Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3351,6 +3351,11 @@
33513351
<sha256 value="a31b6a604894ef9cb8075c828061f390c598b5baceea088230315c7795cee50a" origin="Generated by Gradle"/>
33523352
</artifact>
33533353
</component>
3354+
<component group="org.apiguardian" name="apiguardian-api" version="1.0.0">
3355+
<artifact name="apiguardian-api-1.0.0.jar">
3356+
<sha256 value="1f58b77470d8d147a0538d515347dd322f49a83b9e884b8970051160464b65b3" origin="Generated by Gradle"/>
3357+
</artifact>
3358+
</component>
33543359
<component group="org.apiguardian" name="apiguardian-api" version="1.1.2">
33553360
<artifact name="apiguardian-api-1.1.2.jar">
33563361
<sha256 value="b509448ac506d607319f182537f0b35d71007582ec741832a1f111e5b5b70b38" origin="Generated by Gradle"/>
@@ -4121,6 +4126,26 @@
41214126
<sha256 value="83a9ed68adcb76e60316a4d682fc48507865df2f0ab35f82695cc9995410e05e" origin="Generated by Gradle"/>
41224127
</artifact>
41234128
</component>
4129+
<component group="org.junit.platform" name="junit-platform-reporting" version="1.12.0">
4130+
<artifact name="junit-platform-reporting-1.12.0.jar">
4131+
<sha256 value="cb5c2dd87cb1f46f8cc5954e48e76e5719776cf942d6e4df1588c6ef4fdefcec" origin="Generated by Gradle"/>
4132+
</artifact>
4133+
</component>
4134+
<component group="org.junit.platform" name="junit-platform-suite-api" version="1.12.0">
4135+
<artifact name="junit-platform-suite-api-1.12.0.jar">
4136+
<sha256 value="d460ff55f3740addbd780a760d3c7e9af5512b44daaf4b150a2fdc53bdc49be7" origin="Generated by Gradle"/>
4137+
</artifact>
4138+
</component>
4139+
<component group="org.junit.platform" name="junit-platform-suite-commons" version="1.12.0">
4140+
<artifact name="junit-platform-suite-commons-1.12.0.jar">
4141+
<sha256 value="aa7e0c70b54aef673dfb1202117091b43d10c0d0121ff848185df0a79fe16cb5" origin="Generated by Gradle"/>
4142+
</artifact>
4143+
</component>
4144+
<component group="org.junit.platform" name="junit-platform-suite-engine" version="1.12.0">
4145+
<artifact name="junit-platform-suite-engine-1.12.0.jar">
4146+
<sha256 value="db03c569e7cfb1dab94d990d9d7aecf61b906a594d33b860292f5f51e0de4b71" origin="Generated by Gradle"/>
4147+
</artifact>
4148+
</component>
41244149
<component group="org.junit.platform" name="junit-platform-testkit" version="1.8.1">
41254150
<artifact name="junit-platform-testkit-1.8.1.jar">
41264151
<sha256 value="38d6b8bdd3e5de159564bf33bd8918ce24baca57a84f1ea743f0074e4819e697" origin="Generated by Gradle"/>
Lines changed: 11 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,21 +1,26 @@
11
apply plugin: 'elasticsearch.internal-java-rest-test'
22

33
dependencies {
4-
javaRestTestImplementation(platform("org.junit:junit-bom:5.12.0"))
5-
javaRestTestImplementation("org.junit.jupiter:junit-jupiter:5.12.0")
6-
javaRestTestImplementation("net.jqwik:jqwik:1.9.2")
4+
javaRestTestImplementation("org.junit.jupiter:junit-jupiter-api:5.12.0")
5+
javaRestTestImplementation("org.junit.jupiter:junit-jupiter-params:5.12.0")
6+
javaRestTestRuntimeOnly("org.junit.jupiter:junit-jupiter-engine:5.12.0")
7+
javaRestTestRuntimeOnly("org.junit.platform:junit-platform-launcher:1.12.0")
8+
javaRestTestRuntimeOnly("org.junit.platform:junit-platform-commons:1.12.0")
9+
javaRestTestRuntimeOnly("org.junit.platform:junit-platform-reporting:1.12.0")
10+
11+
javaRestTestImplementation("net.jqwik:jqwik-api:1.9.2")
12+
javaRestTestCompileOnly("org.apiguardian:apiguardian-api:1.0.0")
13+
javaRestTestRuntimeOnly("net.jqwik:jqwik-engine:1.9.2")
714
}
815

9-
tasks.withType(Test).configureEach {
16+
tasks.named("javaRestTest").configure {
1017
useJUnitPlatform {
1118
includeEngines 'jqwik'
1219
}
1320

1421
include '**/*Properties.class'
1522
include '**/*Test.class'
1623
include '**/*Tests.class'
17-
}
1824

19-
tasks.named("javaRestTest").configure {
2025
usesDefaultDistribution()
2126
}

x-pack/plugin/logsdb/property-rest-tests/src/javaRestTest/java/org/elasticsearch/xpack/logsdb/OnDemandClusterBuilder.java

Lines changed: 9 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -22,9 +22,15 @@
2222
import java.util.function.Supplier;
2323

2424
public class OnDemandClusterBuilder extends AbstractLocalClusterSpecBuilder<OnDemandLocalCluster> {
25-
public OnDemandClusterBuilder() {
26-
this.settings(new DefaultSettingsProvider());
27-
this.environment(new DefaultEnvironmentProvider());
25+
private OnDemandClusterBuilder() {
26+
super();
27+
}
28+
29+
public static OnDemandClusterBuilder create() {
30+
var builder = new OnDemandClusterBuilder();
31+
builder.settings(new DefaultSettingsProvider());
32+
builder.environment(new DefaultEnvironmentProvider());
33+
return builder;
2834
}
2935

3036
@Override

x-pack/plugin/logsdb/property-rest-tests/src/javaRestTest/java/org/elasticsearch/xpack/logsdb/StandardVsLogsDbRestTest.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,8 @@
1515
import org.elasticsearch.test.cluster.local.distribution.DistributionType;
1616

1717
public class StandardVsLogsDbRestTest {
18-
public static OnDemandLocalCluster cluster = new OnDemandClusterBuilder().distribution(DistributionType.DEFAULT)
18+
public static OnDemandLocalCluster cluster = OnDemandClusterBuilder.create()
19+
.distribution(DistributionType.DEFAULT)
1920
.module("data-streams")
2021
.module("x-pack-stack")
2122
.setting("xpack.security.enabled", "false")
4 Bytes
Binary file not shown.

x-pack/plugin/logsdb/property-tests/src/test/java/org/elasticsearch/xpack/logsdb/KeywordBlockLoaderTests.java

Lines changed: 64 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@
1010
import net.jqwik.api.Arbitraries;
1111
import net.jqwik.api.Arbitrary;
1212
import net.jqwik.api.Builders;
13+
import net.jqwik.api.Combinators;
1314
import net.jqwik.api.ForAll;
1415
import net.jqwik.api.Property;
1516
import net.jqwik.api.Provide;
@@ -32,6 +33,7 @@
3233
import org.elasticsearch.index.mapper.FieldNamesFieldMapper;
3334
import org.elasticsearch.index.mapper.LuceneDocument;
3435
import org.elasticsearch.index.mapper.MappedFieldType;
36+
import org.elasticsearch.index.mapper.Mapper;
3537
import org.elasticsearch.index.mapper.MapperService;
3638
import org.elasticsearch.index.mapper.SourceFieldMetrics;
3739
import org.elasticsearch.index.mapper.SourceLoader;
@@ -64,7 +66,7 @@ static void beforeContainer() {
6466
@Property(tries = 10000)
6567
void blockLoaderReturnsCorrectResults(
6668
@ForAll("settings") Settings indexSettings,
67-
@ForAll("mapping") Map<String, Object> fieldMapping,
69+
@ForAll("fieldMapping") Map<String, Object> fieldMapping,
6870
@ForAll("document") Map<String, Object> document
6971
) throws IOException {
7072
var mapping = Map.of("_doc", Map.of("properties", Map.of("field", fieldMapping)));
@@ -83,6 +85,15 @@ void blockLoaderReturnsCorrectResults(
8385
Assertions.assertEquals(expected, blockLoaderResult);
8486
}
8587

88+
@Property
89+
void testComplexMapping(@ForAll("settings") Settings indexSettings, @ForAll("deepMapping") Map<String, Object> mapping) throws IOException {
90+
var fullMapping = Map.of("_doc", Map.of("properties", Map.of("top", mapping)));
91+
var mappingXContent = XContentBuilder.builder(XContentType.JSON.xContent()).map(fullMapping);
92+
var mapperService = createMapperService(indexSettings, mappingXContent);
93+
94+
mapperService.documentMapper();
95+
}
96+
8697
@Provide
8798
Arbitrary<Settings> settings() {
8899
var syntheticSource = Arbitraries.of(true, false);
@@ -98,7 +109,58 @@ Arbitrary<Settings> settings() {
98109
}
99110

100111
@Provide
101-
Arbitrary<Map<String, Object>> mapping() {
112+
Arbitrary<Map<String, Object>> deepMapping() {
113+
var depth = Arbitraries.integers().between(0, 5);
114+
115+
return depth.flatMap(d -> objectLevel(d, objectMapping(), fieldMapping()));
116+
}
117+
118+
@Provide
119+
Arbitrary<Map<String, Object>> objectLevel(
120+
int remainingDepth,
121+
Arbitrary<Map<String, Object>> objectMapping,
122+
Arbitrary<Map<String, Object>> fieldMapping
123+
) {
124+
if (remainingDepth == 0) {
125+
return Combinators.combine(objectMapping, fieldMapping).as((obj, f) -> {
126+
var properties = new HashMap<>() {
127+
{
128+
put("field", f);
129+
}
130+
};
131+
132+
obj.put("properties", properties);
133+
return obj;
134+
});
135+
}
136+
137+
var child = objectLevel(remainingDepth - 1, objectMapping, fieldMapping);
138+
var childName = Arbitraries.strings().ofLength(5).withCharRange('a', 'z');
139+
return Combinators.combine(objectMapping, childName, child).as((parent, cn, c) -> {
140+
var properties = new HashMap<>() {
141+
{
142+
put(cn, c);
143+
}
144+
};
145+
146+
parent.put("properties", properties);
147+
return parent;
148+
});
149+
}
150+
151+
@Provide
152+
Arbitrary<Map<String, Object>> objectMapping() {
153+
var syntheticSourceKeep = Arbitraries.of(Mapper.SourceKeepMode.values());
154+
155+
return syntheticSourceKeep.map(ssk -> new HashMap<>() {
156+
{
157+
put("synthetic_source_keep", ssk.toString());
158+
}
159+
});
160+
}
161+
162+
@Provide
163+
Arbitrary<Map<String, Object>> fieldMapping() {
102164
var docValues = Arbitraries.of(true, false);
103165
var index = Arbitraries.of(true, false);
104166
var store = Arbitraries.of(true, false);
@@ -141,20 +203,6 @@ Arbitrary<Map<String, Object>> document() {
141203
return keywordValues.map(l -> Map.of("field", l));
142204
}
143205

144-
@Provide
145-
Arbitrary<Map<String, Object>> deepDocument() {
146-
var keywordValues = Arbitraries.strings()
147-
.withCharRange('0', 'z')
148-
.ofMinLength(0)
149-
.ofMaxLength(50)
150-
.injectNull(0.05)
151-
.list()
152-
.ofMinSize(0)
153-
.ofMaxSize(10);
154-
155-
return keywordValues.map(l -> Map.of("field", l));
156-
}
157-
158206
private MapperService createMapperService(Settings indexSettings, XContentBuilder mappingXContent) throws IOException {
159207
return new TestMapperServiceBuilder().withSettings(indexSettings).withMapping(mappingXContent).build();
160208
}

0 commit comments

Comments
 (0)