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

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


The following commit(s) were added to refs/heads/master by this push:
     new ffc72b1019 Add @JsonProperty annotation to LeadControllerEntry & 
LeadControllerResponse (#13950)
ffc72b1019 is described below

commit ffc72b1019079b0e716b274af74ae3f9bfee7098
Author: Chaitanya Deepthi <45308220+deepthi...@users.noreply.github.com>
AuthorDate: Mon Sep 9 20:45:38 2024 -0400

    Add @JsonProperty annotation to LeadControllerEntry & 
LeadControllerResponse (#13950)
---
 .../utils/SegmentsReloadCheckResponseTest.java     |  90 -------
 .../PinotLeadControllerRestletResource.java        |  17 +-
 .../pinot/controller/util/JsonSerializerTest.java  | 283 +++++++++++++++++++++
 3 files changed, 294 insertions(+), 96 deletions(-)

diff --git 
a/pinot-common/src/test/java/org/apache/pinot/common/utils/SegmentsReloadCheckResponseTest.java
 
b/pinot-common/src/test/java/org/apache/pinot/common/utils/SegmentsReloadCheckResponseTest.java
deleted file mode 100644
index f63a607a12..0000000000
--- 
a/pinot-common/src/test/java/org/apache/pinot/common/utils/SegmentsReloadCheckResponseTest.java
+++ /dev/null
@@ -1,90 +0,0 @@
-/**
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *   http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied.  See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-package org.apache.pinot.common.utils;
-
-import com.fasterxml.jackson.core.type.TypeReference;
-import com.fasterxml.jackson.databind.JsonNode;
-import java.io.IOException;
-import java.util.HashMap;
-import java.util.Map;
-import 
org.apache.pinot.common.restlet.resources.ServerSegmentsReloadCheckResponse;
-import 
org.apache.pinot.common.restlet.resources.TableSegmentsReloadCheckResponse;
-import org.apache.pinot.spi.utils.JsonUtils;
-import org.testng.annotations.Test;
-
-import static org.testng.Assert.assertEquals;
-import static org.testng.Assert.assertFalse;
-import static org.testng.Assert.assertNotNull;
-import static org.testng.Assert.assertTrue;
-
-
-/**
- * Tests some of the serializer and deserialization responses from 
SegmentsReloadCheckResponse class
- * needReload will have to be carefully evaluated
- */
-public class SegmentsReloadCheckResponseTest {
-
-  @Test
-  public void testSerialization()
-      throws IOException {
-    // Given
-    boolean needReload = true;
-    String instanceId = "instance123";
-    ServerSegmentsReloadCheckResponse response = new 
ServerSegmentsReloadCheckResponse(needReload, instanceId);
-    Map<String, ServerSegmentsReloadCheckResponse> serversResponse = new 
HashMap<>();
-    serversResponse.put(instanceId, response);
-    TableSegmentsReloadCheckResponse tableResponse = new 
TableSegmentsReloadCheckResponse(needReload, serversResponse);
-    String responseString = JsonUtils.objectToPrettyString(response);
-    String tableResponseString = JsonUtils.objectToPrettyString(tableResponse);
-
-    assertNotNull(responseString);
-    assertNotNull(tableResponseString);
-    JsonNode tableResponseJsonNode = 
JsonUtils.stringToJsonNode(tableResponseString);
-    assertTrue(tableResponseJsonNode.get("needReload").asBoolean());
-
-    JsonNode serversList = 
tableResponseJsonNode.get("serverToSegmentsCheckReloadList");
-    JsonNode serverResp = serversList.get("instance123");
-    assertEquals(serverResp.get("instanceId").asText(), "instance123");
-    assertTrue(serverResp.get("needReload").asBoolean());
-
-    assertEquals("{\n" + "  \"needReload\" : true,\n" + "  
\"serverToSegmentsCheckReloadList\" : {\n"
-        + "    \"instance123\" : {\n" + "      \"needReload\" : true,\n" + "   
   \"instanceId\" : \"instance123\"\n"
-        + "    }\n" + "  }\n" + "}", tableResponseString);
-    assertEquals("{\n" + "  \"needReload\" : true,\n" + "  \"instanceId\" : 
\"instance123\"\n" + "}", responseString);
-  }
-
-  @Test
-  public void testDeserialization()
-      throws Exception {
-    String jsonResponse = "{\n" + "  \"needReload\": false,\n" + "  
\"serverToSegmentsCheckReloadList\": {\n"
-        + "    \"Server_10.0.0.215_7050\": {\n" + "      \"needReload\": 
false,\n"
-        + "      \"instanceId\": \"Server_10.0.0.215_7050\"\n" + "    }\n" + " 
 }\n" + "}";
-    JsonNode jsonNode = JsonUtils.stringToJsonNode(jsonResponse);
-    TableSegmentsReloadCheckResponse tableReloadResponse =
-        JsonUtils.stringToObject(jsonResponse, new 
TypeReference<TableSegmentsReloadCheckResponse>() {
-        });
-    // Then
-    assertNotNull(jsonNode);
-    assertFalse(tableReloadResponse.isNeedReload());
-    assertNotNull(tableReloadResponse.getServerToSegmentsCheckReloadList());
-    Map<String, ServerSegmentsReloadCheckResponse> serverSegmentReloadResp =
-        tableReloadResponse.getServerToSegmentsCheckReloadList();
-    
assertEquals(serverSegmentReloadResp.get("Server_10.0.0.215_7050").isNeedReload(),
 false);
-  }
-}
diff --git 
a/pinot-controller/src/main/java/org/apache/pinot/controller/api/resources/PinotLeadControllerRestletResource.java
 
