mirror of
https://github.com/honeymoose/OpenSearch.git
synced 2025-02-21 20:35:54 +00:00
[test] add java packaging test project (#30161)
[test] add java packaging test project Adds a project for building and running packaging tests written in java for portability. The vagrant tasks use jars on the packagingTest configuration, which are built in the same project. No tests are added yet. Corresponding changes are not made to :x-pack:qa:vagrant because the java packaging tests will all be consolidated into one project. For #26741
This commit is contained in:
parent
e11070bcfa
commit
65e5868a55
2
Vagrantfile
vendored
2
Vagrantfile
vendored
@ -337,6 +337,7 @@ export BATS=/project/build/bats
|
||||
export BATS_UTILS=/project/build/packaging/bats/utils
|
||||
export BATS_TESTS=/project/build/packaging/bats/tests
|
||||
export PACKAGING_ARCHIVES=/project/build/packaging/archives
|
||||
export PACKAGING_TESTS=/project/build/packaging/tests
|
||||
VARS
|
||||
cat \<\<SUDOERS_VARS > /etc/sudoers.d/elasticsearch_vars
|
||||
Defaults env_keep += "ZIP"
|
||||
@ -347,6 +348,7 @@ Defaults env_keep += "BATS"
|
||||
Defaults env_keep += "BATS_UTILS"
|
||||
Defaults env_keep += "BATS_TESTS"
|
||||
Defaults env_keep += "PACKAGING_ARCHIVES"
|
||||
Defaults env_keep += "PACKAGING_TESTS"
|
||||
SUDOERS_VARS
|
||||
chmod 0440 /etc/sudoers.d/elasticsearch_vars
|
||||
SHELL
|
||||
|
@ -41,6 +41,9 @@ class VagrantPropertiesExtension {
|
||||
@Input
|
||||
Boolean inheritTestUtils
|
||||
|
||||
@Input
|
||||
String testClass
|
||||
|
||||
VagrantPropertiesExtension(List<String> availableBoxes) {
|
||||
this.boxes = availableBoxes
|
||||
this.batsDir = 'src/test/resources/packaging'
|
||||
|
@ -51,6 +51,7 @@ class VagrantTestPlugin implements Plugin<Project> {
|
||||
static List<String> UPGRADE_FROM_ARCHIVES = ['rpm', 'deb']
|
||||
|
||||
private static final PACKAGING_CONFIGURATION = 'packaging'
|
||||
private static final PACKAGING_TEST_CONFIGURATION = 'packagingTest'
|
||||
private static final BATS = 'bats'
|
||||
private static final String BATS_TEST_COMMAND ="cd \$PACKAGING_ARCHIVES && sudo bats --tap \$BATS_TESTS/*.$BATS"
|
||||
private static final String PLATFORM_TEST_COMMAND ="rm -rf ~/elasticsearch && rsync -r /elasticsearch/ ~/elasticsearch && cd ~/elasticsearch && ./gradlew test integTest"
|
||||
@ -66,6 +67,7 @@ class VagrantTestPlugin implements Plugin<Project> {
|
||||
|
||||
// Creates custom configurations for Bats testing files (and associated scripts and archives)
|
||||
createPackagingConfiguration(project)
|
||||
project.configurations.create(PACKAGING_TEST_CONFIGURATION)
|
||||
|
||||
// Creates all the main Vagrant tasks
|
||||
createVagrantTasks(project)
|
||||
@ -144,10 +146,12 @@ class VagrantTestPlugin implements Plugin<Project> {
|
||||
}
|
||||
|
||||
private static void createCleanTask(Project project) {
|
||||
project.tasks.create('clean', Delete.class) {
|
||||
description 'Clean the project build directory'
|
||||
group 'Build'
|
||||
delete project.buildDir
|
||||
if (project.tasks.findByName('clean') == null) {
|
||||
project.tasks.create('clean', Delete.class) {
|
||||
description 'Clean the project build directory'
|
||||
group 'Build'
|
||||
delete project.buildDir
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@ -174,6 +178,18 @@ class VagrantTestPlugin implements Plugin<Project> {
|
||||
from project.configurations[PACKAGING_CONFIGURATION]
|
||||
}
|
||||
|
||||
File testsDir = new File(packagingDir, 'tests')
|
||||
Copy copyPackagingTests = project.tasks.create('copyPackagingTests', Copy) {
|
||||
into testsDir
|
||||
from project.configurations[PACKAGING_TEST_CONFIGURATION]
|
||||
}
|
||||
|
||||
Task createTestRunnerScript = project.tasks.create('createTestRunnerScript', FileContentsTask) {
|
||||
dependsOn copyPackagingTests
|
||||
file "${testsDir}/run-tests.sh"
|
||||
contents "java -cp \"\$PACKAGING_TESTS/*\" org.junit.runner.JUnitCore ${-> project.extensions.esvagrant.testClass}"
|
||||
}
|
||||
|
||||
Task createVersionFile = project.tasks.create('createVersionFile', FileContentsTask) {
|
||||
dependsOn copyPackagingArchives
|
||||
file "${archivesDir}/version"
|
||||
@ -234,7 +250,8 @@ class VagrantTestPlugin implements Plugin<Project> {
|
||||
|
||||
Task vagrantSetUpTask = project.tasks.create('setupPackagingTest')
|
||||
vagrantSetUpTask.dependsOn 'vagrantCheckVersion'
|
||||
vagrantSetUpTask.dependsOn copyPackagingArchives, createVersionFile, createUpgradeFromFile, createUpgradeIsOssFile
|
||||
vagrantSetUpTask.dependsOn copyPackagingArchives, copyPackagingTests, createTestRunnerScript
|
||||
vagrantSetUpTask.dependsOn createVersionFile, createUpgradeFromFile, createUpgradeIsOssFile
|
||||
vagrantSetUpTask.dependsOn copyBatsTests, copyBatsUtils
|
||||
}
|
||||
|
||||
@ -393,20 +410,29 @@ class VagrantTestPlugin implements Plugin<Project> {
|
||||
packagingTest.dependsOn(batsPackagingTest)
|
||||
}
|
||||
|
||||
// This task doesn't do anything yet. In the future it will execute a jar containing tests on the vm
|
||||
Task groovyPackagingTest = project.tasks.create("vagrant${boxTask}#groovyPackagingTest")
|
||||
groovyPackagingTest.dependsOn(up)
|
||||
groovyPackagingTest.finalizedBy(halt)
|
||||
|
||||
TaskExecutionAdapter groovyPackagingReproListener = createReproListener(project, groovyPackagingTest.path)
|
||||
groovyPackagingTest.doFirst {
|
||||
project.gradle.addListener(groovyPackagingReproListener)
|
||||
Task javaPackagingTest = project.tasks.create("vagrant${boxTask}#javaPackagingTest", VagrantCommandTask) {
|
||||
command 'ssh'
|
||||
boxName box
|
||||
environmentVars vagrantEnvVars
|
||||
dependsOn up, setupPackagingTest
|
||||
finalizedBy halt
|
||||
args '--command', "bash \"\$PACKAGING_TESTS/run-tests.sh\""
|
||||
}
|
||||
groovyPackagingTest.doLast {
|
||||
project.gradle.removeListener(groovyPackagingReproListener)
|
||||
|
||||
// todo remove this onlyIf after all packaging tests are consolidated
|
||||
javaPackagingTest.onlyIf {
|
||||
project.extensions.esvagrant.testClass != null
|
||||
}
|
||||
|
||||
TaskExecutionAdapter javaPackagingReproListener = createReproListener(project, javaPackagingTest.path)
|
||||
javaPackagingTest.doFirst {
|
||||
project.gradle.addListener(javaPackagingReproListener)
|
||||
}
|
||||
javaPackagingTest.doLast {
|
||||
project.gradle.removeListener(javaPackagingReproListener)
|
||||
}
|
||||
if (project.extensions.esvagrant.boxes.contains(box)) {
|
||||
packagingTest.dependsOn(groovyPackagingTest)
|
||||
packagingTest.dependsOn(javaPackagingTest)
|
||||
}
|
||||
|
||||
Task platform = project.tasks.create("vagrant${boxTask}#platformTest", VagrantCommandTask) {
|
||||
|
@ -1,3 +1,5 @@
|
||||
import org.elasticsearch.gradle.precommit.PrecommitTasks
|
||||
|
||||
/*
|
||||
* Licensed to Elasticsearch under one or more contributor
|
||||
* license agreements. See the NOTICE file distributed with
|
||||
@ -17,8 +19,23 @@
|
||||
* under the License.
|
||||
*/
|
||||
|
||||
apply plugin: 'elasticsearch.vagrantsupport'
|
||||
apply plugin: 'elasticsearch.vagrant'
|
||||
plugins {
|
||||
id 'java'
|
||||
id 'elasticsearch.build'
|
||||
id 'elasticsearch.vagrantsupport'
|
||||
id 'elasticsearch.vagrant'
|
||||
}
|
||||
|
||||
dependencies {
|
||||
compile "junit:junit:${versions.junit}"
|
||||
compile "org.hamcrest:hamcrest-core:${versions.hamcrest}"
|
||||
|
||||
// needs to be on the classpath for JarHell
|
||||
testRuntime project(':libs:elasticsearch-core')
|
||||
|
||||
// pulls in the jar built by this project and its dependencies
|
||||
packagingTest project(path: project.path, configuration: 'runtime')
|
||||
}
|
||||
|
||||
List<String> plugins = []
|
||||
for (Project subproj : project.rootProject.subprojects) {
|
||||
@ -39,3 +56,20 @@ setupPackagingTest {
|
||||
expectedPlugins.setText(plugins.join('\n'), 'UTF-8')
|
||||
}
|
||||
}
|
||||
|
||||
esvagrant {
|
||||
testClass 'org.elasticsearch.packaging.PackagingTests'
|
||||
}
|
||||
|
||||
forbiddenApisMain {
|
||||
signaturesURLs = [
|
||||
PrecommitTasks.getResource('/forbidden/jdk-signatures.txt')
|
||||
]
|
||||
}
|
||||
|
||||
// we don't have additional tests for the tests themselves
|
||||
tasks.test.enabled = false
|
||||
|
||||
// this project doesn't get published
|
||||
tasks.dependencyLicenses.enabled = false
|
||||
tasks.dependenciesInfo.enabled = false
|
||||
|
@ -0,0 +1,31 @@
|
||||
/*
|
||||
* Licensed to Elasticsearch under one or more contributor
|
||||
* license agreements. See the NOTICE file distributed with
|
||||
* this work for additional information regarding copyright
|
||||
* ownership. Elasticsearch licenses this file to you under
|
||||
* the Apache License, Version 2.0 (the "License"); you may
|
||||
* not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing,
|
||||
* software distributed under the License is distributed on an
|
||||
* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
|
||||
* KIND, either express or implied. See the License for the
|
||||
* specific language governing permissions and limitations
|
||||
* under the License.
|
||||
*/
|
||||
|
||||
package org.elasticsearch.packaging;
|
||||
|
||||
import org.junit.Test;
|
||||
|
||||
/**
|
||||
* This class doesn't have any tests yet
|
||||
*/
|
||||
public class PackagingTests {
|
||||
|
||||
@Test
|
||||
public void testDummy() {}
|
||||
}
|
Loading…
x
Reference in New Issue
Block a user