Skip to content

Commit d9b3d31

Browse files
committed
Merge branch 'main' into more-csv-tests
2 parents bc37ded + 8dca924 commit d9b3d31

File tree

144 files changed

+2348
-825
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

144 files changed

+2348
-825
lines changed
Lines changed: 142 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,142 @@
1+
/*
2+
* Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one
3+
* or more contributor license agreements. Licensed under the "Elastic License
4+
* 2.0", the "GNU Affero General Public License v3.0 only", and the "Server Side
5+
* Public License v 1"; you may not use this file except in compliance with, at
6+
* your election, the "Elastic License 2.0", the "GNU Affero General Public
7+
* License v3.0 only", or the "Server Side Public License, v 1".
8+
*/
9+
10+
package org.elasticsearch.benchmark.common.network;
11+
12+
import org.elasticsearch.common.network.InetAddresses;
13+
import org.elasticsearch.xcontent.Text;
14+
import org.elasticsearch.xcontent.XContentString;
15+
import org.openjdk.jmh.annotations.Benchmark;
16+
import org.openjdk.jmh.annotations.BenchmarkMode;
17+
import org.openjdk.jmh.annotations.Fork;
18+
import org.openjdk.jmh.annotations.Measurement;
19+
import org.openjdk.jmh.annotations.Mode;
20+
import org.openjdk.jmh.annotations.OutputTimeUnit;
21+
import org.openjdk.jmh.annotations.Param;
22+
import org.openjdk.jmh.annotations.Scope;
23+
import org.openjdk.jmh.annotations.Setup;
24+
import org.openjdk.jmh.annotations.State;
25+
import org.openjdk.jmh.annotations.Warmup;
26+
import org.openjdk.jmh.infra.Blackhole;
27+
28+
import java.net.InetAddress;
29+
import java.net.UnknownHostException;
30+
import java.util.Random;
31+
import java.util.concurrent.TimeUnit;
32+
33+
@Warmup(iterations = 2)
34+
@Measurement(iterations = 3)
35+
@BenchmarkMode(Mode.Throughput)
36+
@OutputTimeUnit(TimeUnit.SECONDS)
37+
@State(Scope.Benchmark)
38+
@Fork(1)
39+
public class IpAddressesBenchmarks {
40+
41+
@Param("1000")
42+
private int size;
43+
private String[] ipV6Addresses;
44+
private String[] ipV4Addresses;
45+
private XContentString[] ipV6AddressesBytes;
46+
private XContentString[] ipV4AddressesBytes;
47+
48+
@Setup
49+
public void setup() throws UnknownHostException {
50+
Random random = new Random();
51+
ipV6Addresses = new String[size];
52+
ipV4Addresses = new String[size];
53+
ipV6AddressesBytes = new XContentString[size];
54+
ipV4AddressesBytes = new XContentString[size];
55+
byte[] ipv6Bytes = new byte[16];
56+
byte[] ipv4Bytes = new byte[4];
57+
for (int i = 0; i < size; i++) {
58+
random.nextBytes(ipv6Bytes);
59+
random.nextBytes(ipv4Bytes);
60+
String ipv6String = InetAddresses.toAddrString(InetAddress.getByAddress(ipv6Bytes));
61+
String ipv4String = InetAddresses.toAddrString(InetAddress.getByAddress(ipv4Bytes));
62+
ipV6Addresses[i] = ipv6String;
63+
ipV4Addresses[i] = ipv4String;
64+
ipV6AddressesBytes[i] = new Text(ipv6String);
65+
ipV4AddressesBytes[i] = new Text(ipv4String);
66+
}
67+
}
68+
69+
@Benchmark
70+
public boolean isInetAddressIpv6() {
71+
boolean b = true;
72+
for (int i = 0; i < size; i++) {
73+
b ^= InetAddresses.isInetAddress(ipV6Addresses[i]);
74+
}
75+
return b;
76+
}
77+
78+
@Benchmark
79+
public boolean isInetAddressIpv4() {
80+
boolean b = true;
81+
for (int i = 0; i < size; i++) {
82+
b ^= InetAddresses.isInetAddress(ipV4Addresses[i]);
83+
}
84+
return b;
85+
}
86+
87+
@Benchmark
88+
public void getIpOrHostIpv6(Blackhole blackhole) {
89+
for (int i = 0; i < size; i++) {
90+
blackhole.consume(InetAddresses.getIpOrHost(ipV6Addresses[i]));
91+
}
92+
}
93+
94+
@Benchmark
95+
public void getIpOrHostIpv4(Blackhole blackhole) {
96+
for (int i = 0; i < size; i++) {
97+
blackhole.consume(InetAddresses.forString(ipV4Addresses[i]));
98+
}
99+
}
100+
101+
@Benchmark
102+
public void forStringIpv6String(Blackhole blackhole) {
103+
for (int i = 0; i < size; i++) {
104+
blackhole.consume(InetAddresses.forString(ipV6Addresses[i]));
105+
}
106+
}
107+
108+
@Benchmark
109+
public void forStringIpv4String(Blackhole blackhole) {
110+
for (int i = 0; i < size; i++) {
111+
blackhole.consume(InetAddresses.forString(ipV4Addresses[i]));
112+
}
113+
}
114+
115+
@Benchmark
116+
public void forStringIpv6Bytes(Blackhole blackhole) {
117+
for (int i = 0; i < size; i++) {
118+
blackhole.consume(InetAddresses.forString(ipV6AddressesBytes[i].bytes()));
119+
}
120+
}
121+
122+
@Benchmark
123+
public void forStringIpv4Bytes(Blackhole blackhole) {
124+
for (int i = 0; i < size; i++) {
125+
blackhole.consume(InetAddresses.forString(ipV4AddressesBytes[i].bytes()));
126+
}
127+
}
128+
129+
@Benchmark
130+
public void encodeAsIpv6WithIpv6(Blackhole blackhole) {
131+
for (int i = 0; i < size; i++) {
132+
blackhole.consume(InetAddresses.encodeAsIpv6(ipV6AddressesBytes[i]));
133+
}
134+
}
135+
136+
@Benchmark
137+
public void encodeAsIpv6WithIpv4(Blackhole blackhole) {
138+
for (int i = 0; i < size; i++) {
139+
blackhole.consume(InetAddresses.encodeAsIpv6(ipV4AddressesBytes[i]));
140+
}
141+
}
142+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,122 @@
1+
/*
2+
* Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one
3+
* or more contributor license agreements. Licensed under the "Elastic License
4+
* 2.0", the "GNU Affero General Public License v3.0 only", and the "Server Side
5+
* Public License v 1"; you may not use this file except in compliance with, at
6+
* your election, the "Elastic License 2.0", the "GNU Affero General Public
7+
* License v3.0 only", or the "Server Side Public License, v 1".
8+
*/
9+
10+
package org.elasticsearch.gradle.internal.transport
11+
12+
import org.elasticsearch.gradle.fixtures.AbstractGradleFuncTest
13+
import org.gradle.testkit.runner.BuildResult
14+
import org.gradle.testkit.runner.TaskOutcome
15+
16+
class AbstractTransportVersionFuncTest extends AbstractGradleFuncTest {
17+
def javaResource(String project, String path, String content) {
18+
file("${project}/src/main/resources/${path}").withWriter { writer ->
19+
writer << content
20+
}
21+
}
22+
23+
def javaSource(String project, String packageName, String className, String imports, String content) {
24+
String packageSlashes = packageName.replace('.', '/')
25+
file("${project}/src/main/java/${packageSlashes}/${className}.java").withWriter { writer ->
26+
writer << """
27+
package ${packageName};
28+
${imports}
29+
public class ${className} {
30+
${content}
31+
}
32+
"""
33+
}
34+
}
35+
36+
def namedTransportVersion(String name, String ids) {
37+
javaResource("myserver", "transport/definitions/named/" + name + ".csv", ids)
38+
}
39+
40+
def unreferencedTransportVersion(String name, String id) {
41+
javaResource("myserver", "transport/definitions/unreferenced/" + name + ".csv", id)
42+
}
43+
44+
def definedAndUsedTransportVersion(String name, String ids) {
45+
return definedAndUsedTransportVersion(name, ids, "Test${name.capitalize()}")
46+
}
47+
48+
def definedAndUsedTransportVersion(String name, String ids, String classname) {
49+
javaSource("myserver", "org.elasticsearch", classname, "", """
50+
static final TransportVersion usage = TransportVersion.fromName("${name}");
51+
""")
52+
namedTransportVersion(name, ids)
53+
}
54+
55+
def latestTransportVersion(String branch, String name, String id) {
56+
javaResource("myserver", "transport/latest/" + branch + ".csv","${name},${id}")
57+
}
58+
59+
def validateReferencesFails(String project) {
60+
return gradleRunner(":${project}:validateTransportVersionReferences").buildAndFail()
61+
}
62+
63+
def validateDefinitionsFails() {
64+
return gradleRunner(":myserver:validateTransportVersionDefinitions").buildAndFail()
65+
}
66+
67+
def assertReferencesFailure(BuildResult result, String project, String expectedOutput) {
68+
result.task(":${project}:validateTransportVersionReferences").outcome == TaskOutcome.FAILED
69+
assertOutputContains(result.output, expectedOutput)
70+
}
71+
72+
def assertDefinitionsFailure(BuildResult result, String expectedOutput) {
73+
result.task(":myserver:validateTransportVersionDefinitions").outcome == TaskOutcome.FAILED
74+
assertOutputContains(result.output, expectedOutput)
75+
}
76+
77+
def setup() {
78+
configurationCacheCompatible = false
79+
internalBuild()
80+
settingsFile << """
81+
include ':myserver'
82+
include ':myplugin'
83+
"""
84+
file("gradle.properties") << """
85+
org.elasticsearch.transport.definitionsProject=:myserver
86+
"""
87+
88+
file("myserver/build.gradle") << """
89+
apply plugin: 'java-library'
90+
apply plugin: 'elasticsearch.transport-version-references'
91+
apply plugin: 'elasticsearch.transport-version-resources'
92+
"""
93+
namedTransportVersion("existing_91", "8012000")
94+
namedTransportVersion("existing_92", "8123000,8012001")
95+
unreferencedTransportVersion("initial_9_0_0", "8000000")
96+
latestTransportVersion("9.2", "existing_92", "8123000")
97+
latestTransportVersion("9.1", "existing_92", "8012001")
98+
// a mock version of TransportVersion, just here so we can compile Dummy.java et al
99+
javaSource("myserver", "org.elasticsearch", "TransportVersion", "", """
100+
public static TransportVersion fromName(String name) {
101+
return null;
102+
}
103+
""")
104+
javaSource("myserver", "org.elasticsearch", "Dummy", "", """
105+
static final TransportVersion existing91 = TransportVersion.fromName("existing_91");
106+
static final TransportVersion existing92 = TransportVersion.fromName("existing_92");
107+
""")
108+
109+
file("myplugin/build.gradle") << """
110+
apply plugin: 'java-library'
111+
apply plugin: 'elasticsearch.transport-version-references'
112+
113+
dependencies {
114+
implementation project(":myserver")
115+
}
116+
"""
117+
118+
setupLocalGitRepo()
119+
execute("git checkout -b main")
120+
execute("git checkout -b test")
121+
}
122+
}
Lines changed: 1 addition & 116 deletions
Original file line numberDiff line numberDiff line change
@@ -10,124 +10,9 @@
1010
package org.elasticsearch.gradle.internal.transport
1111

1212

13-
import org.elasticsearch.gradle.fixtures.AbstractGradleFuncTest
14-
import org.gradle.testkit.runner.BuildResult
1513
import org.gradle.testkit.runner.TaskOutcome
1614

17-
class TransportVersionManagementPluginFuncTest extends AbstractGradleFuncTest {
18-
19-
/**
20-
*
21-
* @param project
22-
* @param path
23-
* @param content
24-
* @return
25-
*/
26-
def javaResource(String project, String path, String content) {
27-
file("${project}/src/main/resources/${path}").withWriter { writer ->
28-
writer << content
29-
}
30-
}
31-
32-
def javaSource(String project, String packageName, String className, String imports, String content) {
33-
String packageSlashes = packageName.replace('.', '/')
34-
file("${project}/src/main/java/${packageSlashes}/${className}.java").withWriter { writer ->
35-
writer << """
36-
package ${packageName};
37-
${imports}
38-
public class ${className} {
39-
${content}
40-
}
41-
"""
42-
}
43-
}
44-
45-
def namedTransportVersion(String name, String ids) {
46-
javaResource("myserver", "transport/definitions/named/" + name + ".csv", ids)
47-
}
48-
49-
def unreferencedTransportVersion(String name, String id) {
50-
javaResource("myserver", "transport/definitions/unreferenced/" + name + ".csv", id)
51-
}
52-
53-
def definedAndUsedTransportVersion(String name, String ids) {
54-
return definedAndUsedTransportVersion(name, ids, "Test${name.capitalize()}")
55-
}
56-
57-
def definedAndUsedTransportVersion(String name, String ids, String classname) {
58-
javaSource("myserver", "org.elasticsearch", classname, "", """
59-
static final TransportVersion usage = TransportVersion.fromName("${name}");
60-
""")
61-
namedTransportVersion(name, ids)
62-
}
63-
64-
def latestTransportVersion(String branch, String name, String id) {
65-
javaResource("myserver", "transport/latest/" + branch + ".csv","${name},${id}")
66-
}
67-
68-
def validateReferencesFails(String project) {
69-
return gradleRunner(":${project}:validateTransportVersionReferences").buildAndFail()
70-
}
71-
72-
def validateDefinitionsFails() {
73-
return gradleRunner(":myserver:validateTransportVersionDefinitions").buildAndFail()
74-
}
75-
76-
def assertReferencesFailure(BuildResult result, String project, String expectedOutput) {
77-
result.task(":${project}:validateTransportVersionReferences").outcome == TaskOutcome.FAILED
78-
assertOutputContains(result.output, expectedOutput)
79-
}
80-
81-
def assertDefinitionsFailure(BuildResult result, String expectedOutput) {
82-
result.task(":myserver:validateTransportVersionDefinitions").outcome == TaskOutcome.FAILED
83-
assertOutputContains(result.output, expectedOutput)
84-
}
85-
86-
def setup() {
87-
configurationCacheCompatible = false
88-
internalBuild()
89-
settingsFile << """
90-
include ':myserver'
91-
include ':myplugin'
92-
"""
93-
file("gradle.properties") << """
94-
org.elasticsearch.transport.definitionsProject=:myserver
95-
"""
96-
97-
file("myserver/build.gradle") << """
98-
apply plugin: 'java-library'
99-
apply plugin: 'elasticsearch.transport-version-references'
100-
apply plugin: 'elasticsearch.transport-version-resources'
101-
"""
102-
namedTransportVersion("existing_91", "8012000")
103-
namedTransportVersion("existing_92", "8123000,8012001")
104-
unreferencedTransportVersion("initial_9_0_0", "8000000")
105-
latestTransportVersion("9.2", "existing_92", "8123000")
106-
latestTransportVersion("9.1", "existing_92", "8012001")
107-
// a mock version of TransportVersion, just here so we can compile Dummy.java et al
108-
javaSource("myserver", "org.elasticsearch", "TransportVersion", "", """
109-
public static TransportVersion fromName(String name) {
110-
return null;
111-
}
112-
""")
113-
javaSource("myserver", "org.elasticsearch", "Dummy", "", """
114-
static final TransportVersion existing91 = TransportVersion.fromName("existing_91");
115-
static final TransportVersion existing92 = TransportVersion.fromName("existing_92");
116-
""")
117-
118-
file("myplugin/build.gradle") << """
119-
apply plugin: 'java-library'
120-
apply plugin: 'elasticsearch.transport-version-references'
121-
122-
dependencies {
123-
implementation project(":myserver")
124-
}
125-
"""
126-
127-
setupLocalGitRepo()
128-
execute("git checkout -b main")
129-
execute("git checkout -b test")
130-
}
15+
class TransportVersionValidationFuncTest extends AbstractTransportVersionFuncTest {
13116

13217
def "test setup works"() {
13318
when:

0 commit comments

Comments
 (0)