89 lines
3.1 KiB
Groovy
89 lines
3.1 KiB
Groovy
/*
|
|
* Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one
|
|
* or more contributor license agreements. Licensed under the Elastic License;
|
|
* you may not use this file except in compliance with the Elastic License.
|
|
*/
|
|
import java.nio.file.Files
|
|
|
|
apply plugin: 'elasticsearch.build'
|
|
|
|
dependencies {
|
|
api project(":plugins:repository-gcs")
|
|
testImplementation project(":test:framework")
|
|
testImplementation project(':x-pack:snapshot-tool')
|
|
testImplementation files(project(':x-pack:snapshot-tool').sourceSets.test.output)
|
|
}
|
|
|
|
test.enabled = false
|
|
|
|
task gcsThirdPartyTests {
|
|
dependsOn check
|
|
}
|
|
|
|
boolean useGCSFixture = false
|
|
|
|
String gcsServiceAccount = System.getenv("google_storage_service_account")
|
|
String gcsBucket = System.getenv("google_storage_bucket")
|
|
String gcsBasePath = System.getenv("google_storage_base_path")
|
|
|
|
if (!gcsServiceAccount && !gcsBucket && !gcsBasePath) {
|
|
gcsServiceAccount = new File(project(':plugins:repository-gcs').buildDir,
|
|
'generated-resources/service_account_test.json').path
|
|
gcsBucket = 'bucket_test'
|
|
gcsBasePath = 'integration_test'
|
|
|
|
useGCSFixture = true
|
|
} else if (!gcsServiceAccount || !gcsBucket || !gcsBasePath) {
|
|
throw new IllegalArgumentException("not all options specified to run thirdPartyTestGCS against external GCS service are present")
|
|
}
|
|
|
|
def encodedCredentials = {
|
|
Base64.encoder.encodeToString(Files.readAllBytes(file(gcsServiceAccount).toPath()))
|
|
}
|
|
|
|
task gcsThirdPartyTest(type: Test) {
|
|
include '**/GCSCleanupTests.class'
|
|
|
|
systemProperty 'tests.security.manager', false
|
|
|
|
systemProperty 'test.google.bucket', gcsBucket
|
|
systemProperty 'test.google.base', gcsBasePath
|
|
nonInputProperties.systemProperty 'test.google.account', "${-> encodedCredentials.call()}"
|
|
}
|
|
|
|
if (useGCSFixture) {
|
|
gcsThirdPartyTest.enabled = false;
|
|
testingConventions.enabled = false;
|
|
/*
|
|
|
|
See: https://github.com/elastic/elasticsearch/issues/46813 Fails with --parallel
|
|
|
|
thirdPartyTest.dependsOn(':plugins:repository-gcs:qa:google-cloud-storage:createServiceAccountFile',
|
|
|
|
':plugins:repository-gcs:qa:google-cloud-storage:googleCloudStorageFixture')
|
|
thirdPartyTest.finalizedBy(':plugins:repository-gcs:qa:google-cloud-storage:googleCloudStorageFixture#stop')
|
|
|
|
def fixtureEndpoint = {
|
|
"http://${project(':plugins:repository-gcs:qa:google-cloud-storage').googleCloudStorageFixture.addressAndPort}"
|
|
}
|
|
|
|
def tokenURI = {
|
|
"http://${project(':plugins:repository-gcs:qa:google-cloud-storage').googleCloudStorageFixture.addressAndPort}/o/oauth2/token"
|
|
}
|
|
|
|
thirdPartyTest {
|
|
nonInputProperties.systemProperty 'test.google.endpoint', "${-> fixtureEndpoint.call()}"
|
|
nonInputProperties.systemProperty 'test.google.tokenURI', "${-> tokenURI.call()}"
|
|
}
|
|
|
|
gradle.taskGraph.whenReady {
|
|
if (it.hasTask(gcsThirdPartyTests)) {
|
|
throw new IllegalStateException("Tried to run third party tests but not all of the necessary environment variables 'google_storage_service_account', " +
|
|
"'google_storage_bucket', 'google_storage_base_path' are set.")
|
|
}
|
|
}
|
|
*/
|
|
}
|
|
|
|
check.dependsOn(gcsThirdPartyTest)
|