mirror of
https://github.com/honeymoose/OpenSearch.git
synced 2025-02-07 05:28:34 +00:00
50584c4103
This PR introduces backward compatibility index tests to test the rolling upgrade process amongst Elasticsearch instances within the same major version. The test executes in three phases. In the first phase, we form a cluster of 2 ES instances on an old version. In the second phase, we keep one of the nodes from the old cluster, kill the other node, but preserve its data directory and start an instance of the current version of ES using the same data directory as the killed instance. In the third phase, we kill the other old version ES instance from the first phase and launch a new instance, using the same data directory as the killed instance. Therefore, during phase 3, we have fully migrated and have all current versions of ES running. In each phase, we run REST tests that index documents and search them, ensuring at each stage that the documents from the previous phase are still there. Note that because we haven't released a GA yet of 5.0, the tests currently don't start an old version cluster in the first phase. Once GA is released, this will be changed to make the backward compatibility version 5.0, while the current version in the cluster will be 5.x.
114 lines
3.4 KiB
Groovy
114 lines
3.4 KiB
Groovy
rootProject.name = 'elasticsearch'
|
|
|
|
List projects = [
|
|
'build-tools',
|
|
'rest-api-spec',
|
|
'core',
|
|
'docs',
|
|
'client:rest',
|
|
'client:sniffer',
|
|
'client:transport',
|
|
'client:test',
|
|
'client:client-benchmark-noop-api-plugin',
|
|
'client:benchmark',
|
|
'benchmarks',
|
|
'distribution:integ-test-zip',
|
|
'distribution:zip',
|
|
'distribution:tar',
|
|
'distribution:deb',
|
|
'distribution:rpm',
|
|
'test:framework',
|
|
'test:fixtures:example-fixture',
|
|
'test:fixtures:hdfs-fixture',
|
|
'test:logger-usage',
|
|
'modules:aggs-matrix-stats',
|
|
'modules:ingest-common',
|
|
'modules:lang-expression',
|
|
'modules:lang-groovy',
|
|
'modules:lang-mustache',
|
|
'modules:lang-painless',
|
|
'modules:transport-netty3',
|
|
'modules:transport-netty4',
|
|
'modules:reindex',
|
|
'modules:percolator',
|
|
'plugins:analysis-icu',
|
|
'plugins:analysis-kuromoji',
|
|
'plugins:analysis-phonetic',
|
|
'plugins:analysis-smartcn',
|
|
'plugins:analysis-stempel',
|
|
'plugins:discovery-azure-classic',
|
|
'plugins:discovery-ec2',
|
|
'plugins:discovery-file',
|
|
'plugins:discovery-gce',
|
|
'plugins:ingest-geoip',
|
|
'plugins:ingest-attachment',
|
|
'plugins:ingest-user-agent',
|
|
'plugins:lang-javascript',
|
|
'plugins:lang-python',
|
|
'plugins:mapper-murmur3',
|
|
'plugins:mapper-size',
|
|
'plugins:repository-azure',
|
|
'plugins:repository-gcs',
|
|
'plugins:repository-hdfs',
|
|
'plugins:repository-s3',
|
|
'plugins:jvm-example',
|
|
'plugins:store-smb',
|
|
'qa:backwards-5.0',
|
|
'qa:evil-tests',
|
|
'qa:rolling-upgrade',
|
|
'qa:smoke-test-client',
|
|
'qa:smoke-test-ingest-with-all-dependencies',
|
|
'qa:smoke-test-ingest-disabled',
|
|
'qa:smoke-test-multinode',
|
|
'qa:smoke-test-plugins',
|
|
'qa:smoke-test-reindex-with-painless',
|
|
'qa:smoke-test-http',
|
|
'qa:vagrant',
|
|
]
|
|
|
|
boolean isEclipse = System.getProperty("eclipse.launcher") != null || gradle.startParameter.taskNames.contains('eclipse') || gradle.startParameter.taskNames.contains('cleanEclipse')
|
|
if (isEclipse) {
|
|
// eclipse cannot handle an intermediate dependency between main and test, so we must create separate projects
|
|
// for core-src and core-tests
|
|
projects << 'core-tests'
|
|
}
|
|
|
|
include projects.toArray(new String[0])
|
|
|
|
project(':build-tools').projectDir = new File(rootProject.projectDir, 'buildSrc')
|
|
|
|
if (isEclipse) {
|
|
project(":core").projectDir = new File(rootProject.projectDir, 'core/src/main')
|
|
project(":core").buildFileName = 'eclipse-build.gradle'
|
|
project(":core-tests").projectDir = new File(rootProject.projectDir, 'core/src/test')
|
|
project(":core-tests").buildFileName = 'eclipse-build.gradle'
|
|
}
|
|
|
|
/**
|
|
* Iterates over sub directories, looking for build.gradle, and adds a project if found
|
|
* for that dir with the given path prefix. Note that this requires each level
|
|
* of the dir hiearchy to have a build.gradle. Otherwise we would have to iterate
|
|
* all files/directories in the source tree to find all projects.
|
|
*/
|
|
void addSubProjects(String path, File dir) {
|
|
if (dir.isDirectory() == false) return;
|
|
if (dir.name == 'buildSrc') return;
|
|
if (new File(dir, 'build.gradle').exists() == false) return;
|
|
|
|
String projectName = "${path}:${dir.name}"
|
|
include projectName
|
|
for (File subdir : dir.listFiles()) {
|
|
addSubProjects(projectName, subdir)
|
|
}
|
|
}
|
|
|
|
// look for extra plugins for elasticsearch
|
|
File xplugins = new File(rootProject.projectDir.parentFile, 'x-plugins')
|
|
if (xplugins.exists()) {
|
|
include ':x-plugins'
|
|
project(':x-plugins').projectDir = xplugins
|
|
for (File extraPluginDir : xplugins.listFiles()) {
|
|
addSubProjects(':x-plugins', extraPluginDir)
|
|
}
|
|
}
|