From 6c154685ffc2cf4a38470983233981a6b57c29ee Mon Sep 17 00:00:00 2001 From: gaobinlong Date: Wed, 11 Oct 2023 16:59:49 +0800 Subject: [PATCH 1/2] Fix integration test failure by allowing direct access to system index warning Signed-off-by: gaobinlong --- .../integtest/PluginRestTestCase.kt | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) diff --git a/notifications/notifications/src/test/kotlin/org/opensearch/integtest/PluginRestTestCase.kt b/notifications/notifications/src/test/kotlin/org/opensearch/integtest/PluginRestTestCase.kt index cdfae6b0..73e153f9 100644 --- a/notifications/notifications/src/test/kotlin/org/opensearch/integtest/PluginRestTestCase.kt +++ b/notifications/notifications/src/test/kotlin/org/opensearch/integtest/PluginRestTestCase.kt @@ -380,6 +380,25 @@ abstract class PluginRestTestCase : OpenSearchRestTestCase() { ?: NotificationConfigIndex.DEFAULT_SCHEMA_VERSION } + // only refresh the notification config index to avoid too many warnings + @Throws(IOException::class) + override fun refreshAllIndices() { + val refreshRequest = Request("POST", NotificationConfigIndex.INDEX_NAME + "/_refresh") + val requestOptions = RequestOptions.DEFAULT.toBuilder() + // Allow direct access to system index warning + requestOptions.setWarningsHandler { warnings: List -> + if (warnings.isEmpty()) { + return@setWarningsHandler false + } else if (warnings.size > 1) { + return@setWarningsHandler true + } else { + return@setWarningsHandler !warnings[0].startsWith("this request accesses system indices:") + } + } + refreshRequest.setOptions(requestOptions) + client().performRequest(refreshRequest) + } + protected class ClusterSetting(val type: String, val name: String, var value: Any?) { init { this.value = if (value == null) "null" else "\"" + value + "\"" From 415148a12279e13c704d2d07c3de41d873d9c9af Mon Sep 17 00:00:00 2001 From: gaobinlong Date: Wed, 11 Oct 2023 18:03:16 +0800 Subject: [PATCH 2/2] Fix bwc test failure of throwing direct access to system index when getting mapping Signed-off-by: gaobinlong --- .../integtest/PluginRestTestCase.kt | 19 +++++++++++++++---- 1 file changed, 15 insertions(+), 4 deletions(-) diff --git a/notifications/notifications/src/test/kotlin/org/opensearch/integtest/PluginRestTestCase.kt b/notifications/notifications/src/test/kotlin/org/opensearch/integtest/PluginRestTestCase.kt index 73e153f9..56f0e342 100644 --- a/notifications/notifications/src/test/kotlin/org/opensearch/integtest/PluginRestTestCase.kt +++ b/notifications/notifications/src/test/kotlin/org/opensearch/integtest/PluginRestTestCase.kt @@ -372,10 +372,21 @@ abstract class PluginRestTestCase : OpenSearchRestTestCase() { } protected fun getCurrentMappingsSchemaVersion(): Int { - val indexName = ".opensearch-notifications-config" - val getMappingRequest = Request(RestRequest.Method.GET.name, "$indexName/_mappings") + val getMappingRequest = Request(RestRequest.Method.GET.name, "${NotificationConfigIndex.INDEX_NAME}/_mappings") + val requestOptions = RequestOptions.DEFAULT.toBuilder() + // Allow direct access to system index warning + requestOptions.setWarningsHandler { warnings: List -> + if (warnings.isEmpty()) { + return@setWarningsHandler false + } else if (warnings.size > 1) { + return@setWarningsHandler true + } else { + return@setWarningsHandler !warnings[0].startsWith("this request accesses system indices:") + } + } + getMappingRequest.setOptions(requestOptions) val response = executeRequest(getMappingRequest, RestStatus.OK.status, client()) - val mappingsObject = response.get(indexName).asJsonObject.get("mappings").asJsonObject + val mappingsObject = response.get(NotificationConfigIndex.INDEX_NAME).asJsonObject.get("mappings").asJsonObject return mappingsObject.get(NotificationConfigIndex._META)?.asJsonObject?.get(NotificationConfigIndex.SCHEMA_VERSION)?.asInt ?: NotificationConfigIndex.DEFAULT_SCHEMA_VERSION } @@ -383,7 +394,7 @@ abstract class PluginRestTestCase : OpenSearchRestTestCase() { // only refresh the notification config index to avoid too many warnings @Throws(IOException::class) override fun refreshAllIndices() { - val refreshRequest = Request("POST", NotificationConfigIndex.INDEX_NAME + "/_refresh") + val refreshRequest = Request("POST", "${NotificationConfigIndex.INDEX_NAME}/_refresh") val requestOptions = RequestOptions.DEFAULT.toBuilder() // Allow direct access to system index warning requestOptions.setWarningsHandler { warnings: List ->