b/pinot-controller/src/main/java/org/apache/pinot/controller/api/resources/PinotLeadControllerRestletResource.java
index 953bef41c7..709bd39a2f 100644
--- 
a/pinot-controller/src/main/java/org/apache/pinot/controller/api/resources/PinotLeadControllerRestletResource.java
+++ 
b/pinot-controller/src/main/java/org/apache/pinot/controller/api/resources/PinotLeadControllerRestletResource.java
@@ -193,7 +193,8 @@ public class PinotLeadControllerRestletResource {
     private List<String> _tableNames;
 
     @JsonCreator
-    public LeadControllerEntry(String leadControllerId, List<String> 
tableNames) {
+    public LeadControllerEntry(@JsonProperty("leadControllerId") String 
leadControllerId,
+        @JsonProperty("tableNames") List<String> tableNames) {
       _leadControllerId = leadControllerId;
       _tableNames = tableNames;
     }
@@ -211,18 +212,22 @@ public class PinotLeadControllerRestletResource {
 
   @JsonIgnoreProperties(ignoreUnknown = true)
   public static class LeadControllerResponse {
-    private boolean _isLeadControllerResourceEnabled;
+    @JsonProperty("leadControllerResourceEnabled")
+    private boolean _leadControllerResourceEnabled;
+
+    @JsonProperty("leadControllerEntryMap")
     private Map<String, LeadControllerEntry> _leadControllerEntryMap;
 
     @JsonCreator
-    public LeadControllerResponse(boolean isLeadControllerResourceEnabled,
-        Map<String, LeadControllerEntry> leadControllerEntryMap) {
-      _isLeadControllerResourceEnabled = isLeadControllerResourceEnabled;
+    public LeadControllerResponse(
+        @JsonProperty("leadControllerResourceEnabled") boolean 
leadControllerResourceEnabled,
+        @JsonProperty("leadControllerEntryMap") Map<String, 
LeadControllerEntry> leadControllerEntryMap) {
+      _leadControllerResourceEnabled = leadControllerResourceEnabled;
       _leadControllerEntryMap = leadControllerEntryMap;
     }
 
     public boolean isLeadControllerResourceEnabled() {
-      return _isLeadControllerResourceEnabled;
+      return _leadControllerResourceEnabled;
     }
 
     public Map<String, LeadControllerEntry> getLeadControllerEntryMap() {
diff --git 
a/pinot-controller/src/test/java/org/apache/pinot/controller/util/JsonSerializerTest.java
 
b/pinot-controller/src/test/java/org/apache/pinot/controller/util/JsonSerializerTest.java
new file mode 100644
index 0000000000..e89686aa28
--- /dev/null
+++ 
b/pinot-controller/src/test/java/org/apache/pinot/controller/util/JsonSerializerTest.java
@@ -0,0 +1,283 @@
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.apache.pinot.controller.util;
+
+import com.fasterxml.jackson.core.type.TypeReference;
+import com.fasterxml.jackson.databind.JsonNode;
+import java.io.IOException;
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+import 
org.apache.pinot.common.restlet.resources.ServerSegmentsReloadCheckResponse;
+import 
org.apache.pinot.common.restlet.resources.TableSegmentsReloadCheckResponse;
+import 
org.apache.pinot.controller.api.resources.PinotLeadControllerRestletResource;
+import org.apache.pinot.spi.utils.JsonUtils;
+import org.testng.annotations.Test;
+
+import static org.testng.Assert.assertEquals;
+import static org.testng.Assert.assertFalse;
+import static org.testng.Assert.assertNotNull;
+import static org.testng.Assert.assertTrue;
+
+
+/**
+ * Test class to check for json responses during serialization and 
deserialization
+ */
+public class JsonSerializerTest {
+  @Test
+  public void testTableReloadResponseSerialization()
+      throws IOException {
+    boolean needReload = true;
+    String instanceId = "instance123";
+    ServerSegmentsReloadCheckResponse response = new 
ServerSegmentsReloadCheckResponse(needReload, instanceId);
+    Map<String, ServerSegmentsReloadCheckResponse> serversResponse = new 
HashMap<>();
+    serversResponse.put(instanceId, response);
+    TableSegmentsReloadCheckResponse tableResponse = new 
TableSegmentsReloadCheckResponse(needReload, serversResponse);
+    String responseString = JsonUtils.objectToPrettyString(response);
+    String tableResponseString = JsonUtils.objectToPrettyString(tableResponse);
+
+    assertNotNull(responseString);
+    assertNotNull(tableResponseString);
+    JsonNode tableResponseJsonNode = 
JsonUtils.stringToJsonNode(tableResponseString);
+    assertTrue(tableResponseJsonNode.get("needReload").asBoolean());
+
+    JsonNode serversList = 
tableResponseJsonNode.get("serverToSegmentsCheckReloadList");
+    JsonNode serverResp = serversList.get("instance123");
+    assertEquals(serverResp.get("instanceId").asText(), "instance123");
+    assertTrue(serverResp.get("needReload").asBoolean());
+    //@formatter:off
+    assertEquals("{\n"
+        + "  \"needReload\" : true,\n"
+        + "  \"serverToSegmentsCheckReloadList\" : {\n"
+        + "    \"instance123\" : {\n"
+        + "      \"needReload\" : true,\n"
+        + "      \"instanceId\" : \"instance123\"\n"
+        + "    }\n"
+        + "  }\n"
+        + "}", tableResponseString);
+    assertEquals("{\n"
+        + "  \"needReload\" : true,\n"
+        + "  \"instanceId\" : \"instance123\"\n"
+        + "}", responseString);
+    //@formatter:on
+  }
+
+  @Test
+  public void testTableReloadResponseDeserialization()
+      throws Exception {
+    //@formatter:off
+    String jsonResponse = "{\n"
+        + "  \"needReload\": false,\n"
+        + "  \"serverToSegmentsCheckReloadList\": {\n"
+        + "    \"Server_10.0.0.215_7050\": {\n"
+        + "      \"needReload\": false,\n"
+        + "      \"instanceId\": \"Server_10.0.0.215_7050\"\n"
+        + "    }\n"
+        + "  }\n"
+        + "}\n";
+    //@formatter:on
+    JsonNode jsonNode = JsonUtils.stringToJsonNode(jsonResponse);
+    TableSegmentsReloadCheckResponse tableReloadResponse =
+        JsonUtils.stringToObject(jsonResponse, new 
TypeReference<TableSegmentsReloadCheckResponse>() {
+        });
+    assertNotNull(jsonNode);
+    assertFalse(tableReloadResponse.isNeedReload());
+    assertNotNull(tableReloadResponse.getServerToSegmentsCheckReloadList());
+    Map<String, ServerSegmentsReloadCheckResponse> serverSegmentReloadResp =
+        tableReloadResponse.getServerToSegmentsCheckReloadList();
+    
assertEquals(serverSegmentReloadResp.get("Server_10.0.0.215_7050").isNeedReload(),
 false);
+  }
+
+  @Test
+  public void testLeadControllerResponseSerialization()
+      throws IOException {
+    boolean leadControllerResourceEnabled = true;
+    Map<String, PinotLeadControllerRestletResource.LeadControllerEntry> 
leadControllerEntryMap = new HashMap<>();
+    List<String> tableNames = new ArrayList<>();
+    tableNames.add("fineFoodReviews_OFFLINE");
+    tableNames.add("dimBaseballTeams_OFFLINE");
+    PinotLeadControllerRestletResource.LeadControllerEntry leadControllerEntry 
=
+        new 
PinotLeadControllerRestletResource.LeadControllerEntry("Controller_192.168.1.148_9000",
 tableNames);
+    leadControllerEntryMap.put("leadControllerResource_0", 
leadControllerEntry);
+    PinotLeadControllerRestletResource.LeadControllerResponse 
leadControllerResponse =
+        new 
PinotLeadControllerRestletResource.LeadControllerResponse(leadControllerResourceEnabled,
+            leadControllerEntryMap);
+    String leaderControllerRespStr = 
JsonUtils.objectToPrettyString(leadControllerResponse);
+    String leadControllerEntryRespStr = 
JsonUtils.objectToPrettyString(leadControllerEntry);
+    //@formatter:off
+    assertEquals("{\n"
+        + "  \"leadControllerResourceEnabled\" : true,\n"
+        + "  \"leadControllerEntryMap\" : {\n"
+        + "    \"leadControllerResource_0\" : {\n"
+        + "      \"leadControllerId\" : \"Controller_192.168.1.148_9000\",\n"
+        + "      \"tableNames\" : [ \"fineFoodReviews_OFFLINE\", 
\"dimBaseballTeams_OFFLINE\" ]\n"
+        + "    }\n"
+        + "  }\n"
+        + "}", leaderControllerRespStr);
+    assertEquals("{\n"
+            + "  \"leadControllerId\" : \"Controller_192.168.1.148_9000\",\n"
+            + "  \"tableNames\" : [ \"fineFoodReviews_OFFLINE\", 
\"dimBaseballTeams_OFFLINE\" ]\n"
+            + "}",
+        leadControllerEntryRespStr);
+    //@formatter:on
+    assertNotNull(leaderControllerRespStr);
+    assertNotNull(leadControllerEntryRespStr);
+    JsonNode leadControllerRespNodeStr = 
JsonUtils.stringToJsonNode(leaderControllerRespStr);
+    JsonNode leadControllerEntryRespNodeStr = 
JsonUtils.stringToJsonNode(leadControllerEntryRespStr);
+
+    
assertTrue(leadControllerRespNodeStr.get("leadControllerResourceEnabled").asBoolean());
+    JsonNode controllerEntryMap = 
leadControllerRespNodeStr.get("leadControllerEntryMap");
+    JsonNode controllerEntry = 
controllerEntryMap.get("leadControllerResource_0");
+    assertEquals(controllerEntry.get("leadControllerId").asText(), 
"Controller_192.168.1.148_9000");
+    assertEquals(controllerEntry.get("tableNames").size(), 2);
+    PinotLeadControllerRestletResource.LeadControllerEntry tableReloadResponse 
=
+        JsonUtils.stringToObject(leadControllerEntryRespStr, new 
TypeReference<>() {
+        });
+    assertEquals(tableReloadResponse.getLeadControllerId(), 
"Controller_192.168.1.148_9000");
+    assertEquals(tableReloadResponse.getTableNames().size(), 2);
+    
assertTrue(tableReloadResponse.getTableNames().contains("fineFoodReviews_OFFLINE"));
+    
assertTrue(tableReloadResponse.getTableNames().contains("dimBaseballTeams_OFFLINE"));
+  }
+
+  @Test
+  public void testLeadControllerResponseDeserialization()
+      throws Exception {
+    //@formatter:off
+    String jsonResponse = "{\n"
+        + "  \"leadControllerResourceEnabled\": true,\n"
+        + "  \"leadControllerEntryMap\": {\n"
+        + "    \"leadControllerResource_0\": {\n"
+        + "      \"leadControllerId\": \"Controller_192.168.1.148_9000\",\n"
+        + "      \"tableNames\": []\n"
+        + "    },\n"
+        + "    \"leadControllerResource_1\": {\n"
+        + "      \"leadControllerId\": \"Controller_192.168.1.148_9000\",\n"
+        + "      \"tableNames\": []\n"
+        + "    },\n"
+        + "    \"leadControllerResource_2\": {\n"
+        + "      \"leadControllerId\": \"Controller_192.168.1.148_9000\",\n"
+        + "      \"tableNames\": []\n"
+        + "    },\n"
+        + "    \"leadControllerResource_3\": {\n"
+        + "      \"leadControllerId\": \"Controller_192.168.1.148_9000\",\n"
+        + "      \"tableNames\": []\n"
+        + "    },\n"
+        + "    \"leadControllerResource_4\": {\n"
+        + "      \"leadControllerId\": \"Controller_192.168.1.148_9000\",\n"
+        + "      \"tableNames\": []\n"
+        + "    },\n"
+        + "    \"leadControllerResource_5\": {\n"
+        + "      \"leadControllerId\": \"Controller_192.168.1.148_9000\",\n"
+        + "      \"tableNames\": []\n"
+        + "    },\n"
+        + "    \"leadControllerResource_6\": {\n"
+        + "      \"leadControllerId\": \"Controller_192.168.1.148_9000\",\n"
+        + "      \"tableNames\": []\n"
+        + "    },\n"
+        + "    \"leadControllerResource_7\": {\n"
+        + "      \"leadControllerId\": \"Controller_192.168.1.148_9000\",\n"
+        + "      \"tableNames\": [\n"
+        + "        \"baseballStats_OFFLINE\"\n"
+        + "      ]\n"
+        + "    },\n"
+        + "    \"leadControllerResource_8\": {\n"
+        + "      \"leadControllerId\": \"Controller_192.168.1.148_9000\",\n"
+        + "      \"tableNames\": []\n"
+        + "    },\n"
+        + "    \"leadControllerResource_9\": {\n"
+        + "      \"leadControllerId\": \"Controller_192.168.1.148_9000\",\n"
+        + "      \"tableNames\": []\n"
+        + "    },\n"
+        + "    \"leadControllerResource_10\": {\n"
+        + "      \"leadControllerId\": \"Controller_192.168.1.148_9000\",\n"
+        + "      \"tableNames\": []\n"
+        + "    },\n"
+        + "    \"leadControllerResource_11\": {\n"
+        + "      \"leadControllerId\": \"Controller_192.168.1.148_9000\",\n"
+        + "      \"tableNames\": []\n"
+        + "    },\n"
+        + "    \"leadControllerResource_12\": {\n"
+        + "      \"leadControllerId\": \"Controller_192.168.1.148_9000\",\n"
+        + "      \"tableNames\": []\n"
+        + "    },\n"
+        + "    \"leadControllerResource_13\": {\n"
+        + "      \"leadControllerId\": \"Controller_192.168.1.148_9000\",\n"
+        + "      \"tableNames\": []\n"
+        + "    },\n"
+        + "    \"leadControllerResource_14\": {\n"
+        + "      \"leadControllerId\": \"Controller_192.168.1.148_9000\",\n"
+        + "      \"tableNames\": []\n"
+        + "    },\n"
+        + "    \"leadControllerResource_15\": {\n"
+        + "      \"leadControllerId\": \"Controller_192.168.1.148_9000\",\n"
+        + "      \"tableNames\": []\n"
+        + "    },\n"
+        + "    \"leadControllerResource_16\": {\n"
+        + "      \"leadControllerId\": \"Controller_192.168.1.148_9000\",\n"
+        + "      \"tableNames\": []\n"
+        + "    },\n"
+        + "    \"leadControllerResource_17\": {\n"
+        + "      \"leadControllerId\": \"Controller_192.168.1.148_9000\",\n"
+        + "      \"tableNames\": [\n"
+        + "        \"clickstreamFunnel_OFFLINE\"\n"
+        + "      ]\n"
+        + "    },\n"
+        + "    \"leadControllerResource_18\": {\n"
+        + "      \"leadControllerId\": \"Controller_192.168.1.148_9000\",\n"
+        + "      \"tableNames\": []\n"
+        + "    },\n"
+        + "    \"leadControllerResource_19\": {\n"
+        + "      \"leadControllerId\": \"Controller_192.168.1.148_9000\",\n"
+        + "      \"tableNames\": [\n"
+        + "        \"airlineStats_OFFLINE\"\n"
+        + "      ]\n"
+        + "    },\n"
+        + "    \"leadControllerResource_20\": {\n"
+        + "      \"leadControllerId\": \"Controller_192.168.1.148_9000\",\n"
+        + "      \"tableNames\": []\n"
+        + "    },\n"
+        + "    \"leadControllerResource_21\": {\n"
+        + "      \"leadControllerId\": \"Controller_192.168.1.148_9000\",\n"
+        + "      \"tableNames\": []\n"
+        + "    },\n"
+        + "    \"leadControllerResource_22\": {\n"
+        + "      \"leadControllerId\": \"Controller_192.168.1.148_9000\",\n"
+        + "      \"tableNames\": []\n"
+        + "    },\n"
+        + "    \"leadControllerResource_23\": {\n"
+        + "      \"leadControllerId\": \"Controller_192.168.1.148_9000\",\n"
+        + "      \"tableNames\": []\n"
+        + "    }\n"
+        + "  }\n"
+        + "}";
+    //@formatter:on
+    JsonNode jsonNode = JsonUtils.stringToJsonNode(jsonResponse);
+    PinotLeadControllerRestletResource.LeadControllerResponse 
tableReloadResponse =
+        JsonUtils.stringToObject(jsonResponse, new TypeReference<>() {
+        });
+    assertNotNull(jsonNode);
+    assertTrue(tableReloadResponse.isLeadControllerResourceEnabled());
+    assertNotNull(tableReloadResponse.getLeadControllerEntryMap());
+    Map<String, PinotLeadControllerRestletResource.LeadControllerEntry> 
serverSegmentReloadResp =
+        tableReloadResponse.getLeadControllerEntryMap();
+    assertTrue(
+        
serverSegmentReloadResp.get("leadControllerResource_17").getTableNames().contains("clickstreamFunnel_OFFLINE"));
+  }
+}


---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscr...@pinot.apache.org
For additional commands, e-mail: commits-h...@pinot.apache.org

Reply via email to