1
1
import org.elasticsearch.gradle.MavenFilteringHack
2
- import org.elasticsearch.gradle.test.AntFixture
3
2
import org.elasticsearch.gradle.test.RestIntegTestTask
4
3
5
4
import static org.elasticsearch.gradle.PropertyNormalization.IGNORE_VALUE
@@ -22,6 +21,7 @@ import static org.elasticsearch.gradle.PropertyNormalization.IGNORE_VALUE
22
21
* specific language governing permissions and limitations
23
22
* under the License.
24
23
*/
24
+ apply plugin : ' elasticsearch.test.fixtures'
25
25
26
26
esplugin {
27
27
description ' The S3 repository plugin adds S3 repositories'
@@ -48,10 +48,10 @@ dependencies {
48
48
compile " joda-time:joda-time:${ versions.joda} "
49
49
50
50
// HACK: javax.xml.bind was removed from default modules in java 9, so we pull the api in here,
51
- // and whitelist this hack in JarHell
51
+ // and whitelist this hack in JarHell
52
52
compile ' javax.xml.bind:jaxb-api:2.2.2'
53
53
54
- testCompile project(' :test:fixtures:minio -fixture' )
54
+ testCompile project(' :test:fixtures:s3 -fixture' )
55
55
}
56
56
57
57
dependencyLicenses {
@@ -110,7 +110,7 @@ if (!s3PermanentAccessKey && !s3PermanentSecretKey && !s3PermanentBucket && !s3P
110
110
s3PermanentAccessKey = ' access_key'
111
111
s3PermanentSecretKey = ' secret_key'
112
112
s3PermanentBucket = ' bucket'
113
- s3PermanentBasePath = ' '
113
+ s3PermanentBasePath = ' base_path '
114
114
115
115
useFixture = true
116
116
@@ -119,21 +119,21 @@ if (!s3PermanentAccessKey && !s3PermanentSecretKey && !s3PermanentBucket && !s3P
119
119
}
120
120
121
121
if (! s3TemporaryAccessKey && ! s3TemporarySecretKey && ! s3TemporaryBucket && ! s3TemporaryBasePath && ! s3TemporarySessionToken) {
122
- s3TemporaryAccessKey = ' s3_integration_test_temporary_access_key '
123
- s3TemporarySecretKey = ' s3_integration_test_temporary_secret_key '
124
- s3TemporaryBucket = ' temporary-bucket-test '
125
- s3TemporaryBasePath = ' integration_test '
126
- s3TemporarySessionToken = ' s3_integration_test_temporary_session_token '
122
+ s3TemporaryAccessKey = ' session_token_access_key '
123
+ s3TemporarySecretKey = ' session_token_secret_key '
124
+ s3TemporaryBucket = ' session_token_bucket '
125
+ s3TemporaryBasePath = ' session_token_base_path '
126
+ s3TemporarySessionToken = ' session_token '
127
127
128
128
} else if (! s3TemporaryAccessKey || ! s3TemporarySecretKey || ! s3TemporaryBucket || ! s3TemporaryBasePath || ! s3TemporarySessionToken) {
129
129
throw new IllegalArgumentException (" not all options specified to run against external S3 service as temporary credentials are present" )
130
130
}
131
131
132
132
if (! s3EC2Bucket && ! s3EC2BasePath && ! s3ECSBucket && ! s3ECSBasePath) {
133
- s3EC2Bucket = ' ec2-bucket-test '
134
- s3EC2BasePath = ' integration_test '
135
- s3ECSBucket = ' ecs-bucket-test '
136
- s3ECSBasePath = ' integration_test '
133
+ s3EC2Bucket = ' ec2_bucket '
134
+ s3EC2BasePath = ' ec2_base_path '
135
+ s3ECSBucket = ' ecs_bucket '
136
+ s3ECSBasePath = ' ecs_base_path '
137
137
} else if (! s3EC2Bucket || ! s3EC2BasePath || ! s3ECSBucket || ! s3ECSBasePath) {
138
138
throw new IllegalArgumentException (" not all options specified to run EC2/ECS tests are present" )
139
139
}
@@ -147,8 +147,6 @@ task thirdPartyTest(type: Test) {
147
147
}
148
148
149
149
if (useFixture) {
150
- apply plugin : ' elasticsearch.test.fixtures'
151
-
152
150
testFixtures. useFixture(' :test:fixtures:minio-fixture' )
153
151
154
152
def minioAddress = {
@@ -206,39 +204,6 @@ if (useFixture) {
206
204
207
205
check. dependsOn(thirdPartyTest)
208
206
209
- File parentFixtures = new File (project. buildDir, " fixtures" )
210
- File s3FixtureFile = new File (parentFixtures, ' s3Fixture.properties' )
211
-
212
- task s3FixtureProperties {
213
- outputs. file(s3FixtureFile)
214
- def s3FixtureOptions = [
215
- " tests.seed" : project. testSeed,
216
- " s3Fixture.permanent_bucket_name" : s3PermanentBucket,
217
- " s3Fixture.permanent_key" : s3PermanentAccessKey,
218
- " s3Fixture.temporary_bucket_name" : s3TemporaryBucket,
219
- " s3Fixture.temporary_key" : s3TemporaryAccessKey,
220
- " s3Fixture.temporary_session_token" : s3TemporarySessionToken,
221
- " s3Fixture.ec2_bucket_name" : s3EC2Bucket,
222
- " s3Fixture.ecs_bucket_name" : s3ECSBucket,
223
- " s3Fixture.disableChunkedEncoding" : s3DisableChunkedEncoding
224
- ]
225
-
226
- doLast {
227
- file(s3FixtureFile). text = s3FixtureOptions. collect { k , v -> " $k = $v " }. join(" \n " )
228
- }
229
- }
230
-
231
- /* * A task to start the AmazonS3Fixture which emulates an S3 service **/
232
- task s3Fixture (type : AntFixture ) {
233
- dependsOn testClasses
234
- dependsOn s3FixtureProperties
235
- inputs. file(s3FixtureFile)
236
-
237
- env ' CLASSPATH' , " ${ -> project.sourceSets.test.runtimeClasspath.asPath } "
238
- executable = new File (project. runtimeJavaHome, ' bin/java' )
239
- args ' org.elasticsearch.repositories.s3.AmazonS3Fixture' , baseDir, s3FixtureFile. getAbsolutePath()
240
- }
241
-
242
207
processTestResources {
243
208
Map<String , Object > expansions = [
244
209
' permanent_bucket' : s3PermanentBucket,
@@ -255,8 +220,13 @@ processTestResources {
255
220
MavenFilteringHack . filter(it, expansions)
256
221
}
257
222
258
- integTest {
259
- dependsOn s3Fixture
223
+ testFixtures. useFixture(' :test:fixtures:s3-fixture' )
224
+
225
+ def fixtureAddress = { fixture ->
226
+ assert useFixture: ' closure should not be used without a fixture'
227
+ int ephemeralPort = project(' :test:fixtures:s3-fixture' ). postProcessFixture. ext. " test.fixtures.${ fixture} .tcp.80"
228
+ assert ephemeralPort > 0
229
+ ' http://127.0.0.1:' + ephemeralPort
260
230
}
261
231
262
232
testClusters. integTest {
@@ -268,12 +238,12 @@ testClusters.integTest {
268
238
keystore ' s3.client.integration_test_temporary.session_token' , s3TemporarySessionToken
269
239
270
240
if (useFixture) {
271
- setting ' s3.client.integration_test_permanent.endpoint' , { " http:// ${ s3Fixture.addressAndPort } " }, IGNORE_VALUE
272
- setting ' s3.client.integration_test_temporary.endpoint' , { " http:// ${ s3Fixture.addressAndPort } " }, IGNORE_VALUE
273
- setting ' s3.client.integration_test_ec2.endpoint' , { " http:// ${ s3Fixture.addressAndPort } " }, IGNORE_VALUE
241
+ setting ' s3.client.integration_test_permanent.endpoint' , { "${ -> fixtureAddress( ' s3-fixture ' ) }" }, IGNORE_VALUE
242
+ setting 's3.client.integration_test_temporary.endpoint', { " ${ -> fixtureAddress( ' s3-fixture-with-session-token ' ) }" }, IGNORE_VALUE
243
+ setting 's3.client.integration_test_ec2.endpoint', { " ${ -> fixtureAddress( ' s3-fixture-with-ec2 ' ) }" }, IGNORE_VALUE
274
244
275
245
// to redirect InstanceProfileCredentialsProvider to custom auth point
276
- systemProperty " com.amazonaws.sdk.ec2MetadataServiceEndpointOverride" , { " http:// ${ s3Fixture.addressAndPort } " }, IGNORE_VALUE
246
+ systemProperty " com. amazonaws. sdk. ec2MetadataServiceEndpointOverride" , { " ${ -> fixtureAddress( ' s3-fixture-with-ec2 ' ) }" }, IGNORE_VALUE
277
247
} else {
278
248
println " Using an external service to test the repository- s3 plugin"
279
249
}
@@ -286,7 +256,7 @@ task s3ThirdPartyTests {
286
256
if (useFixture) {
287
257
task integTestECS(type: RestIntegTestTask.class) {
288
258
description = " Runs tests using the ECS repository. "
289
- dependsOn(project . s3Fixture )
259
+ dependsOn('bundlePlugin' )
290
260
runner {
291
261
systemProperty 'tests.rest.blacklist', [
292
262
'repository_s3/10_basic/*',
@@ -299,9 +269,9 @@ if (useFixture) {
299
269
check.dependsOn(integTestECS)
300
270
301
271
testClusters.integTestECS {
302
- setting ' s3.client.integration_test_ecs.endpoint' , { " http:// ${ s3Fixture.addressAndPort } " }, IGNORE_VALUE
272
+ setting 's3.client.integration_test_ecs.endpoint', { " ${ -> fixtureAddress( ' s3-fixture-with-ecs ' ) }" }, IGNORE_VALUE
303
273
plugin file(tasks.bundlePlugin.archiveFile)
304
- environment ' AWS_CONTAINER_CREDENTIALS_FULL_URI' , { " http:// ${ s3Fixture.addressAndPort } /ecs_credentials_endpoint" }, IGNORE_VALUE
274
+ environment 'AWS_CONTAINER_CREDENTIALS_FULL_URI', { " ${ -> fixtureAddress( ' s3-fixture-with-ecs ' ) }/ ecs_credentials_endpoint" }, IGNORE_VALUE
305
275
}
306
276
307
277
gradle.taskGraph.whenReady {
@@ -314,10 +284,10 @@ if (useFixture) {
314
284
315
285
thirdPartyAudit.ignoreMissingClasses (
316
286
// classes are missing
317
- ' javax.servlet.ServletContextEvent' ,
318
- ' javax.servlet.ServletContextListener' ,
319
- ' org.apache.avalon.framework.logger.Logger' ,
320
- ' org.apache.log.Hierarchy' ,
287
+ 'javax.servlet.ServletContextEvent',
288
+ 'javax.servlet.ServletContextListener',
289
+ 'org.apache.avalon.framework.logger.Logger',
290
+ 'org.apache.log.Hierarchy',
321
291
'org.apache.log.Logger',
322
292
'software.amazon.ion.IonReader',
323
293
'software.amazon.ion.IonSystem',
@@ -328,7 +298,7 @@ thirdPartyAudit.ignoreMissingClasses (
328
298
'software.amazon.ion.system.IonSystemBuilder',
329
299
'software.amazon.ion.system.IonTextWriterBuilder',
330
300
'software.amazon.ion.system.IonWriterBuilder',
331
- // We don't use the kms dependency
301
+ // We don't use the kms dependency
332
302
'com.amazonaws.services.kms.AWSKMS',
333
303
'com.amazonaws.services.kms.AWSKMSClient',
334
304
'com.amazonaws.services.kms.model.DecryptRequest',
0 commit comments