Skip to content

Commit d593648

Browse files
Tim-Brooksrjernst
authored andcommitted
Setup keystore during integration tests (#22966)
This commit creates a keystore and adds settings to it during the cluster formation for integration tests. Users can define a `keyStoreSetting` in build files for settings that need to be placed in the keystore.
1 parent 74f0145 commit d593648

File tree

2 files changed

+39
-0
lines changed

2 files changed

+39
-0
lines changed

buildSrc/src/main/groovy/org/elasticsearch/gradle/test/ClusterConfiguration.groovy

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -125,6 +125,8 @@ class ClusterConfiguration {
125125

126126
Map<String, Object> settings = new HashMap<>()
127127

128+
Map<String, String> keystoreSettings = new HashMap<>()
129+
128130
// map from destination path, to source file
129131
Map<String, Object> extraConfigFiles = new HashMap<>()
130132

@@ -144,6 +146,11 @@ class ClusterConfiguration {
144146
settings.put(name, value)
145147
}
146148

149+
@Input
150+
void keystoreSetting(String name, String value) {
151+
keystoreSettings.put(name, value)
152+
}
153+
147154
@Input
148155
void plugin(String path) {
149156
Project pluginProject = project.project(path)

buildSrc/src/main/groovy/org/elasticsearch/gradle/test/ClusterFormationTasks.groovy

Lines changed: 32 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -38,6 +38,7 @@ import org.gradle.api.tasks.Copy
3838
import org.gradle.api.tasks.Delete
3939
import org.gradle.api.tasks.Exec
4040

41+
import java.nio.charset.StandardCharsets
4142
import java.nio.file.Paths
4243
import java.util.concurrent.TimeUnit
4344

@@ -157,10 +158,14 @@ class ClusterFormationTasks {
157158
node.cwd.mkdirs()
158159
}
159160
}
161+
160162
setup = configureCheckPreviousTask(taskName(prefix, node, 'checkPrevious'), project, setup, node)
161163
setup = configureStopTask(taskName(prefix, node, 'stopPrevious'), project, setup, node)
162164
setup = configureExtractTask(taskName(prefix, node, 'extract'), project, setup, node, configuration)
163165
setup = configureWriteConfigTask(taskName(prefix, node, 'configure'), project, setup, node, seedNode)
166+
setup = configureCreateKeystoreTask(taskName(prefix, node, 'createKeystore'), project, setup, node)
167+
setup = configureAddKeystoreSettingTasks(prefix, project, setup, node)
168+
164169
if (node.config.plugins.isEmpty() == false) {
165170
if (node.nodeVersion == VersionProperties.elasticsearch) {
166171
setup = configureCopyPluginsTask(taskName(prefix, node, 'copyPlugins'), project, setup, node)
@@ -303,6 +308,33 @@ class ClusterFormationTasks {
303308
}
304309
}
305310

311+
/** Adds a task to create keystore */
312+
static Task configureCreateKeystoreTask(String name, Project project, Task setup, NodeInfo node) {
313+
if (node.config.keystoreSettings.isEmpty()) {
314+
return setup
315+
} else {
316+
File esKeystoreUtil = Paths.get(node.homeDir.toString(), "bin/" + "elasticsearch-keystore").toFile()
317+
return configureExecTask(name, project, setup, node, esKeystoreUtil, 'create')
318+
}
319+
}
320+
321+
/** Adds tasks to add settings to the keystore */
322+
static Task configureAddKeystoreSettingTasks(String parent, Project project, Task setup, NodeInfo node) {
323+
Map kvs = node.config.keystoreSettings
324+
File esKeystoreUtil = Paths.get(node.homeDir.toString(), "bin/" + "elasticsearch-keystore").toFile()
325+
Task parentTask = setup
326+
for (Map.Entry<String, String> entry in kvs) {
327+
String key = entry.getKey()
328+
String name = taskName(parent, node, 'addToKeystore#' + key)
329+
Task t = configureExecTask(name, project, parentTask, node, esKeystoreUtil, 'add', key, '-x')
330+
t.doFirst {
331+
standardInput = new ByteArrayInputStream(entry.getValue().getBytes(StandardCharsets.UTF_8))
332+
}
333+
parentTask = t
334+
}
335+
return parentTask
336+
}
337+
306338
static Task configureExtraConfigFilesTask(String name, Project project, Task setup, NodeInfo node) {
307339
if (node.config.extraConfigFiles.isEmpty()) {
308340
return setup

0 commit comments

Comments
 (0)