File-based discovery plugin integration tests (#20492)
Adds an integration test for the file-based discovery plugin to test the plugin operates correctly and uses the hosts configured in `unicast_hosts.txt` with a real cluster Closes #20459
This commit is contained in:
parent
86c3bdb8a5
commit
5031824291
|
@ -147,7 +147,6 @@ class ClusterFormationTasks {
|
||||||
setup = configureStopTask(taskName(task, node, 'stopPrevious'), project, setup, node)
|
setup = configureStopTask(taskName(task, node, 'stopPrevious'), project, setup, node)
|
||||||
setup = configureExtractTask(taskName(task, node, 'extract'), project, setup, node, configuration)
|
setup = configureExtractTask(taskName(task, node, 'extract'), project, setup, node, configuration)
|
||||||
setup = configureWriteConfigTask(taskName(task, node, 'configure'), project, setup, node, seedNode)
|
setup = configureWriteConfigTask(taskName(task, node, 'configure'), project, setup, node, seedNode)
|
||||||
setup = configureExtraConfigFilesTask(taskName(task, node, 'extraConfig'), project, setup, node)
|
|
||||||
setup = configureCopyPluginsTask(taskName(task, node, 'copyPlugins'), project, setup, node)
|
setup = configureCopyPluginsTask(taskName(task, node, 'copyPlugins'), project, setup, node)
|
||||||
|
|
||||||
// install modules
|
// install modules
|
||||||
|
@ -162,6 +161,10 @@ class ClusterFormationTasks {
|
||||||
setup = configureInstallPluginTask(taskName(task, node, actionName), project, setup, node, plugin.getValue())
|
setup = configureInstallPluginTask(taskName(task, node, actionName), project, setup, node, plugin.getValue())
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// sets up any extra config files that need to be copied over to the ES instance;
|
||||||
|
// its run after plugins have been installed, as the extra config files may belong to plugins
|
||||||
|
setup = configureExtraConfigFilesTask(taskName(task, node, 'extraConfig'), project, setup, node)
|
||||||
|
|
||||||
// extra setup commands
|
// extra setup commands
|
||||||
for (Map.Entry<String, Object[]> command : node.config.setupCommands.entrySet()) {
|
for (Map.Entry<String, Object[]> command : node.config.setupCommands.entrySet()) {
|
||||||
// the first argument is the actual script name, relative to home
|
// the first argument is the actual script name, relative to home
|
||||||
|
|
|
@ -17,6 +17,10 @@
|
||||||
* under the License.
|
* under the License.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
import org.elasticsearch.gradle.test.ClusterConfiguration
|
||||||
|
import org.elasticsearch.gradle.test.ClusterFormationTasks
|
||||||
|
import org.elasticsearch.gradle.test.NodeInfo
|
||||||
|
|
||||||
esplugin {
|
esplugin {
|
||||||
description 'Discovery file plugin enables unicast discovery from hosts stored in a file.'
|
description 'Discovery file plugin enables unicast discovery from hosts stored in a file.'
|
||||||
classname 'org.elasticsearch.discovery.file.FileBasedDiscoveryPlugin'
|
classname 'org.elasticsearch.discovery.file.FileBasedDiscoveryPlugin'
|
||||||
|
@ -27,3 +31,29 @@ bundlePlugin {
|
||||||
into 'config'
|
into 'config'
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
task setupSeedNodeAndUnicastHostsFile(type: DefaultTask) {
|
||||||
|
mustRunAfter(precommit)
|
||||||
|
}
|
||||||
|
// setup the initial cluster with one node that will serve as the seed node
|
||||||
|
// for unicast discovery
|
||||||
|
ClusterConfiguration config = new ClusterConfiguration(project)
|
||||||
|
config.clusterName = 'discovery-file-test-cluster'
|
||||||
|
List<NodeInfo> nodes = ClusterFormationTasks.setup(project, setupSeedNodeAndUnicastHostsFile, config)
|
||||||
|
File srcUnicastHostsFile = file('build/cluster/unicast_hosts.txt')
|
||||||
|
|
||||||
|
// write the unicast_hosts.txt file to a temporary location to be used by the second cluster
|
||||||
|
setupSeedNodeAndUnicastHostsFile.doLast {
|
||||||
|
// write the unicast_hosts.txt file to a temp file in the build directory
|
||||||
|
srcUnicastHostsFile.setText(nodes.get(0).transportUri(), 'UTF-8')
|
||||||
|
}
|
||||||
|
|
||||||
|
// second cluster, which will connect to the first via the unicast_hosts.txt file
|
||||||
|
integTest {
|
||||||
|
dependsOn(setupSeedNodeAndUnicastHostsFile)
|
||||||
|
cluster {
|
||||||
|
clusterName = 'discovery-file-test-cluster'
|
||||||
|
extraConfigFile 'discovery-file/unicast_hosts.txt', srcUnicastHostsFile
|
||||||
|
}
|
||||||
|
finalizedBy ':plugins:discovery-file:setupSeedNodeAndUnicastHostsFile#stop'
|
||||||
|
}
|
||||||
|
|
|
@ -1,13 +1,13 @@
|
||||||
# Integration tests for file-based discovery
|
# Integration tests for file-based discovery
|
||||||
#
|
#
|
||||||
"Discovery File loaded":
|
"Ensure cluster formed successfully with discovery file":
|
||||||
|
# make sure both nodes joined the cluster
|
||||||
|
- do:
|
||||||
|
cluster.health:
|
||||||
|
wait_for_nodes: 2
|
||||||
|
|
||||||
|
# make sure the cluster was formed with the correct name
|
||||||
- do:
|
- do:
|
||||||
cluster.state: {}
|
cluster.state: {}
|
||||||
|
|
||||||
# Get master node id
|
- match: { cluster_name: 'discovery-file-test-cluster' } # correct cluster name, we formed the cluster we expected to
|
||||||
- set: { master_node: master }
|
|
||||||
|
|
||||||
- do:
|
|
||||||
nodes.info: {}
|
|
||||||
|
|
||||||
- match: { nodes.$master.plugins.0.name: discovery-file }
|
|
||||||
|
|
Loading…
Reference in New Issue