Skip to content

Commit

Permalink
Fix integration test failure by allowing direct access to system inde…
Browse files Browse the repository at this point in the history
…x warning (#784) (#786)

* Fix integration test failure by allowing direct access to system index warning

Signed-off-by: gaobinlong <[email protected]>

* Fix bwc test failure of throwing direct access to system index when getting mapping

Signed-off-by: gaobinlong <[email protected]>

---------

Signed-off-by: gaobinlong <[email protected]>
(cherry picked from commit 0a7a5f9)
  • Loading branch information
gaobinlong authored Oct 12, 2023
1 parent ec00825 commit 5215bbd
Showing 1 changed file with 33 additions and 6 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -367,17 +367,44 @@ abstract class PluginRestTestCase : OpenSearchRestTestCase() {
}

protected fun getCurrentMappingsSchemaVersion(): Int {
val indexName = ".opensearch-notifications-config"
val getMappingRequest = Request(RestRequest.Method.GET.name, "$indexName/_mappings")
val options = RequestOptions.DEFAULT.toBuilder()
options.setWarningsHandler(PERMISSIVE)
getMappingRequest.options = options.build()
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<String> ->
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
}

// 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<String> ->
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 + "\""
Expand Down

0 comments on commit 5215bbd

Please sign in to comment.