This is an automated email from the ASF dual-hosted git repository.

xyuanlu pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/helix.git

commit 7feb732299f1fa3cb56eae254ff49276fa9b51a5
Author: Zachary Pinto <[email protected]>
AuthorDate: Fri Nov 10 08:56:13 2023 -0800

    Change canCompleteSwap and completeSwapIfPossible to return json with kv 
pair for result of check or attempt to complete swap. (#2697)
---
 .../server/resources/helix/PerInstanceAccessor.java  | 12 ++++--------
 .../helix/rest/server/TestPerInstanceAccessor.java   | 20 ++++++++++++++++++++
 2 files changed, 24 insertions(+), 8 deletions(-)

diff --git 
a/helix-rest/src/main/java/org/apache/helix/rest/server/resources/helix/PerInstanceAccessor.java
 
b/helix-rest/src/main/java/org/apache/helix/rest/server/resources/helix/PerInstanceAccessor.java
index b920f66ce..b1b4f8264 100644
--- 
a/helix-rest/src/main/java/org/apache/helix/rest/server/resources/helix/PerInstanceAccessor.java
+++ 
b/helix-rest/src/main/java/org/apache/helix/rest/server/resources/helix/PerInstanceAccessor.java
@@ -436,15 +436,11 @@ public class PerInstanceAccessor extends 
AbstractHelixResource {
           admin.setInstanceOperation(clusterId, instanceName, state);
           break;
         case canCompleteSwap:
-          if (!admin.canCompleteSwap(clusterId, instanceName)) {
-            return badRequest("Swap is not ready to be completed!");
-          }
-          break;
+          return OK(OBJECT_MAPPER.writeValueAsString(
+              Map.of("successful", admin.canCompleteSwap(clusterId, 
instanceName))));
         case completeSwapIfPossible:
-          if (!admin.completeSwapIfPossible(clusterId, instanceName)) {
-            return badRequest("Swap is not ready to be completed!");
-          }
-          break;
+          return OK(OBJECT_MAPPER.writeValueAsString(
+              Map.of("successful", admin.completeSwapIfPossible(clusterId, 
instanceName))));
         case addInstanceTag:
           if (!validInstance(node, instanceName)) {
             return badRequest("Instance names are not match!");
diff --git 
a/helix-rest/src/test/java/org/apache/helix/rest/server/TestPerInstanceAccessor.java
 
b/helix-rest/src/test/java/org/apache/helix/rest/server/TestPerInstanceAccessor.java
index 273019bd3..a8675202a 100644
--- 
a/helix-rest/src/test/java/org/apache/helix/rest/server/TestPerInstanceAccessor.java
+++ 
b/helix-rest/src/test/java/org/apache/helix/rest/server/TestPerInstanceAccessor.java
@@ -501,6 +501,26 @@ public class TestPerInstanceAccessor extends 
AbstractTestClass {
     instanceConfig = _configAccessor.getInstanceConfig(CLUSTER_NAME, 
INSTANCE_NAME);
     Assert.assertEquals(
         instanceConfig.getInstanceOperation(), "");
+
+    // test canCompleteSwap
+    Response canCompleteSwapResponse =
+        new 
JerseyUriRequestBuilder("clusters/{}/instances/{}?command=canCompleteSwap").format(
+            CLUSTER_NAME, INSTANCE_NAME).post(this, entity);
+    Assert.assertEquals(canCompleteSwapResponse.getStatus(), 
Response.Status.OK.getStatusCode());
+    Map<String, Object> responseMap =
+        
OBJECT_MAPPER.readValue(canCompleteSwapResponse.readEntity(String.class), 
Map.class);
+    Assert.assertFalse((boolean) responseMap.get("successful"));
+
+    // test completeSwapIfPossible
+    Response completeSwapIfPossibleResponse = new JerseyUriRequestBuilder(
+        
"clusters/{}/instances/{}?command=completeSwapIfPossible").format(CLUSTER_NAME,
+        INSTANCE_NAME).post(this, entity);
+    Assert.assertEquals(completeSwapIfPossibleResponse.getStatus(),
+        Response.Status.OK.getStatusCode());
+    responseMap =
+        
OBJECT_MAPPER.readValue(completeSwapIfPossibleResponse.readEntity(String.class),
 Map.class);
+    Assert.assertFalse((boolean) responseMap.get("successful"));
+
     System.out.println("End test :" + TestHelper.getTestMethodName());
   }
 

Reply via email to