mirror of
https://github.com/honeymoose/OpenSearch.git
synced 2025-02-06 21:18:31 +00:00
Some standalone tests set the max script compilation limit. However, this setting is now set in the main cluster setup in core so it is no longer needed here. This commit removes these obviated settings in standalone tests. Original commit: elastic/x-pack-elasticsearch@089328c8d7
89 lines
3.4 KiB
Groovy
89 lines
3.4 KiB
Groovy
import groovy.json.JsonSlurper
|
|
|
|
import javax.net.ssl.HttpsURLConnection
|
|
import java.nio.charset.StandardCharsets
|
|
|
|
apply plugin: 'elasticsearch.standalone-rest-test'
|
|
apply plugin: 'elasticsearch.rest-test'
|
|
|
|
dependencies {
|
|
testCompile project(path: ':x-pack-elasticsearch:plugin', configuration: 'runtime')
|
|
}
|
|
|
|
ext {
|
|
jiraUrl = 'https://elasticsearch.atlassian.net/'
|
|
jiraUser = 'xpack-user@elastic.co'
|
|
jiraPassword = 'N9M4ea9rfy'
|
|
jiraProject = 'XWT'
|
|
}
|
|
|
|
integTestCluster {
|
|
plugin ':x-pack-elasticsearch:plugin'
|
|
setting 'xpack.security.enabled', 'false'
|
|
setting 'xpack.monitoring.enabled', 'false'
|
|
setting 'xpack.ml.enabled', 'false'
|
|
|
|
//
|
|
// JIRA integration test settings
|
|
//
|
|
// The integration tests use a JIRA account on elasticsearch.atlassian.net. This account
|
|
// has been created by Edward Sy [edward@elastic.co]. It uses the "XPACK WATCHER TEST"
|
|
// Jira project available at https://elasticsearch.atlassian.net/projects/XWT/issues/?filter=allopenissues
|
|
// and the "xpack-user@elastic.co" username which is also an internal Google Group.
|
|
setting 'xpack.notification.jira.account.test.url', jiraUrl
|
|
setting 'xpack.notification.jira.account.test.user', jiraUser
|
|
setting 'xpack.notification.jira.account.test.password', jiraPassword
|
|
setting 'xpack.notification.jira.account.test.issue_defaults.project.key', jiraProject
|
|
setting 'xpack.notification.jira.account.test.issue_defaults.labels', ['integration-tests', project.version]
|
|
}
|
|
|
|
/** Clean up JIRA after tests: delete all created issues **/
|
|
task cleanJira(type: DefaultTask) {
|
|
doLast {
|
|
def issues = jiraIssues(jiraProject)
|
|
assert issues instanceof List
|
|
issues.forEach {
|
|
// See https://docs.atlassian.com/jira/REST/cloud/#api/2/issue-deleteIssue
|
|
logger.debug("Deleting JIRA issue [${it}]")
|
|
jiraHttpRequest("issue/${it}", "DELETE", 204)
|
|
}
|
|
}
|
|
}
|
|
integTestRunner.finalizedBy cleanJira
|
|
|
|
/** List all issues associated to a given Jira project **/
|
|
def jiraIssues(String projectKey) {
|
|
// See https://docs.atlassian.com/jira/REST/cloud/#api/2/search-search
|
|
def response = jiraHttpRequest("search?maxResults=100&fields=id,self,key&jql=project%3D${projectKey}", "GET", 200)
|
|
assert response.issues instanceof List
|
|
return response.issues.findAll {it.key.startsWith(projectKey)}.collect {it.key}
|
|
}
|
|
|
|
/** Execute a HTTP request against the Jira server instance **/
|
|
def jiraHttpRequest(String endpoint, String method, int successCode) {
|
|
HttpsURLConnection connection = null;
|
|
try {
|
|
byte[] credentials = "${jiraUser}:${jiraPassword}".getBytes(StandardCharsets.UTF_8);
|
|
connection = (HttpsURLConnection) new URL("${jiraUrl}/rest/api/2/${endpoint}").openConnection();
|
|
connection.setRequestProperty("Authorization", "Basic " + Base64.getEncoder().encodeToString(credentials));
|
|
connection.setRequestMethod(method);
|
|
connection.connect();
|
|
|
|
if (connection.getResponseCode() == successCode) {
|
|
String response = connection.getInputStream().getText(StandardCharsets.UTF_8.name());
|
|
if (response != null && response.length() > 0) {
|
|
return new JsonSlurper().parseText(response)
|
|
}
|
|
} else {
|
|
throw new GradleException("Unexpected response code for [${endpoint}]: got ${connection.getResponseCode()} but expected ${successCode}")
|
|
}
|
|
} catch (Exception e) {
|
|
logger.error("Failed to delete JIRA issues after test execution", e)
|
|
} finally {
|
|
if (connection != null) {
|
|
connection.disconnect();
|
|
}
|
|
}
|
|
return null
|
|
}
|