Merge pull request #14992 from rjernst/override_integ_test_config

Add ability to specify extra configuration files for integ test
This commit is contained in:
Ryan Ernst 2015-11-24 15:23:40 -08:00
commit b30db5d676
2 changed files with 24 additions and 1 deletions

View File

@ -18,6 +18,7 @@
*/
package org.elasticsearch.gradle.test
import org.gradle.api.GradleException
import org.gradle.api.Project
import org.gradle.api.file.FileCollection
import org.gradle.api.tasks.Input
@ -65,6 +66,9 @@ class ClusterConfiguration {
Map<String, String> settings = new HashMap<>()
// map from destination path, to source file
Map<String, Object> extraConfigFiles = new HashMap<>()
LinkedHashMap<String, Object> plugins = new LinkedHashMap<>()
LinkedHashMap<String, Object[]> setupCommands = new LinkedHashMap<>()
@ -93,4 +97,16 @@ class ClusterConfiguration {
void setupCommand(String name, Object... args) {
setupCommands.put(name, args)
}
/**
* Add an extra configuration file. The path is relative to the config dir, and the sourceFile
* is anything accepted by project.file()
*/
@Input
void extraConfigFile(String path, Object sourceFile) {
if (path == 'elasticsearch.yml') {
throw new GradleException('Overwriting elasticsearch.yml is not allowed, add additional settings using cluster { setting "foo", "bar" }')
}
extraConfigFiles.put(path, sourceFile)
}
}

View File

@ -167,7 +167,14 @@ class ClusterFormationTasks {
'repositories.url.allowed_urls' : 'http://snapshot.test*'
]
return project.tasks.create(name: name, type: DefaultTask, dependsOn: setup) << {
Copy copyConfig = project.tasks.create(name: name, type: Copy, dependsOn: setup)
copyConfig.into(new File(node.homeDir, 'config')) // copy must always have a general dest dir, even though we don't use it
for (Map.Entry<String,Object> extraConfigFile : node.config.extraConfigFiles.entrySet()) {
copyConfig.from(extraConfigFile.getValue())
.into(new File(node.homeDir, 'config/' + extraConfigFile.getKey()))
}
copyConfig.doLast {
// write elasticsearch.yml last, it cannot be overriden
File configFile = new File(node.homeDir, 'config/elasticsearch.yml')
logger.info("Configuring ${configFile}")
configFile.setText(esConfig.collect { key, value -> "${key}: ${value}" }.join('\n'), 'UTF-8')