Skip to content

Commit cbc73a7

Browse files
authored
Register test artifacts for service-account security QA project (#94602)
1 parent b068ab2 commit cbc73a7

File tree

14 files changed

+61
-37
lines changed

14 files changed

+61
-37
lines changed

build-tools-internal/src/main/java/org/elasticsearch/gradle/internal/InternalTestArtifactExtension.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,7 @@ public void registerTestArtifactFromSourceSet(SourceSet sourceSet) {
3333
JavaPluginExtension javaPluginExtension = project.getExtensions().getByType(JavaPluginExtension.class);
3434
javaPluginExtension.registerFeature(name + "Artifacts", featureSpec -> {
3535
featureSpec.usingSourceSet(sourceSet);
36-
featureSpec.capability("org.elasticsearch.gradle", project.getName() + "-test-artifacts", "1.0");
36+
featureSpec.capability("org.elasticsearch.gradle", project.getName() + "-" + sourceSet.getName() + "-artifacts", "1.0");
3737
// This feature is only used internally in the
3838
// elasticsearch build so we do not need any publication.
3939
featureSpec.disablePublication();

modules/ingest-geoip/qa/full-cluster-restart/build.gradle

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@ apply plugin: 'elasticsearch.bwc-test'
1717

1818
dependencies {
1919
javaRestTestImplementation project(':test:fixtures:geoip-fixture')
20-
javaRestTestImplementation(testArtifact(project(":qa:full-cluster-restart")))
20+
javaRestTestImplementation(testArtifact(project(":qa:full-cluster-restart"), "javaRestTest"))
2121
}
2222

2323
assert Version.fromString(VersionProperties.getVersions().get("elasticsearch")).getMajor() == 8 :

modules/repository-azure/build.gradle

Lines changed: 0 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,6 @@ import org.elasticsearch.gradle.internal.test.InternalClusterTestPlugin
1212
*/
1313
apply plugin: 'elasticsearch.legacy-yaml-rest-test'
1414
apply plugin: 'elasticsearch.internal-cluster-test'
15-
apply plugin: 'elasticsearch.internal-test-artifact-base'
1615

1716
esplugin {
1817
description 'The Azure Repository plugin adds support for Azure storage repositories.'
@@ -81,15 +80,6 @@ dependencies {
8180
testImplementation project(':test:fixtures:azure-fixture')
8281
}
8382

84-
testArtifacts {
85-
registerTestArtifactFromSourceSet(sourceSets.internalClusterTest)
86-
}
87-
88-
tasks.named("internalClusterTestJar").configure {
89-
// for the plugin-security.policy resource
90-
from sourceSets.test.output
91-
}
92-
9383
restResources {
9484
restApi {
9585
include '_common', 'cluster', 'nodes', 'snapshot', 'bulk', 'count', 'indices'

modules/repository-gcs/build.gradle

Lines changed: 0 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,6 @@ import static org.elasticsearch.gradle.PropertyNormalization.IGNORE_VALUE
1818
*/
1919
apply plugin: 'elasticsearch.legacy-yaml-rest-test'
2020
apply plugin: 'elasticsearch.internal-cluster-test'
21-
apply plugin: 'elasticsearch.internal-test-artifact-base'
2221

2322
esplugin {
2423
description 'The GCS repository plugin adds Google Cloud Storage support for repositories.'
@@ -60,15 +59,6 @@ dependencies {
6059
testImplementation project(':test:fixtures:gcs-fixture')
6160
}
6261

63-
testArtifacts {
64-
registerTestArtifactFromSourceSet(sourceSets.internalClusterTest)
65-
}
66-
67-
tasks.named("internalClusterTestJar").configure {
68-
// for the plugin-security.policy resource
69-
from sourceSets.test.output
70-
}
71-
7262
restResources {
7363
restApi {
7464
include '_common', 'cluster', 'nodes', 'snapshot','indices', 'index', 'bulk', 'count'

modules/repository-s3/build.gradle

Lines changed: 0 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,6 @@ import static org.elasticsearch.gradle.PropertyNormalization.IGNORE_VALUE
1515
*/
1616
apply plugin: 'elasticsearch.legacy-yaml-rest-test'
1717
apply plugin: 'elasticsearch.internal-cluster-test'
18-
apply plugin: 'elasticsearch.internal-test-artifact-base'
1918

2019
esplugin {
2120
description 'The S3 repository plugin adds S3 repositories'
@@ -49,15 +48,6 @@ dependencies {
4948
testImplementation project(':test:fixtures:s3-fixture')
5049
}
5150

52-
testArtifacts {
53-
registerTestArtifactFromSourceSet(sourceSets.internalClusterTest)
54-
}
55-
56-
tasks.named("internalClusterTestJar").configure {
57-
// for the plugin-security.policy resource
58-
from sourceSets.test.output
59-
}
60-
6151
restResources {
6252
restApi {
6353
include '_common', 'cluster', 'nodes', 'snapshot','indices', 'index', 'bulk', 'count'

test/test-clusters/build.gradle

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,9 @@ dependencies {
77
shadow "junit:junit:${versions.junit}"
88
shadow "org.apache.logging.log4j:log4j-api:${versions.log4j}"
99

10+
implementation "com.fasterxml.jackson.core:jackson-core:${versions.jackson}"
11+
implementation "com.fasterxml.jackson.core:jackson-annotations:${versions.jackson}"
12+
implementation "com.fasterxml.jackson.core:jackson-databind:${versions.jackson}"
1013
implementation "org.elasticsearch.gradle:reaper"
1114
}
1215

test/test-clusters/src/main/java/org/elasticsearch/test/cluster/local/AbstractLocalSpecBuilder.java

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -38,6 +38,7 @@ public abstract class AbstractLocalSpecBuilder<T extends LocalSpecBuilder<?>> im
3838
private final Map<String, Resource> keystoreFiles = new HashMap<>();
3939
private final Map<String, Resource> extraConfigFiles = new HashMap<>();
4040
private final Map<String, String> systemProperties = new HashMap<>();
41+
private final Map<String, String> secrets = new HashMap<>();
4142
private DistributionType distributionType;
4243
private Version version;
4344
private String keystorePassword;
@@ -169,6 +170,16 @@ public List<SettingsProvider> getKeystoreProviders() {
169170
return inherit(() -> parent.getKeystoreProviders(), keystoreProviders);
170171
}
171172

173+
@Override
174+
public T secret(String key, String value) {
175+
this.secrets.put(key, value);
176+
return cast(this);
177+
}
178+
179+
public Map<String, String> getSecrets() {
180+
return inherit(() -> parent.getSecrets(), secrets);
181+
}
182+
172183
@Override
173184
public T configFile(String fileName, Resource configFile) {
174185
this.extraConfigFiles.put(fileName, configFile);

test/test-clusters/src/main/java/org/elasticsearch/test/cluster/local/DefaultLocalClusterSpecBuilder.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -181,7 +181,8 @@ private LocalNodeSpec build(LocalClusterSpec cluster) {
181181
getKeystoreFiles(),
182182
getKeystorePassword(),
183183
getExtraConfigFiles(),
184-
getSystemProperties()
184+
getSystemProperties(),
185+
getSecrets()
185186
);
186187
}
187188
}

test/test-clusters/src/main/java/org/elasticsearch/test/cluster/local/LocalClusterFactory.java

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,8 @@
88

99
package org.elasticsearch.test.cluster.local;
1010

11+
import com.fasterxml.jackson.databind.ObjectMapper;
12+
1113
import org.apache.logging.log4j.LogManager;
1214
import org.apache.logging.log4j.Logger;
1315
import org.elasticsearch.test.cluster.ClusterFactory;
@@ -66,10 +68,12 @@ public class LocalClusterFactory implements ClusterFactory<LocalClusterSpec, Loc
6668
private static final String ENABLE_DEBUG_JVM_ARGS = "-agentlib:jdwp=transport=dt_socket,server=n,suspend=y,address=";
6769
private static final int DEFAULT_DEBUG_PORT = 5007;
6870

71+
private final ObjectMapper objectMapper;
6972
private final DistributionResolver distributionResolver;
7073
private Path baseWorkingDir;
7174

7275
public LocalClusterFactory(DistributionResolver distributionResolver) {
76+
this.objectMapper = new ObjectMapper();
7377
this.distributionResolver = distributionResolver;
7478
}
7579

@@ -136,6 +140,7 @@ public synchronized void start(Version version) {
136140
createKeystore();
137141
addKeystoreSettings();
138142
addKeystoreFiles();
143+
writeSecureSecretsFile();
139144
configureSecurity();
140145

141146
startElasticsearch();
@@ -407,6 +412,21 @@ private void addKeystoreFiles() {
407412
});
408413
}
409414

415+
private void writeSecureSecretsFile() {
416+
if (spec.getSecrets().isEmpty() == false) {
417+
try {
418+
Path secretsFile = configDir.resolve("secrets/secrets.json");
419+
Files.createDirectories(secretsFile.getParent());
420+
Map<String, Object> secretsFileContent = new HashMap<>();
421+
secretsFileContent.put("secrets", spec.getSecrets());
422+
secretsFileContent.put("metadata", Map.of("version", "1", "compatibility", spec.getVersion().toString()));
423+
Files.writeString(secretsFile, objectMapper.writeValueAsString(secretsFileContent));
424+
} catch (IOException e) {
425+
throw new UncheckedIOException(e);
426+
}
427+
}
428+
}
429+
410430
private void configureSecurity() {
411431
if (spec.isSecurityEnabled()) {
412432
if (spec.getUsers().isEmpty() == false) {

test/test-clusters/src/main/java/org/elasticsearch/test/cluster/local/LocalClusterSpec.java

Lines changed: 10 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -83,6 +83,7 @@ public static class LocalNodeSpec {
8383
private final String keystorePassword;
8484
private final Map<String, Resource> extraConfigFiles;
8585
private final Map<String, String> systemProperties;
86+
private final Map<String, String> secrets;
8687
private Version version;
8788

8889
public LocalNodeSpec(
@@ -102,7 +103,8 @@ public LocalNodeSpec(
102103
Map<String, Resource> keystoreFiles,
103104
String keystorePassword,
104105
Map<String, Resource> extraConfigFiles,
105-
Map<String, String> systemProperties
106+
Map<String, String> systemProperties,
107+
Map<String, String> secrets
106108
) {
107109
this.cluster = cluster;
108110
this.name = name;
@@ -121,6 +123,7 @@ public LocalNodeSpec(
121123
this.keystorePassword = keystorePassword;
122124
this.extraConfigFiles = extraConfigFiles;
123125
this.systemProperties = systemProperties;
126+
this.secrets = secrets;
124127
}
125128

126129
void setVersion(Version version) {
@@ -179,6 +182,10 @@ public Map<String, String> getSystemProperties() {
179182
return systemProperties;
180183
}
181184

185+
public Map<String, String> getSecrets() {
186+
return secrets;
187+
}
188+
182189
public boolean isSecurityEnabled() {
183190
return Boolean.parseBoolean(getSetting("xpack.security.enabled", getVersion().onOrAfter("8.0.0") ? "true" : "false"));
184191
}
@@ -287,7 +294,8 @@ private LocalNodeSpec getFilteredSpec(SettingsProvider filteredProvider, Setting
287294
n.keystoreFiles,
288295
n.keystorePassword,
289296
n.extraConfigFiles,
290-
n.systemProperties
297+
n.systemProperties,
298+
n.secrets
291299
)
292300
)
293301
.toList();

0 commit comments

Comments
 (0)