mirror of
https://github.com/honeymoose/OpenSearch.git
synced 2025-03-09 14:34:43 +00:00
Tests: Add rolling upgrade tests for watcher (#32428)
These tests ensure, that the basic watch APIs are tested in the rolling upgrade tests. After initially adding a watch, the tests try to get, execute, deactivate and activate a watch. Watcher stats are tested as well, and an own java based test has been added for restarting, as that requires waiting for a state change. Watcher history is also checked. Closes #31216
This commit is contained in:
parent
0d60e8a029
commit
f809d6fff4
@ -0,0 +1,48 @@
|
|||||||
|
/*
|
||||||
|
* 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.
|
||||||
|
*/
|
||||||
|
package org.elasticsearch.upgrades;
|
||||||
|
|
||||||
|
import org.apache.http.util.EntityUtils;
|
||||||
|
import org.elasticsearch.client.Request;
|
||||||
|
import org.elasticsearch.client.Response;
|
||||||
|
|
||||||
|
import java.nio.charset.StandardCharsets;
|
||||||
|
|
||||||
|
import static org.hamcrest.Matchers.containsString;
|
||||||
|
import static org.hamcrest.Matchers.not;
|
||||||
|
|
||||||
|
public class WatcherRestartIT extends AbstractUpgradeTestCase {
|
||||||
|
|
||||||
|
public void testWatcherRestart() throws Exception {
|
||||||
|
client().performRequest(new Request("POST", "/_xpack/watcher/_stop"));
|
||||||
|
ensureWatcherStopped();
|
||||||
|
|
||||||
|
client().performRequest(new Request("POST", "/_xpack/watcher/_start"));
|
||||||
|
ensureWatcherStarted();
|
||||||
|
}
|
||||||
|
|
||||||
|
private void ensureWatcherStopped() throws Exception {
|
||||||
|
assertBusy(() -> {
|
||||||
|
Response stats = client().performRequest(new Request("GET", "_xpack/watcher/stats"));
|
||||||
|
String responseBody = EntityUtils.toString(stats.getEntity(), StandardCharsets.UTF_8);
|
||||||
|
assertThat(responseBody, containsString("\"watcher_state\":\"stopped\""));
|
||||||
|
assertThat(responseBody, not(containsString("\"watcher_state\":\"starting\"")));
|
||||||
|
assertThat(responseBody, not(containsString("\"watcher_state\":\"started\"")));
|
||||||
|
assertThat(responseBody, not(containsString("\"watcher_state\":\"stopping\"")));
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
private void ensureWatcherStarted() throws Exception {
|
||||||
|
assertBusy(() -> {
|
||||||
|
Response response = client().performRequest(new Request("GET", "_xpack/watcher/stats"));
|
||||||
|
String responseBody = EntityUtils.toString(response.getEntity(), StandardCharsets.UTF_8);
|
||||||
|
assertThat(responseBody, containsString("\"watcher_state\":\"started\""));
|
||||||
|
assertThat(responseBody, not(containsString("\"watcher_state\":\"starting\"")));
|
||||||
|
assertThat(responseBody, not(containsString("\"watcher_state\":\"stopping\"")));
|
||||||
|
assertThat(responseBody, not(containsString("\"watcher_state\":\"stopped\"")));
|
||||||
|
});
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,74 @@
|
|||||||
|
---
|
||||||
|
"CRUD watch APIs":
|
||||||
|
|
||||||
|
# no need to put watch, exists already
|
||||||
|
- do:
|
||||||
|
xpack.watcher.get_watch:
|
||||||
|
id: "my_watch"
|
||||||
|
- match: { found : true}
|
||||||
|
- match: { _id: "my_watch" }
|
||||||
|
|
||||||
|
|
||||||
|
# execute watch
|
||||||
|
- do:
|
||||||
|
xpack.watcher.execute_watch:
|
||||||
|
id: "my_watch"
|
||||||
|
body: >
|
||||||
|
{
|
||||||
|
"record_execution" : true
|
||||||
|
}
|
||||||
|
- set: { _id : record_id }
|
||||||
|
- match: { watch_record.watch_id: "my_watch" }
|
||||||
|
- match: { watch_record.trigger_event.type: "manual" }
|
||||||
|
- match: { watch_record.state: "executed" }
|
||||||
|
- match: { watch_record.status.execution_state: "executed" }
|
||||||
|
- match: { watch_record.status.state.active: true }
|
||||||
|
|
||||||
|
# check watch history entry
|
||||||
|
- do:
|
||||||
|
indices.refresh:
|
||||||
|
index: .watcher-history-*
|
||||||
|
|
||||||
|
- do:
|
||||||
|
search:
|
||||||
|
index: .watcher-history-*
|
||||||
|
body:
|
||||||
|
{
|
||||||
|
"query" : { "term" : { "_id" : "$record_id" } }
|
||||||
|
}
|
||||||
|
- match: { hits.total: 1 }
|
||||||
|
|
||||||
|
# deactivate watch, check with GET API as well
|
||||||
|
- do:
|
||||||
|
xpack.watcher.deactivate_watch:
|
||||||
|
watch_id: "my_watch"
|
||||||
|
- match: { status.state.active : false }
|
||||||
|
|
||||||
|
- do:
|
||||||
|
xpack.watcher.get_watch:
|
||||||
|
id: "my_watch"
|
||||||
|
- match: { found : true}
|
||||||
|
- match: { _id: "my_watch" }
|
||||||
|
- match: { status.state.active: false }
|
||||||
|
|
||||||
|
|
||||||
|
# activate watch again, check with GET API as well
|
||||||
|
- do:
|
||||||
|
xpack.watcher.activate_watch:
|
||||||
|
watch_id: "my_watch"
|
||||||
|
- match: { status.state.active : true }
|
||||||
|
|
||||||
|
- do:
|
||||||
|
xpack.watcher.get_watch:
|
||||||
|
id: "my_watch"
|
||||||
|
- match: { found : true}
|
||||||
|
- match: { _id: "my_watch" }
|
||||||
|
- match: { status.state.active: true }
|
||||||
|
|
||||||
|
|
||||||
|
---
|
||||||
|
"Test watcher stats output":
|
||||||
|
- do:
|
||||||
|
xpack.watcher.stats: {}
|
||||||
|
- match: { "manually_stopped": false }
|
||||||
|
- match: { "stats.0.watcher_state": "started" }
|
@ -0,0 +1,94 @@
|
|||||||
|
---
|
||||||
|
"CRUD watch APIs":
|
||||||
|
|
||||||
|
- do:
|
||||||
|
xpack.watcher.put_watch:
|
||||||
|
id: "my_watch"
|
||||||
|
body: >
|
||||||
|
{
|
||||||
|
"trigger": {
|
||||||
|
"schedule" : { "cron" : "0 0 0 1 * ? 2099" }
|
||||||
|
},
|
||||||
|
"input": {
|
||||||
|
"simple": {}
|
||||||
|
},
|
||||||
|
"actions": {
|
||||||
|
"logging": {
|
||||||
|
"logging": {
|
||||||
|
"text": "my logging action"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
- match: { _id: "my_watch" }
|
||||||
|
|
||||||
|
- do:
|
||||||
|
xpack.watcher.get_watch:
|
||||||
|
id: "my_watch"
|
||||||
|
- match: { found : true}
|
||||||
|
- match: { _id: "my_watch" }
|
||||||
|
|
||||||
|
|
||||||
|
# execute watch
|
||||||
|
- do:
|
||||||
|
xpack.watcher.execute_watch:
|
||||||
|
id: "my_watch"
|
||||||
|
body: >
|
||||||
|
{
|
||||||
|
"record_execution" : true
|
||||||
|
}
|
||||||
|
- set: { _id : record_id }
|
||||||
|
- match: { watch_record.watch_id: "my_watch" }
|
||||||
|
- match: { watch_record.trigger_event.type: "manual" }
|
||||||
|
- match: { watch_record.state: "executed" }
|
||||||
|
- match: { watch_record.status.execution_state: "executed" }
|
||||||
|
- match: { watch_record.status.state.active: true }
|
||||||
|
|
||||||
|
# check watch history entry
|
||||||
|
- do:
|
||||||
|
indices.refresh:
|
||||||
|
index: .watcher-history-*
|
||||||
|
|
||||||
|
- do:
|
||||||
|
search:
|
||||||
|
index: .watcher-history-*
|
||||||
|
body:
|
||||||
|
{
|
||||||
|
"query" : { "term" : { "_id" : "$record_id" } }
|
||||||
|
}
|
||||||
|
- match: { hits.total: 1 }
|
||||||
|
|
||||||
|
# deactivate watch, check with GET API as well
|
||||||
|
- do:
|
||||||
|
xpack.watcher.deactivate_watch:
|
||||||
|
watch_id: "my_watch"
|
||||||
|
- match: { status.state.active : false }
|
||||||
|
|
||||||
|
- do:
|
||||||
|
xpack.watcher.get_watch:
|
||||||
|
id: "my_watch"
|
||||||
|
- match: { found : true}
|
||||||
|
- match: { _id: "my_watch" }
|
||||||
|
- match: { status.state.active: false }
|
||||||
|
|
||||||
|
|
||||||
|
# activate watch again, check with GET API as well
|
||||||
|
- do:
|
||||||
|
xpack.watcher.activate_watch:
|
||||||
|
watch_id: "my_watch"
|
||||||
|
- match: { status.state.active : true }
|
||||||
|
|
||||||
|
- do:
|
||||||
|
xpack.watcher.get_watch:
|
||||||
|
id: "my_watch"
|
||||||
|
- match: { found : true}
|
||||||
|
- match: { _id: "my_watch" }
|
||||||
|
- match: { status.state.active: true }
|
||||||
|
|
||||||
|
|
||||||
|
---
|
||||||
|
"Test watcher stats output":
|
||||||
|
- do:
|
||||||
|
xpack.watcher.stats: {}
|
||||||
|
- match: { "manually_stopped": false }
|
||||||
|
- match: { "stats.0.watcher_state": "started" }
|
@ -0,0 +1,73 @@
|
|||||||
|
---
|
||||||
|
"CRUD watch APIs":
|
||||||
|
|
||||||
|
# no need to put watch, exists already
|
||||||
|
- do:
|
||||||
|
xpack.watcher.get_watch:
|
||||||
|
id: "my_watch"
|
||||||
|
- match: { found : true}
|
||||||
|
- match: { _id: "my_watch" }
|
||||||
|
|
||||||
|
|
||||||
|
# execute watch
|
||||||
|
- do:
|
||||||
|
xpack.watcher.execute_watch:
|
||||||
|
id: "my_watch"
|
||||||
|
body: >
|
||||||
|
{
|
||||||
|
"record_execution" : true
|
||||||
|
}
|
||||||
|
- set: { _id : record_id }
|
||||||
|
- match: { watch_record.watch_id: "my_watch" }
|
||||||
|
- match: { watch_record.trigger_event.type: "manual" }
|
||||||
|
- match: { watch_record.state: "executed" }
|
||||||
|
- match: { watch_record.status.execution_state: "executed" }
|
||||||
|
- match: { watch_record.status.state.active: true }
|
||||||
|
|
||||||
|
# check watch history entry
|
||||||
|
- do:
|
||||||
|
indices.refresh:
|
||||||
|
index: .watcher-history-*
|
||||||
|
|
||||||
|
- do:
|
||||||
|
search:
|
||||||
|
index: .watcher-history-*
|
||||||
|
body:
|
||||||
|
{
|
||||||
|
"query" : { "term" : { "_id" : "$record_id" } }
|
||||||
|
}
|
||||||
|
- match: { hits.total: 1 }
|
||||||
|
|
||||||
|
# deactivate watch, check with GET API as well
|
||||||
|
- do:
|
||||||
|
xpack.watcher.deactivate_watch:
|
||||||
|
watch_id: "my_watch"
|
||||||
|
- match: { status.state.active : false }
|
||||||
|
|
||||||
|
- do:
|
||||||
|
xpack.watcher.get_watch:
|
||||||
|
id: "my_watch"
|
||||||
|
- match: { found : true}
|
||||||
|
- match: { _id: "my_watch" }
|
||||||
|
- match: { status.state.active: false }
|
||||||
|
|
||||||
|
|
||||||
|
# activate watch again, check with GET API as well
|
||||||
|
- do:
|
||||||
|
xpack.watcher.activate_watch:
|
||||||
|
watch_id: "my_watch"
|
||||||
|
- match: { status.state.active : true }
|
||||||
|
|
||||||
|
- do:
|
||||||
|
xpack.watcher.get_watch:
|
||||||
|
id: "my_watch"
|
||||||
|
- match: { found : true}
|
||||||
|
- match: { _id: "my_watch" }
|
||||||
|
- match: { status.state.active: true }
|
||||||
|
|
||||||
|
---
|
||||||
|
"Test watcher stats output":
|
||||||
|
- do:
|
||||||
|
xpack.watcher.stats: {}
|
||||||
|
- match: { "manually_stopped": false }
|
||||||
|
- match: { "stats.0.watcher_state": "started" }
|
Loading…
x
Reference in New Issue
Block a user