Skip to content

Commit f5e0270

Browse files
Hendrik Muhselasticmachine
Hendrik Muhs
andauthored
[Transform] add rolling upgrade tests for upgrade endpoint (#79721) (#80012)
add rolling upgrade tests for upgrade endpoint Co-authored-by: Elastic Machine <[email protected]>
1 parent 4231dce commit f5e0270

File tree

2 files changed

+29
-1
lines changed

2 files changed

+29
-1
lines changed

x-pack/qa/rolling-upgrade/src/test/java/org/elasticsearch/upgrades/TransformSurvivesUpgradeIT.java

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@
99
import org.apache.http.HttpHost;
1010
import org.apache.http.entity.ContentType;
1111
import org.apache.http.entity.StringEntity;
12+
import org.elasticsearch.Version;
1213
import org.elasticsearch.client.Request;
1314
import org.elasticsearch.client.Response;
1415
import org.elasticsearch.client.RestClient;
@@ -50,6 +51,7 @@
5051
import static org.elasticsearch.xpack.test.rest.XPackRestTestConstants.TRANSFORM_INTERNAL_INDEX_PREFIX;
5152
import static org.elasticsearch.xpack.test.rest.XPackRestTestConstants.TRANSFORM_INTERNAL_INDEX_PREFIX_DEPRECATED;
5253
import static org.elasticsearch.xpack.test.rest.XPackRestTestConstants.TRANSFORM_TASK_NAME;
54+
import static org.hamcrest.Matchers.containsString;
5355
import static org.hamcrest.Matchers.equalTo;
5456
import static org.hamcrest.Matchers.greaterThan;
5557
import static org.hamcrest.Matchers.greaterThanOrEqualTo;
@@ -108,10 +110,12 @@ public void testTransformRollingUpgrade() throws Exception {
108110
lastCheckpoint = 2;
109111
}
110112
verifyContinuousTransformHandlesData(lastCheckpoint);
113+
verifyUpgradeFailsIfMixedCluster();
111114
break;
112115
case UPGRADED:
113116
client().performRequest(waitForYellow);
114117
verifyContinuousTransformHandlesData(3);
118+
verifyUpgrade();
115119
cleanUpTransforms();
116120
break;
117121
default:
@@ -216,6 +220,23 @@ private void verifyContinuousTransformHandlesData(long expectedLastCheckpoint) t
216220
});
217221
}
218222

223+
private void verifyUpgradeFailsIfMixedCluster() {
224+
// upgrade tests by design are also executed with the same version, this check must be skipped in this case, see gh#39102.
225+
if (UPGRADE_FROM_VERSION.equals(Version.CURRENT)) {
226+
return;
227+
}
228+
final Request upgradeTransformRequest = new Request("POST", getTransformEndpoint() + "_upgrade");
229+
230+
Exception ex = expectThrows(Exception.class, () -> client().performRequest(upgradeTransformRequest));
231+
assertThat(ex.getMessage(), containsString("All nodes must be the same version"));
232+
}
233+
234+
private void verifyUpgrade() throws IOException {
235+
final Request upgradeTransformRequest = new Request("POST", getTransformEndpoint() + "_upgrade");
236+
Response response = client().performRequest(upgradeTransformRequest);
237+
assertEquals(200, response.getStatusLine().getStatusCode());
238+
}
239+
219240
private void awaitWrittenIndexerState(String id, Consumer<Map<?, ?>> responseAssertion) throws Exception {
220241
Request getStatsDocsRequest = new Request(
221242
"GET",

x-pack/qa/rolling-upgrade/src/test/resources/rest-api-spec/test/upgraded_cluster/80_transform_jobs_crud.yml

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@ setup:
66
# wait for long enough that we give delayed unassigned shards to stop being delayed
77
timeout: 70s
88
---
9-
"Get start, stop, and delete old cluster batch transform":
9+
"Get start, stop, upgrade and delete old cluster batch transform":
1010
# Simple and complex OLD transforms
1111
- do:
1212
transform.get_transform:
@@ -75,6 +75,13 @@ setup:
7575
- match: { count: 1 }
7676
- match: { transforms.0.id: "old-complex-transform" }
7777
- match: { transforms.0.state: "stopped" }
78+
79+
# upgrade transform
80+
# note: upgrade is not always required, therefore the output can not be tested
81+
- do:
82+
transform.upgrade_transforms:
83+
dry_run: false
84+
7885
# Delete old transform
7986
- do:
8087
transform.delete_transform:

0 commit comments

Comments
 (0)