Skip to content

Commit 57cc2cd

Browse files
Adding rest tests
Signed-off-by: Bharathwaj G <bharath78910@gmail.com>
1 parent 18c5be0 commit 57cc2cd

10 files changed

Lines changed: 114 additions & 36 deletions

File tree

CHANGELOG.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@ Inspired from [Keep a Changelog](https://keepachangelog.com/en/1.0.0/)
55
### Added
66
- Github workflow for changelog verification ([#4085](https://github.com/opensearch-project/OpenSearch/pull/4085))
77
- Point in time rest layer changes for create and delete PIT API ([#4064](https://github.com/opensearch-project/OpenSearch/pull/4064))
8+
- Point in time rest layer changes for list PIT and PIT segments API ([#4388](https://github.com/opensearch-project/OpenSearch/pull/4388))
89
- Added @dreamer-89 as an Opensearch maintainer ([#4342](https://github.com/opensearch-project/OpenSearch/pull/4342))
910
- Added release notes for 1.3.5 ([#4343](https://github.com/opensearch-project/OpenSearch/pull/4343))
1011
- Added release notes for 2.2.1 ([#4344](https://github.com/opensearch-project/OpenSearch/pull/4344))

client/rest-high-level/src/main/java/org/opensearch/client/RequestConverters.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -499,7 +499,7 @@ static Request deleteAllPits() {
499499
}
500500

501501
static Request getAllPits() {
502-
return new Request(HttpGet.METHOD_NAME, "/_search/point_in_time/all");
502+
return new Request(HttpGet.METHOD_NAME, "/_search/point_in_time/_all");
503503
}
504504

505505
static Request multiSearch(MultiSearchRequest multiSearchRequest) throws IOException {

client/rest-high-level/src/test/java/org/opensearch/client/Pit1IT.java renamed to client/rest-high-level/src/test/java/org/opensearch/client/PitIT.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,7 @@
3030
/**
3131
* Tests point in time API with rest high level client
3232
*/
33-
public class Pit1IT extends OpenSearchRestHighLevelClientTestCase {
33+
public class PitIT extends OpenSearchRestHighLevelClientTestCase {
3434

3535
@Before
3636
public void indexDocuments() throws IOException {
@@ -124,7 +124,7 @@ public void onFailure(Exception e) {
124124
highLevelClient().getAllPitsAsync(RequestOptions.DEFAULT, getPitsListener);
125125
highLevelClient().deleteAllPitsAsync(RequestOptions.DEFAULT, deletePitListener);
126126
// validate no pits case
127-
//highLevelClient().getAllPitsAsync(RequestOptions.DEFAULT, getPitsListener);
127+
highLevelClient().getAllPitsAsync(RequestOptions.DEFAULT, getPitsListener);
128128
highLevelClient().deleteAllPitsAsync(RequestOptions.DEFAULT, deletePitListener);
129129
}
130130
}
Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
{
2+
"get_all_pits":{
3+
"documentation":{
4+
"url":"https://opensearch.org/docs/latest/opensearch/rest-api/point_in_time/",
5+
"description":"Lists all active point in time searches."
6+
},
7+
"stability":"stable",
8+
"url":{
9+
"paths":[
10+
{
11+
"path":"/_search/point_in_time/_all",
12+
"methods":[
13+
"GET"
14+
]
15+
}
16+
]
17+
}
18+
}
19+
}

rest-api-spec/src/main/resources/rest-api-spec/test/pit/10_basic.yml

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -79,6 +79,12 @@
7979
- match: {hits.total: 3 }
8080
- length: {hits.hits: 1 }
8181

82+
- do:
83+
get_all_pits: {}
84+
85+
- match: {pits.0.pit_id: $pit_id}
86+
- match: {pits.0.keep_alive: 82800000 }
87+
8288
- do:
8389
delete_pit:
8490
body:
@@ -119,6 +125,12 @@
119125
- set: {pit_id: pit_id}
120126
- match: { _shards.failed: 0}
121127

128+
- do:
129+
get_all_pits: {}
130+
131+
- match: {pits.0.pit_id: $pit_id}
132+
- match: {pits.0.keep_alive: 82800000 }
133+
122134
- do:
123135
delete_all_pits: {}
124136

server/src/main/java/org/opensearch/action/search/GetAllPitNodesResponse.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -65,7 +65,7 @@ public GetAllPitNodesResponse(List<ListPitInfo> listPitInfos, GetAllPitNodesResp
6565
pitInfos.addAll(listPitInfos);
6666
}
6767

68-
public <E> GetAllPitNodesResponse(
68+
public GetAllPitNodesResponse(
6969
List<ListPitInfo> listPitInfos,
7070
ClusterName clusterName,
7171
List<GetAllPitNodeResponse> getAllPitNodeResponse,

server/src/main/java/org/opensearch/client/Client.java

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -64,6 +64,8 @@
6464
import org.opensearch.action.search.CreatePitResponse;
6565
import org.opensearch.action.search.DeletePitRequest;
6666
import org.opensearch.action.search.DeletePitResponse;
67+
import org.opensearch.action.search.GetAllPitNodesRequest;
68+
import org.opensearch.action.search.GetAllPitNodesResponse;
6769
import org.opensearch.action.search.MultiSearchRequest;
6870
import org.opensearch.action.search.MultiSearchRequestBuilder;
6971
import org.opensearch.action.search.MultiSearchResponse;
@@ -341,6 +343,8 @@ public interface Client extends OpenSearchClient, Releasable {
341343
*/
342344
void deletePits(DeletePitRequest deletePITRequest, ActionListener<DeletePitResponse> listener);
343345

346+
void getAllPits(GetAllPitNodesRequest getAllPitNodesRequest, ActionListener<GetAllPitNodesResponse> listener);
347+
344348
/**
345349
* Get information of segments of one or more PITs
346350
*/

server/src/main/java/org/opensearch/client/support/AbstractClient.java

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -335,6 +335,9 @@
335335
import org.opensearch.action.search.DeletePitAction;
336336
import org.opensearch.action.search.DeletePitRequest;
337337
import org.opensearch.action.search.DeletePitResponse;
338+
import org.opensearch.action.search.GetAllPitNodesRequest;
339+
import org.opensearch.action.search.GetAllPitNodesResponse;
340+
import org.opensearch.action.search.GetAllPitsAction;
338341
import org.opensearch.action.search.MultiSearchAction;
339342
import org.opensearch.action.search.MultiSearchRequest;
340343
import org.opensearch.action.search.MultiSearchRequestBuilder;
@@ -595,6 +598,11 @@ public void deletePits(final DeletePitRequest deletePITRequest, final ActionList
595598
execute(DeletePitAction.INSTANCE, deletePITRequest, listener);
596599
}
597600

601+
@Override
602+
public void getAllPits(final GetAllPitNodesRequest getAllPitNodesRequest, final ActionListener<GetAllPitNodesResponse> listener) {
603+
execute(GetAllPitsAction.INSTANCE, getAllPitNodesRequest, listener);
604+
}
605+
598606
@Override
599607
public void pitSegments(final PitSegmentsRequest request, final ActionListener<IndicesSegmentResponse> listener) {
600608
execute(PitSegmentsAction.INSTANCE, request, listener);

server/src/main/java/org/opensearch/rest/action/search/RestGetAllPitsAction.java

Lines changed: 21 additions & 32 deletions
Original file line numberDiff line numberDiff line change
@@ -9,10 +9,8 @@
99

1010
package org.opensearch.rest.action.search;
1111

12-
import org.opensearch.action.admin.cluster.state.ClusterStateRequest;
1312
import org.opensearch.action.search.GetAllPitNodesRequest;
1413
import org.opensearch.action.search.GetAllPitNodesResponse;
15-
import org.opensearch.action.search.GetAllPitsAction;
1614
import org.opensearch.client.node.NodeClient;
1715
import org.opensearch.common.xcontent.XContentBuilder;
1816
import org.opensearch.rest.BaseRestHandler;
@@ -40,45 +38,36 @@ public String getName() {
4038

4139
@Override
4240
protected RestChannelConsumer prepareRequest(RestRequest request, NodeClient client) throws IOException {
43-
final ClusterStateRequest clusterStateRequest = new ClusterStateRequest();
44-
clusterStateRequest.local(false);
45-
boolean includeAll = request.paramAsBoolean("include_all", false);
46-
clusterStateRequest.clusterManagerNodeTimeout(
47-
request.paramAsTime("cluster_manager_timeout", clusterStateRequest.clusterManagerNodeTimeout())
48-
);
49-
clusterStateRequest.clear().nodes(true).routingTable(true).indices("*");
5041
GetAllPitNodesRequest getAllPITNodesRequest = new GetAllPitNodesRequest();
51-
return channel -> client.execute(
52-
GetAllPitsAction.INSTANCE,
53-
getAllPITNodesRequest,
54-
new RestResponseListener<GetAllPitNodesResponse>(channel) {
55-
@Override
56-
public RestResponse buildResponse(final GetAllPitNodesResponse getAllPITNodesResponse) throws Exception {
57-
try (XContentBuilder builder = channel.newBuilder()) {
58-
builder.startObject();
59-
if (getAllPITNodesResponse.hasFailures()) {
60-
builder.startArray("failures");
61-
for (int idx = 0; idx < getAllPITNodesResponse.failures().size(); idx++) {
62-
builder.field(
63-
getAllPITNodesResponse.failures().get(idx).nodeId(),
64-
getAllPITNodesResponse.failures().get(idx).getDetailedMessage()
65-
);
66-
}
67-
builder.endArray();
42+
return channel -> client.getAllPits(getAllPITNodesRequest, new RestResponseListener<GetAllPitNodesResponse>(channel) {
43+
@Override
44+
public RestResponse buildResponse(final GetAllPitNodesResponse getAllPITNodesResponse) throws Exception {
45+
try (XContentBuilder builder = channel.newBuilder()) {
46+
builder.startObject();
47+
if (getAllPITNodesResponse.hasFailures()) {
48+
builder.startArray("failures");
49+
for (int idx = 0; idx < getAllPITNodesResponse.failures().size(); idx++) {
50+
builder.field(
51+
getAllPITNodesResponse.failures().get(idx).nodeId(),
52+
getAllPITNodesResponse.failures().get(idx).getDetailedMessage()
53+
);
6854
}
69-
builder.field("pits", getAllPITNodesResponse.getPitInfos());
70-
builder.endObject();
71-
if (getAllPITNodesResponse.getPitInfos().isEmpty()) return new BytesRestResponse(RestStatus.NOT_FOUND, builder);
72-
return new BytesRestResponse(RestStatus.OK, builder);
55+
builder.endArray();
7356
}
57+
builder.field("pits", getAllPITNodesResponse.getPitInfos());
58+
builder.endObject();
59+
if (getAllPITNodesResponse.getPitInfos().isEmpty()) {
60+
return new BytesRestResponse(RestStatus.NOT_FOUND, builder);
61+
}
62+
return new BytesRestResponse(RestStatus.OK, builder);
7463
}
7564
}
76-
);
65+
});
7766
}
7867

7968
@Override
8069
public List<Route> routes() {
81-
return unmodifiableList(Collections.singletonList(new Route(GET, "/_search/point_in_time/all")));
70+
return unmodifiableList(Collections.singletonList(new Route(GET, "/_search/point_in_time/_all")));
8271
}
8372

8473
}
Lines changed: 45 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,45 @@
1+
/*
2+
* SPDX-License-Identifier: Apache-2.0
3+
*
4+
* The OpenSearch Contributors require contributions made to
5+
* this file be licensed under the Apache-2.0 license or a
6+
* compatible open source license.
7+
*/
8+
9+
package org.opensearch.search.pit;
10+
11+
import org.apache.lucene.util.SetOnce;
12+
import org.opensearch.action.ActionListener;
13+
import org.opensearch.action.search.GetAllPitNodesRequest;
14+
import org.opensearch.action.search.GetAllPitNodesResponse;
15+
import org.opensearch.client.node.NodeClient;
16+
import org.opensearch.rest.RestRequest;
17+
import org.opensearch.rest.action.search.RestGetAllPitsAction;
18+
import org.opensearch.test.OpenSearchTestCase;
19+
import org.opensearch.test.client.NoOpNodeClient;
20+
import org.opensearch.test.rest.FakeRestChannel;
21+
import org.opensearch.test.rest.FakeRestRequest;
22+
23+
import static org.hamcrest.Matchers.equalTo;
24+
25+
/**
26+
* Tests for rest get all PITs action
27+
*/
28+
public class RestGetAllPitsActionTests extends OpenSearchTestCase {
29+
30+
public void testGetAllPits() throws Exception {
31+
SetOnce<Boolean> pitCalled = new SetOnce<>();
32+
try (NodeClient nodeClient = new NoOpNodeClient(this.getTestName()) {
33+
@Override
34+
public void getAllPits(GetAllPitNodesRequest request, ActionListener<GetAllPitNodesResponse> listener) {
35+
pitCalled.set(true);
36+
}
37+
}) {
38+
RestGetAllPitsAction action = new RestGetAllPitsAction();
39+
RestRequest request = new FakeRestRequest.Builder(xContentRegistry()).withPath("/_all").build();
40+
FakeRestChannel channel = new FakeRestChannel(request, false, 0);
41+
action.handleRequest(request, channel, nodeClient);
42+
assertThat(pitCalled.get(), equalTo(true));
43+
}
44+
}
45+
}

0 commit comments

Comments
 (0)