Skip to content

Commit 17fbfc5

Browse files
committed
Merge branch 'master' into bad-rest-requests
* master: Do not optimize append-only if seen normal op with higher seqno (elastic#28787) [test] packaging: gradle tasks for groovy tests (elastic#29046) Prune only gc deletes below local checkpoint (elastic#28790)
2 parents 696c00b + 0ac89a3 commit 17fbfc5

File tree

12 files changed

+456
-138
lines changed

12 files changed

+456
-138
lines changed

TESTING.asciidoc

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -414,16 +414,16 @@ and in another window:
414414

415415
----------------------------------------------------
416416
vagrant up centos-7 --provider virtualbox && vagrant ssh centos-7
417-
cd $BATS_ARCHIVES
417+
cd $PACKAGING_ARCHIVES
418418
sudo -E bats $BATS_TESTS/*rpm*.bats
419419
----------------------------------------------------
420420

421421
If you wanted to retest all the release artifacts on a single VM you could:
422422

423423
-------------------------------------------------
424-
./gradlew setupBats
424+
./gradlew setupPackagingTest
425425
cd qa/vagrant; vagrant up ubuntu-1404 --provider virtualbox && vagrant ssh ubuntu-1404
426-
cd $BATS_ARCHIVES
426+
cd $PACKAGING_ARCHIVES
427427
sudo -E bats $BATS_TESTS/*.bats
428428
-------------------------------------------------
429429

Vagrantfile

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -334,9 +334,9 @@ export TAR=/elasticsearch/distribution/tar/build/distributions
334334
export RPM=/elasticsearch/distribution/rpm/build/distributions
335335
export DEB=/elasticsearch/distribution/deb/build/distributions
336336
export BATS=/project/build/bats
337-
export BATS_UTILS=/project/build/bats/utils
338-
export BATS_TESTS=/project/build/bats/tests
339-
export BATS_ARCHIVES=/project/build/bats/archives
337+
export BATS_UTILS=/project/build/packaging/bats/utils
338+
export BATS_TESTS=/project/build/packaging/bats/tests
339+
export PACKAGING_ARCHIVES=/project/build/packaging/archives
340340
VARS
341341
cat \<\<SUDOERS_VARS > /etc/sudoers.d/elasticsearch_vars
342342
Defaults env_keep += "ZIP"
@@ -346,7 +346,7 @@ Defaults env_keep += "DEB"
346346
Defaults env_keep += "BATS"
347347
Defaults env_keep += "BATS_UTILS"
348348
Defaults env_keep += "BATS_TESTS"
349-
Defaults env_keep += "BATS_ARCHIVES"
349+
Defaults env_keep += "PACKAGING_ARCHIVES"
350350
SUDOERS_VARS
351351
chmod 0440 /etc/sudoers.d/elasticsearch_vars
352352
SHELL

buildSrc/src/main/groovy/org/elasticsearch/gradle/vagrant/VagrantPropertiesExtension.groovy

Lines changed: 0 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -37,9 +37,6 @@ class VagrantPropertiesExtension {
3737
@Input
3838
Boolean inheritTests
3939

40-
@Input
41-
Boolean inheritTestArchives
42-
4340
@Input
4441
Boolean inheritTestUtils
4542

@@ -60,10 +57,6 @@ class VagrantPropertiesExtension {
6057
this.inheritTests = inheritTests
6158
}
6259

63-
void setInheritTestArchives(Boolean inheritTestArchives) {
64-
this.inheritTestArchives = inheritTestArchives
65-
}
66-
6760
void setInheritTestUtils(Boolean inheritTestUtils) {
6861
this.inheritTestUtils = inheritTestUtils
6962
}

buildSrc/src/main/groovy/org/elasticsearch/gradle/vagrant/VagrantTestPlugin.groovy

Lines changed: 86 additions & 80 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,5 @@
11
package org.elasticsearch.gradle.vagrant
22

3-
import com.carrotsearch.gradle.junit4.RandomizedTestingPlugin
43
import org.apache.tools.ant.taskdefs.condition.Os
54
import org.elasticsearch.gradle.FileContentsTask
65
import org.elasticsearch.gradle.LoggedExec
@@ -43,8 +42,9 @@ class VagrantTestPlugin implements Plugin<Project> {
4342
/** Packages onboarded for upgrade tests **/
4443
static List<String> UPGRADE_FROM_ARCHIVES = ['rpm', 'deb']
4544

45+
private static final PACKAGING_CONFIGURATION = 'packaging'
4646
private static final BATS = 'bats'
47-
private static final String BATS_TEST_COMMAND ="cd \$BATS_ARCHIVES && sudo bats --tap \$BATS_TESTS/*.$BATS"
47+
private static final String BATS_TEST_COMMAND ="cd \$PACKAGING_ARCHIVES && sudo bats --tap \$BATS_TESTS/*.$BATS"
4848
private static final String PLATFORM_TEST_COMMAND ="rm -rf ~/elasticsearch && rsync -r /elasticsearch/ ~/elasticsearch && cd ~/elasticsearch && ./gradlew test integTest"
4949

5050
@Override
@@ -53,11 +53,11 @@ class VagrantTestPlugin implements Plugin<Project> {
5353
// Creates the Vagrant extension for the project
5454
project.extensions.create('esvagrant', VagrantPropertiesExtension, listVagrantBoxes(project))
5555

56-
// Add required repositories for Bats tests
57-
configureBatsRepositories(project)
56+
// Add required repositories for packaging tests
57+
configurePackagingArchiveRepositories(project)
5858

5959
// Creates custom configurations for Bats testing files (and associated scripts and archives)
60-
createBatsConfiguration(project)
60+
createPackagingConfiguration(project)
6161

6262
// Creates all the main Vagrant tasks
6363
createVagrantTasks(project)
@@ -87,7 +87,7 @@ class VagrantTestPlugin implements Plugin<Project> {
8787
}
8888
}
8989

90-
private static void configureBatsRepositories(Project project) {
90+
private static void configurePackagingArchiveRepositories(Project project) {
9191
RepositoryHandler repos = project.repositories
9292

9393
// Try maven central first, it'll have releases before 5.0.0
@@ -102,10 +102,10 @@ class VagrantTestPlugin implements Plugin<Project> {
102102
}
103103
}
104104

105-
private static void createBatsConfiguration(Project project) {
106-
project.configurations.create(BATS)
105+
private static void createPackagingConfiguration(Project project) {
106+
project.configurations.create(PACKAGING_CONFIGURATION)
107107

108-
String upgradeFromVersion = System.getProperty("tests.packaging.upgradeVersion");
108+
String upgradeFromVersion = System.getProperty("tests.packaging.upgradeVersion")
109109
if (upgradeFromVersion == null) {
110110
String firstPartOfSeed = project.rootProject.testSeed.tokenize(':').get(0)
111111
final long seed = Long.parseUnsignedLong(firstPartOfSeed, 16)
@@ -120,12 +120,14 @@ class VagrantTestPlugin implements Plugin<Project> {
120120
} else {
121121
it = "packages:${it}"
122122
}
123-
project.dependencies.add(BATS, project.dependencies.project(path: ":distribution:${it}", configuration: 'default'))
123+
project.dependencies.add(PACKAGING_CONFIGURATION,
124+
project.dependencies.project(path: ":distribution:${it}", configuration: 'default'))
124125
}
125126

126127
UPGRADE_FROM_ARCHIVES.each {
127128
// The version of elasticsearch that we upgrade *from*
128-
project.dependencies.add(BATS, "org.elasticsearch.distribution.${it}:elasticsearch:${upgradeFromVersion}@${it}")
129+
project.dependencies.add(PACKAGING_CONFIGURATION,
130+
"org.elasticsearch.distribution.${it}:elasticsearch:${upgradeFromVersion}@${it}")
129131
}
130132

131133
project.extensions.esvagrant.upgradeFromVersion = upgradeFromVersion
@@ -154,73 +156,66 @@ class VagrantTestPlugin implements Plugin<Project> {
154156
}
155157

156158
private static void createPrepareVagrantTestEnvTask(Project project) {
157-
File batsDir = new File("${project.buildDir}/${BATS}")
159+
File packagingDir = new File(project.buildDir, PACKAGING_CONFIGURATION)
158160

159-
Task createBatsDirsTask = project.tasks.create('createBatsDirs')
160-
createBatsDirsTask.outputs.dir batsDir
161-
createBatsDirsTask.doLast {
162-
batsDir.mkdirs()
161+
File archivesDir = new File(packagingDir, 'archives')
162+
Copy copyPackagingArchives = project.tasks.create('copyPackagingArchives', Copy) {
163+
into archivesDir
164+
from project.configurations[PACKAGING_CONFIGURATION]
163165
}
164166

165-
Copy copyBatsArchives = project.tasks.create('copyBatsArchives', Copy) {
166-
dependsOn createBatsDirsTask
167-
into "${batsDir}/archives"
168-
from project.configurations[BATS]
167+
Task createVersionFile = project.tasks.create('createVersionFile', FileContentsTask) {
168+
dependsOn copyPackagingArchives
169+
file "${archivesDir}/version"
170+
contents project.version
171+
}
172+
173+
Task createUpgradeFromFile = project.tasks.create('createUpgradeFromFile', FileContentsTask) {
174+
dependsOn copyPackagingArchives
175+
file "${archivesDir}/upgrade_from_version"
176+
contents project.extensions.esvagrant.upgradeFromVersion
169177
}
170178

179+
File batsDir = new File(packagingDir, BATS)
171180
Copy copyBatsTests = project.tasks.create('copyBatsTests', Copy) {
172-
dependsOn createBatsDirsTask
173181
into "${batsDir}/tests"
174182
from {
175183
"${project.extensions.esvagrant.batsDir}/tests"
176184
}
177185
}
178186

179187
Copy copyBatsUtils = project.tasks.create('copyBatsUtils', Copy) {
180-
dependsOn createBatsDirsTask
181188
into "${batsDir}/utils"
182189
from {
183190
"${project.extensions.esvagrant.batsDir}/utils"
184191
}
185192
}
186193

187194
// Now we iterate over dependencies of the bats configuration. When a project dependency is found,
188-
// we bring back its own archives, test files or test utils.
195+
// we bring back its test files or test utils.
189196
project.afterEvaluate {
190-
project.configurations.bats.dependencies.findAll {it.targetConfiguration == BATS }.each { d ->
191-
if (d instanceof DefaultProjectDependency) {
192-
DefaultProjectDependency externalBatsDependency = (DefaultProjectDependency) d
193-
Project externalBatsProject = externalBatsDependency.dependencyProject
194-
String externalBatsDir = externalBatsProject.extensions.esvagrant.batsDir
195-
196-
if (project.extensions.esvagrant.inheritTests) {
197-
copyBatsTests.from(externalBatsProject.files("${externalBatsDir}/tests"))
198-
}
199-
if (project.extensions.esvagrant.inheritTestArchives) {
200-
copyBatsArchives.from(externalBatsDependency.projectConfiguration.files)
201-
}
202-
if (project.extensions.esvagrant.inheritTestUtils) {
203-
copyBatsUtils.from(externalBatsProject.files("${externalBatsDir}/utils"))
197+
project.configurations[PACKAGING_CONFIGURATION].dependencies
198+
.findAll {it.targetConfiguration == PACKAGING_CONFIGURATION }
199+
.each { d ->
200+
if (d instanceof DefaultProjectDependency) {
201+
DefaultProjectDependency externalBatsDependency = (DefaultProjectDependency) d
202+
Project externalBatsProject = externalBatsDependency.dependencyProject
203+
String externalBatsDir = externalBatsProject.extensions.esvagrant.batsDir
204+
205+
if (project.extensions.esvagrant.inheritTests) {
206+
copyBatsTests.from(externalBatsProject.files("${externalBatsDir}/tests"))
207+
}
208+
if (project.extensions.esvagrant.inheritTestUtils) {
209+
copyBatsUtils.from(externalBatsProject.files("${externalBatsDir}/utils"))
210+
}
204211
}
205-
}
206212
}
207213
}
208214

209-
Task createVersionFile = project.tasks.create('createVersionFile', FileContentsTask) {
210-
dependsOn createBatsDirsTask
211-
file "${batsDir}/archives/version"
212-
contents project.version
213-
}
214-
215-
Task createUpgradeFromFile = project.tasks.create('createUpgradeFromFile', FileContentsTask) {
216-
dependsOn createBatsDirsTask
217-
file "${batsDir}/archives/upgrade_from_version"
218-
contents project.extensions.esvagrant.upgradeFromVersion
219-
}
220-
221-
Task vagrantSetUpTask = project.tasks.create('setupBats')
215+
Task vagrantSetUpTask = project.tasks.create('setupPackagingTest')
222216
vagrantSetUpTask.dependsOn 'vagrantCheckVersion'
223-
vagrantSetUpTask.dependsOn copyBatsTests, copyBatsUtils, copyBatsArchives, createVersionFile, createUpgradeFromFile
217+
vagrantSetUpTask.dependsOn copyPackagingArchives, createVersionFile, createUpgradeFromFile
218+
vagrantSetUpTask.dependsOn copyBatsTests, copyBatsUtils
224219
}
225220

226221
private static void createPackagingTestTask(Project project) {
@@ -270,8 +265,8 @@ class VagrantTestPlugin implements Plugin<Project> {
270265
assert project.tasks.virtualboxCheckVersion != null
271266
Task virtualboxCheckVersion = project.tasks.virtualboxCheckVersion
272267

273-
assert project.tasks.setupBats != null
274-
Task setupBats = project.tasks.setupBats
268+
assert project.tasks.setupPackagingTest != null
269+
Task setupPackagingTest = project.tasks.setupPackagingTest
275270

276271
assert project.tasks.packagingTest != null
277272
Task packagingTest = project.tasks.packagingTest
@@ -308,7 +303,7 @@ class VagrantTestPlugin implements Plugin<Project> {
308303
environmentVars vagrantEnvVars
309304
dependsOn vagrantCheckVersion, virtualboxCheckVersion
310305
}
311-
update.mustRunAfter(setupBats)
306+
update.mustRunAfter(setupPackagingTest)
312307

313308
/*
314309
* Destroying before every execution can be annoying while iterating on tests locally. Therefore, we provide a flag
@@ -359,32 +354,39 @@ class VagrantTestPlugin implements Plugin<Project> {
359354
}
360355
vagrantSmokeTest.dependsOn(smoke)
361356

362-
Task packaging = project.tasks.create("vagrant${boxTask}#packagingTest", BatsOverVagrantTask) {
357+
Task batsPackagingTest = project.tasks.create("vagrant${boxTask}#batsPackagingTest", BatsOverVagrantTask) {
363358
remoteCommand BATS_TEST_COMMAND
364359
boxName box
365360
environmentVars vagrantEnvVars
366-
dependsOn up, setupBats
361+
dependsOn up, setupPackagingTest
367362
finalizedBy halt
368363
}
369364

370-
TaskExecutionAdapter packagingReproListener = new TaskExecutionAdapter() {
371-
@Override
372-
void afterExecute(Task task, TaskState state) {
373-
final String gradlew = Os.isFamily(Os.FAMILY_WINDOWS) ? "gradlew" : "./gradlew"
374-
if (state.failure != null) {
375-
println "REPRODUCE WITH: ${gradlew} ${packaging.path} " +
376-
"-Dtests.seed=${project.testSeed} "
377-
}
378-
}
365+
TaskExecutionAdapter batsPackagingReproListener = createReproListener(project, batsPackagingTest.path)
366+
batsPackagingTest.doFirst {
367+
project.gradle.addListener(batsPackagingReproListener)
368+
}
369+
batsPackagingTest.doLast {
370+
project.gradle.removeListener(batsPackagingReproListener)
379371
}
380-
packaging.doFirst {
381-
project.gradle.addListener(packagingReproListener)
372+
if (project.extensions.esvagrant.boxes.contains(box)) {
373+
packagingTest.dependsOn(batsPackagingTest)
374+
}
375+
376+
// This task doesn't do anything yet. In the future it will execute a jar containing tests on the vm
377+
Task groovyPackagingTest = project.tasks.create("vagrant${boxTask}#groovyPackagingTest")
378+
groovyPackagingTest.dependsOn(up)
379+
groovyPackagingTest.finalizedBy(halt)
380+
381+
TaskExecutionAdapter groovyPackagingReproListener = createReproListener(project, groovyPackagingTest.path)
382+
groovyPackagingTest.doFirst {
383+
project.gradle.addListener(groovyPackagingReproListener)
382384
}
383-
packaging.doLast {
384-
project.gradle.removeListener(packagingReproListener)
385+
groovyPackagingTest.doLast {
386+
project.gradle.removeListener(groovyPackagingReproListener)
385387
}
386388
if (project.extensions.esvagrant.boxes.contains(box)) {
387-
packagingTest.dependsOn(packaging)
389+
packagingTest.dependsOn(groovyPackagingTest)
388390
}
389391

390392
Task platform = project.tasks.create("vagrant${boxTask}#platformTest", VagrantCommandTask) {
@@ -395,15 +397,7 @@ class VagrantTestPlugin implements Plugin<Project> {
395397
finalizedBy halt
396398
args '--command', PLATFORM_TEST_COMMAND + " -Dtests.seed=${-> project.testSeed}"
397399
}
398-
TaskExecutionAdapter platformReproListener = new TaskExecutionAdapter() {
399-
@Override
400-
void afterExecute(Task task, TaskState state) {
401-
if (state.failure != null) {
402-
println "REPRODUCE WITH: gradle ${platform.path} " +
403-
"-Dtests.seed=${project.testSeed} "
404-
}
405-
}
406-
}
400+
TaskExecutionAdapter platformReproListener = createReproListener(project, platform.path)
407401
platform.doFirst {
408402
project.gradle.addListener(platformReproListener)
409403
}
@@ -415,4 +409,16 @@ class VagrantTestPlugin implements Plugin<Project> {
415409
}
416410
}
417411
}
412+
413+
private static TaskExecutionAdapter createReproListener(Project project, String reproTaskPath) {
414+
return new TaskExecutionAdapter() {
415+
@Override
416+
void afterExecute(Task task, TaskState state) {
417+
final String gradlew = Os.isFamily(Os.FAMILY_WINDOWS) ? "gradlew" : "./gradlew"
418+
if (state.failure != null) {
419+
println "REPRODUCE WITH: ${gradlew} ${reproTaskPath} -Dtests.seed=${project.testSeed} "
420+
}
421+
}
422+
}
423+
}
418424
}

qa/vagrant/build.gradle

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -25,14 +25,14 @@ for (Project subproj : project.rootProject.subprojects) {
2525
if (subproj.path.startsWith(':plugins:') || subproj.path.equals(':example-plugins:custom-settings')) {
2626
// add plugin as a dep
2727
dependencies {
28-
bats project(path: "${subproj.path}", configuration: 'zip')
28+
packaging project(path: "${subproj.path}", configuration: 'zip')
2929
}
3030
plugins.add(subproj.name)
3131
}
3232
}
3333
plugins = plugins.toSorted()
3434

35-
setupBats {
35+
setupPackagingTest {
3636
doFirst {
3737
File expectedPlugins = file('build/plugins/expected')
3838
expectedPlugins.parentFile.mkdirs()

0 commit comments

Comments
 (0)