diff --git a/.github/workflows/reports-scheduler-test-and-build-workflow.yml b/.github/workflows/reports-scheduler-test-and-build-workflow.yml index 327018bb..4eefba56 100644 --- a/.github/workflows/reports-scheduler-test-and-build-workflow.yml +++ b/.github/workflows/reports-scheduler-test-and-build-workflow.yml @@ -15,6 +15,7 @@ jobs: java: - 11 - 17 + - 21 runs-on: ubuntu-latest container: # using the same image which is used by opensearch-build team to build the OpenSearch Distribution @@ -68,6 +69,7 @@ jobs: java: - 11 - 17 + - 21 runs-on: windows-latest steps: diff --git a/build-tools/esplugin-coverage.gradle b/build-tools/esplugin-coverage.gradle index 3e8815fe..a2520874 100644 --- a/build-tools/esplugin-coverage.gradle +++ b/build-tools/esplugin-coverage.gradle @@ -54,8 +54,8 @@ jacocoTestReport { sourceDirectories.from = "src/main/kotlin" classDirectories.from = sourceSets.main.output reports { - html.enabled = true // human readable - xml.enabled = true // for coverlay + html.required = true // human readable + xml.required = true // for coverlay } } @@ -65,8 +65,7 @@ allprojects{ testClusters.integTest { if (Os.isFamily(Os.FAMILY_WINDOWS)) { - // Replacing build with absolute path to fix the error "error opening zip file or JAR manifest missing : /build/tmp/expandedArchives/..../jacocoagent.jar" - jvmArgs " ${dummyIntegTest.jacoco.getAsJvmArg()}".replace('build',"${buildDir}") + jvmArgs " ${dummyIntegTest.jacoco.getAsJvmArg()}" } else { jvmArgs " ${dummyIntegTest.jacoco.getAsJvmArg()}".replace('javaagent:','javaagent:/') } diff --git a/build-tools/pkgbuild.gradle b/build-tools/pkgbuild.gradle index 8c4dab9b..89358425 100644 --- a/build-tools/pkgbuild.gradle +++ b/build-tools/pkgbuild.gradle @@ -3,7 +3,7 @@ * SPDX-License-Identifier: Apache-2.0 */ -apply plugin: 'nebula.ospackage' +apply plugin: 'com.netflix.nebula.ospackage' // This is afterEvaluate because the bundlePlugin ZIP task is updated afterEvaluate and changes the ZIP name to match the plugin name afterEvaluate { @@ -40,26 +40,10 @@ afterEvaluate { buildRpm { arch = 'NOARCH' dependsOn 'assemble' - finalizedBy 'renameRpm' - task renameRpm(type: Copy) { - from("$buildDir/distributions") - into("$buildDir/distributions") - include archiveName - rename archiveName, "${packageName}-${version}.rpm" - doLast { delete file("$buildDir/distributions/$archiveName") } - } } buildDeb { arch = 'all' dependsOn 'assemble' - finalizedBy 'renameDeb' - task renameDeb(type: Copy) { - from("$buildDir/distributions") - into("$buildDir/distributions") - include archiveName - rename archiveName, "${packageName}-${version}.deb" - doLast { delete file("$buildDir/distributions/$archiveName") } - } } } diff --git a/build.gradle b/build.gradle index 9de0d9df..31acfefa 100644 --- a/build.gradle +++ b/build.gradle @@ -40,13 +40,13 @@ buildscript { classpath "${opensearch_group}.gradle:build-tools:${opensearch_version}" classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:${kotlin_version}" classpath "org.jetbrains.kotlin:kotlin-allopen:${kotlin_version}" - classpath "io.gitlab.arturbosch.detekt:detekt-gradle-plugin:1.22.0" - classpath "org.jacoco:org.jacoco.agent:0.8.8" + classpath "io.gitlab.arturbosch.detekt:detekt-gradle-plugin:1.23.4" + classpath "org.jacoco:org.jacoco.agent:0.8.11" } } plugins { - id 'nebula.ospackage' version "8.3.0" + id "com.netflix.nebula.ospackage-base" version "11.6.0" id "com.dorongold.task-tree" version "1.5" id 'java-library' } @@ -131,9 +131,14 @@ configurations.all { if (it.state != Configuration.State.UNRESOLVED) return resolutionStrategy { force "org.jetbrains.kotlin:kotlin-stdlib:${kotlin_version}" + force "org.jetbrains.kotlin:kotlin-stdlib-jdk8:${kotlin_version}" + force "org.jetbrains.kotlin:kotlin-reflect:${kotlin_version}" force "org.jetbrains.kotlin:kotlin-stdlib-common:${kotlin_version}" force "com.fasterxml.jackson.dataformat:jackson-dataformat-cbor:2.11.4" force "org.yaml:snakeyaml:2.0" + force "org.slf4j:slf4j-api:2.0.7" + force "ch.qos.logback:logback-classic:1.3.14" + force "ch.qos.logback:logback-core:1.3.14" } } @@ -196,7 +201,7 @@ dependencies { testImplementation "org.mockito:mockito-junit-jupiter:${versions.mockito}" testImplementation 'com.google.code.gson:gson:2.8.9' - ktlint "com.pinterest:ktlint:0.45.1" + ktlint "com.pinterest:ktlint:0.47.1" } javadoc.enabled = false // turn off javadoc as it barfs on Kotlin code @@ -536,7 +541,7 @@ run { task ktlint(type: JavaExec, group: "verification") { description = "Check Kotlin code style." - main = "com.pinterest.ktlint.Main" + mainClass = "com.pinterest.ktlint.Main" classpath = configurations.ktlint args "src/**/*.kt" // to generate report in checkstyle format prepend following args: @@ -548,9 +553,10 @@ check.dependsOn ktlint task ktlintFormat(type: JavaExec, group: "formatting") { description = "Fix Kotlin code style deviations." - main = "com.pinterest.ktlint.Main" + mainClass = "com.pinterest.ktlint.Main" classpath = configurations.ktlint args "-F", "src/**/*.kt" + jvmArgs "--add-opens=java.base/java.lang=ALL-UNNAMED" } compileKotlin { kotlinOptions.freeCompilerArgs = ['-Xjsr305=strict'] } diff --git a/gradle/wrapper/gradle-wrapper.jar b/gradle/wrapper/gradle-wrapper.jar index 943f0cbf..d64cd491 100644 Binary files a/gradle/wrapper/gradle-wrapper.jar and b/gradle/wrapper/gradle-wrapper.jar differ diff --git a/gradle/wrapper/gradle-wrapper.properties b/gradle/wrapper/gradle-wrapper.properties index 50832291..e6aba251 100644 --- a/gradle/wrapper/gradle-wrapper.properties +++ b/gradle/wrapper/gradle-wrapper.properties @@ -1,6 +1,7 @@ distributionBase=GRADLE_USER_HOME distributionPath=wrapper/dists -distributionUrl=https\://services.gradle.org/distributions/gradle-7.6.1-bin.zip +distributionUrl=https\://services.gradle.org/distributions/gradle-8.5-all.zip networkTimeout=10000 +validateDistributionUrl=true zipStoreBase=GRADLE_USER_HOME zipStorePath=wrapper/dists diff --git a/gradlew b/gradlew index 65dcd68d..1aa94a42 100755 --- a/gradlew +++ b/gradlew @@ -83,10 +83,8 @@ done # This is normally unused # shellcheck disable=SC2034 APP_BASE_NAME=${0##*/} -APP_HOME=$( cd "${APP_HOME:-./}" && pwd -P ) || exit - -# Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. -DEFAULT_JVM_OPTS='"-Xmx64m" "-Xms64m"' +# Discard cd standard output in case $CDPATH is set (https://github.com/gradle/gradle/issues/25036) +APP_HOME=$( cd "${APP_HOME:-./}" > /dev/null && pwd -P ) || exit # Use the maximum available, or set MAX_FD != -1 to use that value. MAX_FD=maximum @@ -133,10 +131,13 @@ location of your Java installation." fi else JAVACMD=java - which java >/dev/null 2>&1 || die "ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. + if ! command -v java >/dev/null 2>&1 + then + die "ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. Please set the JAVA_HOME variable in your environment to match the location of your Java installation." + fi fi # Increase the maximum file descriptors if we can. @@ -144,7 +145,7 @@ if ! "$cygwin" && ! "$darwin" && ! "$nonstop" ; then case $MAX_FD in #( max*) # In POSIX sh, ulimit -H is undefined. That's why the result is checked to see if it worked. - # shellcheck disable=SC3045 + # shellcheck disable=SC2039,SC3045 MAX_FD=$( ulimit -H -n ) || warn "Could not query maximum file descriptor limit" esac @@ -152,7 +153,7 @@ if ! "$cygwin" && ! "$darwin" && ! "$nonstop" ; then '' | soft) :;; #( *) # In POSIX sh, ulimit -n is undefined. That's why the result is checked to see if it worked. - # shellcheck disable=SC3045 + # shellcheck disable=SC2039,SC3045 ulimit -n "$MAX_FD" || warn "Could not set maximum file descriptor limit to $MAX_FD" esac @@ -197,11 +198,15 @@ if "$cygwin" || "$msys" ; then done fi -# Collect all arguments for the java command; -# * $DEFAULT_JVM_OPTS, $JAVA_OPTS, and $GRADLE_OPTS can contain fragments of -# shell script including quotes and variable substitutions, so put them in -# double quotes to make sure that they get re-expanded; and -# * put everything else in single quotes, so that it's not re-expanded. + +# Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. +DEFAULT_JVM_OPTS='"-Xmx64m" "-Xms64m"' + +# Collect all arguments for the java command: +# * DEFAULT_JVM_OPTS, JAVA_OPTS, JAVA_OPTS, and optsEnvironmentVar are not allowed to contain shell fragments, +# and any embedded shellness will be escaped. +# * For example: A user cannot expect ${Hostname} to be expanded, as it is an environment variable and will be +# treated as '${Hostname}' itself on the command line. set -- \ "-Dorg.gradle.appname=$APP_BASE_NAME" \ diff --git a/release-notes/opensearch-reporting.release-notes-2.11.0.0.md b/release-notes/opensearch-reporting.release-notes-2.11.0.0.md new file mode 100644 index 00000000..ea5cddeb --- /dev/null +++ b/release-notes/opensearch-reporting.release-notes-2.11.0.0.md @@ -0,0 +1,7 @@ +## Version 2.11.0.0 Release Notes + +Compatible with OpenSearch 2.11.0 + +### Maintenance + +* Update demo certs used in integ tests ([#755](https://github.com/opensearch-project/reporting/pull/755)) diff --git a/release-notes/opensearch-reporting.release-notes-2.12.0.0.md b/release-notes/opensearch-reporting.release-notes-2.12.0.0.md new file mode 100644 index 00000000..9dfa39c7 --- /dev/null +++ b/release-notes/opensearch-reporting.release-notes-2.12.0.0.md @@ -0,0 +1,10 @@ +## Version 2.12.0.0 Release Notes + +Compatible with OpenSearch 2.12.0 + +### Maintenance +* Onboard jenkins prod docker images to github actions ([#924](https://github.com/opensearch-project/reporting/pull/924)) + +### Infrastructure +* Bumping ktlint to 0.47.1 ([#960](https://github.com/opensearch-project/reporting/pull/960)) +* upgrade gradle to 8.5 ([#941](https://github.com/opensearch-project/reporting/pull/941)) \ No newline at end of file diff --git a/src/main/kotlin/org/opensearch/reportsscheduler/resthandler/OnDemandReportRestHandler.kt b/src/main/kotlin/org/opensearch/reportsscheduler/resthandler/OnDemandReportRestHandler.kt index 483ff762..3c803d32 100644 --- a/src/main/kotlin/org/opensearch/reportsscheduler/resthandler/OnDemandReportRestHandler.kt +++ b/src/main/kotlin/org/opensearch/reportsscheduler/resthandler/OnDemandReportRestHandler.kt @@ -109,7 +109,8 @@ internal class OnDemandReportRestHandler : PluginBaseHandler() { client.execute( OnDemandReportCreateAction.ACTION_TYPE, OnDemandReportCreateRequest.parse( - request.contentParserNextToken(), request.param(REPORT_DEFINITION_ID_FIELD) + request.contentParserNextToken(), + request.param(REPORT_DEFINITION_ID_FIELD) ), RestResponseToXContentListener(it) ) diff --git a/src/main/kotlin/org/opensearch/reportsscheduler/settings/PluginSettings.kt b/src/main/kotlin/org/opensearch/reportsscheduler/settings/PluginSettings.kt index bb54852c..24ba1a62 100644 --- a/src/main/kotlin/org/opensearch/reportsscheduler/settings/PluginSettings.kt +++ b/src/main/kotlin/org/opensearch/reportsscheduler/settings/PluginSettings.kt @@ -117,26 +117,31 @@ internal object PluginSettings { OPERATION_TIMEOUT_MS_KEY, defaultSettings[OPERATION_TIMEOUT_MS_KEY]!!.toLong(), MINIMUM_OPERATION_TIMEOUT_MS, - NodeScope, Dynamic + NodeScope, + Dynamic ) private val DEFAULT_ITEMS_QUERY_COUNT: Setting = Setting.intSetting( DEFAULT_ITEMS_QUERY_COUNT_KEY, defaultSettings[DEFAULT_ITEMS_QUERY_COUNT_KEY]!!.toInt(), MINIMUM_ITEMS_QUERY_COUNT, - NodeScope, Dynamic + NodeScope, + Dynamic ) private val LEGACY_FILTER_BY_BACKEND_ROLES: Setting = Setting.boolSetting( LEGACY_FILTER_BY_BACKEND_ROLES_KEY, false, - NodeScope, Dynamic, Setting.Property.Deprecated + NodeScope, + Dynamic, + Setting.Property.Deprecated ) private val FILTER_BY_BACKEND_ROLES: Setting = Setting.boolSetting( FILTER_BY_BACKEND_ROLES_KEY, LEGACY_FILTER_BY_BACKEND_ROLES, - NodeScope, Dynamic + NodeScope, + Dynamic ) /** diff --git a/src/test/kotlin/org/opensearch/integTest/PluginRestTestCase.kt b/src/test/kotlin/org/opensearch/integTest/PluginRestTestCase.kt index 5e319f1b..b7e6c2eb 100644 --- a/src/test/kotlin/org/opensearch/integTest/PluginRestTestCase.kt +++ b/src/test/kotlin/org/opensearch/integTest/PluginRestTestCase.kt @@ -63,7 +63,8 @@ abstract class PluginRestTestCase : OpenSearchRestTestCase() { val response = client().performRequest(Request("GET", "/_cat/indices?format=json&expand_wildcards=all")) val xContentType = MediaType.fromMediaType(response.entity.contentType) xContentType.xContent().createParser( - NamedXContentRegistry.EMPTY, DeprecationHandler.THROW_UNSUPPORTED_OPERATION, + NamedXContentRegistry.EMPTY, + DeprecationHandler.THROW_UNSUPPORTED_OPERATION, response.entity.content ).use { parser -> for (index in parser.list()) { diff --git a/src/test/kotlin/org/opensearch/integTest/rest/ReportInstanceIT.kt b/src/test/kotlin/org/opensearch/integTest/rest/ReportInstanceIT.kt index 8ec9bfa0..4f6bc4f1 100644 --- a/src/test/kotlin/org/opensearch/integTest/rest/ReportInstanceIT.kt +++ b/src/test/kotlin/org/opensearch/integTest/rest/ReportInstanceIT.kt @@ -261,10 +261,12 @@ class ReportInstanceIT : PluginRestTestCase() { Assert.assertEquals(totalHits, 2) val reportInstanceList = listReportInstancesResponse.get("reportInstanceList").asJsonArray Assert.assertEquals( - reportInstanceId, reportInstanceList[0].asJsonObject.get("id").asString + reportInstanceId, + reportInstanceList[0].asJsonObject.get("id").asString ) Assert.assertEquals( - newReportInstanceId, reportInstanceList[1].asJsonObject.get("id").asString + newReportInstanceId, + reportInstanceList[1].asJsonObject.get("id").asString ) } @@ -514,10 +516,12 @@ class ReportInstanceIT : PluginRestTestCase() { Assert.assertEquals(totalHits, 2) val reportInstanceList = listReportInstancesResponse.get("reportInstanceList").asJsonArray Assert.assertEquals( - reportInstanceId, reportInstanceList[0].asJsonObject.get("id").asString + reportInstanceId, + reportInstanceList[0].asJsonObject.get("id").asString ) Assert.assertEquals( - newReportInstanceId, reportInstanceList[1].asJsonObject.get("id").asString + newReportInstanceId, + reportInstanceList[1].asJsonObject.get("id").asString ) } } diff --git a/src/test/kotlin/org/opensearch/reportsscheduler/model/GetAllReportInstancesResponseTests.kt b/src/test/kotlin/org/opensearch/reportsscheduler/model/GetAllReportInstancesResponseTests.kt index 747b7d56..c7fae73b 100644 --- a/src/test/kotlin/org/opensearch/reportsscheduler/model/GetAllReportInstancesResponseTests.kt +++ b/src/test/kotlin/org/opensearch/reportsscheduler/model/GetAllReportInstancesResponseTests.kt @@ -16,7 +16,6 @@ import org.opensearch.reportsscheduler.getJsonString internal class GetAllReportInstancesResponseTests { private fun createReportInstanceSearchResults(): ReportInstanceSearchResults { - return ReportInstanceSearchResults( startIndex = 0, totalHits = 100,