You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@datasketches.apache.org by jm...@apache.org on 2021/07/29 08:25:32 UTC

[datasketches-server] branch test_coverage updated: add reset tests, refactor testing base class, to better reflect null return value

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

jmalkin pushed a commit to branch test_coverage
in repository https://gitbox.apache.org/repos/asf/datasketches-server.git


The following commit(s) were added to refs/heads/test_coverage by this push:
     new 4e5b593  add reset tests, refactor testing base class, to better reflect null return value
4e5b593 is described below

commit 4e5b593ab4d9b8c168c9853f28df56d1a2573f5d
Author: Jon Malkin <jm...@users.noreply.github.com>
AuthorDate: Thu Jul 29 01:25:13 2021 -0700

    add reset tests, refactor testing base class, to better reflect null return value
---
 .../apache/datasketches/server/UpdateHandler.java  |   6 +-
 .../datasketches/server/ResetHandlerTest.java      | 214 +++++++++++++++++++++
 .../apache/datasketches/server/ServerTestBase.java |  24 ++-
 .../datasketches/server/UpdateHandlerTest.java     |  73 ++++---
 4 files changed, 272 insertions(+), 45 deletions(-)

diff --git a/src/main/java/org/apache/datasketches/server/UpdateHandler.java b/src/main/java/org/apache/datasketches/server/UpdateHandler.java
index b6ff1ff..363b702 100644
--- a/src/main/java/org/apache/datasketches/server/UpdateHandler.java
+++ b/src/main/java/org/apache/datasketches/server/UpdateHandler.java
@@ -32,8 +32,6 @@ import org.apache.datasketches.theta.Union;
 import com.google.gson.JsonArray;
 import com.google.gson.JsonElement;
 import com.google.gson.JsonObject;
-import sun.security.acl.AclEntryImpl;
-
 
 import static org.apache.datasketches.server.SketchConstants.*;
 
@@ -73,6 +71,10 @@ public class UpdateHandler extends BaseSketchesQueryHandler {
 
   @Override
   protected JsonObject processQuery(final JsonObject query) {
+    if (query.size() == 0) {
+      throw new IllegalArgumentException("Call to update with no data");
+    }
+
     for (final Map.Entry<String, JsonElement> entry : query.entrySet()) {
       final String name = entry.getKey();
       final SketchStorage.SketchEntry se = sketches.getSketch(name);
diff --git a/src/test/java/org/apache/datasketches/server/ResetHandlerTest.java b/src/test/java/org/apache/datasketches/server/ResetHandlerTest.java
new file mode 100644
index 0000000..f2e2e4d
--- /dev/null
+++ b/src/test/java/org/apache/datasketches/server/ResetHandlerTest.java
@@ -0,0 +1,214 @@
+/*
+ * 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.datasketches.server;
+
+import static org.apache.datasketches.server.SketchConstants.RESET_PATH;
+import static org.testng.Assert.assertEquals;
+import static org.testng.Assert.assertFalse;
+import static org.testng.Assert.assertTrue;
+
+import org.apache.datasketches.cpc.CpcSketch;
+import org.apache.datasketches.hll.HllSketch;
+import org.apache.datasketches.kll.KllFloatsSketch;
+import org.apache.datasketches.frequencies.ItemsSketch;
+import org.apache.datasketches.sampling.ReservoirItemsSketch;
+import org.apache.datasketches.sampling.VarOptItemsSketch;
+import org.apache.datasketches.theta.Union;
+import org.eclipse.jetty.http.HttpStatus;
+import org.testng.annotations.Test;
+
+import com.google.gson.JsonObject;
+
+public class ResetHandlerTest extends ServerTestBase {
+  @Test
+  public void emptyReset() {
+    final JsonObject response = new JsonObject();
+    JsonObject request = new JsonObject();
+
+    // completely empty request cannot be handled
+    assertEquals(postData(RESET_PATH, request, response), HttpStatus.UNPROCESSABLE_ENTITY_422);
+
+    // invalid name field with real sketch name
+    request.addProperty("notAName", "theta0");
+    assertEquals(postData(RESET_PATH, request, response), HttpStatus.UNPROCESSABLE_ENTITY_422);
+
+    // valid name, empty value
+    request = new JsonObject();
+    request.add("name", new JsonObject());
+    assertEquals(postData(RESET_PATH, request, response), HttpStatus.UNPROCESSABLE_ENTITY_422);
+
+    // valid name, invalid sketch name
+    request = new JsonObject();
+    request.addProperty("name", "sketchDoesNotExist");
+    assertEquals(postData(RESET_PATH, request, response), HttpStatus.UNPROCESSABLE_ENTITY_422);
+  }
+
+  @Test
+  public void cpcReset() {
+    final String sketchName = "cpcOfLongs";
+    final JsonObject response = new JsonObject();
+    final JsonObject request = new JsonObject();
+
+    // add data directly to sketch, ensure it exists
+    CpcSketch sk = (CpcSketch) server_.getSketch(sketchName).sketch_;
+    for (int i = 0; i < 5; ++i) { sk.update(i); }
+    assertFalse(sk.isEmpty());
+
+    // reset, then check sketch is again empty
+    request.addProperty("name", sketchName);
+    assertEquals(getData(RESET_PATH, request, response), HttpStatus.OK_200);
+    assertEquals(response.size(), 0);
+
+    // get sketch again before testing
+    sk = (CpcSketch) server_.getSketch(sketchName).sketch_;
+    assertTrue(sk.isEmpty());
+  }
+
+  @Test
+  @SuppressWarnings("unchecked")
+  public void fiReset() {
+    final String sketchName = "topItems";
+    final JsonObject response = new JsonObject();
+    final JsonObject request = new JsonObject();
+
+    // add data directly to sketch, ensure it exists
+    ItemsSketch<String> sk = (ItemsSketch<String>) server_.getSketch(sketchName).sketch_;
+    sk.update("itemA", 3);
+    sk.update("itemB", 1);
+    assertFalse(sk.isEmpty());
+
+    // reset, then check sketch is again empty
+    request.addProperty("name", sketchName);
+    assertEquals(getData(RESET_PATH, request, response), HttpStatus.OK_200);
+    assertEquals(response.size(), 0);
+
+    // get sketch again before testing
+    sk = (ItemsSketch<String>) server_.getSketch(sketchName).sketch_;
+    assertTrue(sk.isEmpty());
+  }
+
+  @Test
+  public void hllReset() {
+    final String sketchName = "hll2";
+    final JsonObject response = new JsonObject();
+    final JsonObject request = new JsonObject();
+
+    // add data directly to sketch, ensure it exists
+    HllSketch sk = (HllSketch) server_.getSketch(sketchName).sketch_;
+    sk.update("itemA");
+    sk.update("itemB");
+    assertFalse(sk.isEmpty());
+
+    // reset, then check sketch is again empty
+    request.addProperty("name", sketchName);
+    assertEquals(getData(RESET_PATH, request, response), HttpStatus.OK_200);
+    assertEquals(response.size(), 0);
+
+    // get sketch again before testing
+    sk = (HllSketch) server_.getSketch(sketchName).sketch_;
+    assertTrue(sk.isEmpty());
+  }
+
+  @Test
+  public void kllReset() {
+    final String sketchName = "duration";
+    final JsonObject response = new JsonObject();
+    final JsonObject request = new JsonObject();
+
+    // add data directly to sketch, ensure it exists
+    KllFloatsSketch sk = (KllFloatsSketch) server_.getSketch(sketchName).sketch_;
+    sk.update(128.0f);
+    assertFalse(sk.isEmpty());
+
+    // reset, then check sketch is again empty
+    request.addProperty("name", sketchName);
+    assertEquals(getData(RESET_PATH, request, response), HttpStatus.OK_200);
+    assertEquals(response.size(), 0);
+
+    // get sketch again before testing
+    sk = (KllFloatsSketch) server_.getSketch(sketchName).sketch_;
+    assertTrue(sk.isEmpty());
+  }
+
+  @Test
+  public void thetaReset() {
+    final String sketchName = "theta1";
+    final JsonObject response = new JsonObject();
+    final JsonObject request = new JsonObject();
+
+    // add data directly to sketch, ensure it exists
+    Union sk = (Union) server_.getSketch(sketchName).sketch_;
+    sk.update("item");
+    assertFalse(sk.getResult().isEmpty());
+
+    // reset, then check sketch is again empty
+    request.addProperty("name", sketchName);
+    assertEquals(getData(RESET_PATH, request, response), HttpStatus.OK_200);
+    assertEquals(response.size(), 0);
+
+    // get sketch again before testing
+    sk = (Union) server_.getSketch(sketchName).sketch_;
+    assertTrue(sk.getResult().isEmpty());
+  }
+
+  @Test
+  @SuppressWarnings("unchecked")
+  public void reservoirReset() {
+    final String sketchName = "rs";
+    final JsonObject response = new JsonObject();
+    final JsonObject request = new JsonObject();
+
+    // add data directly to sketch, ensure it exists
+    ReservoirItemsSketch<String> sk = (ReservoirItemsSketch<String>) server_.getSketch(sketchName).sketch_;
+    sk.update("item");
+    assertTrue(sk.getNumSamples() > 0);
+
+    // reset, then check sketch is again empty
+    request.addProperty("name", sketchName);
+    assertEquals(getData(RESET_PATH, request, response), HttpStatus.OK_200);
+    assertEquals(response.size(), 0);
+
+    // get sketch again before testing
+    sk = (ReservoirItemsSketch<String>) server_.getSketch(sketchName).sketch_;
+    assertEquals(sk.getNumSamples(), 0);
+  }
+
+  @Test
+  @SuppressWarnings("unchecked")
+  public void varOptReset() {
+    final String sketchName = "vo";
+    final JsonObject response = new JsonObject();
+    final JsonObject request = new JsonObject();
+
+    // add data directly to sketch, ensure it exists
+    VarOptItemsSketch<String> sk = (VarOptItemsSketch<String>) server_.getSketch(sketchName).sketch_;
+    sk.update("item", 5);
+    assertTrue(sk.getNumSamples() > 0);
+
+    // reset, then check sketch is again empty
+    request.addProperty("name", sketchName);
+    assertEquals(getData(RESET_PATH, request, response), HttpStatus.OK_200);
+    assertEquals(response.size(), 0);
+
+    // get sketch again before testing
+    sk = (VarOptItemsSketch<String>) server_.getSketch(sketchName).sketch_;
+    assertEquals(sk.getNumSamples(), 0);
+  }
+}
diff --git a/src/test/java/org/apache/datasketches/server/ServerTestBase.java b/src/test/java/org/apache/datasketches/server/ServerTestBase.java
index 59cee6c..a6df4f2 100644
--- a/src/test/java/org/apache/datasketches/server/ServerTestBase.java
+++ b/src/test/java/org/apache/datasketches/server/ServerTestBase.java
@@ -103,15 +103,23 @@ public class ServerTestBase {
       }
 
       status = http.getResponseCode();
+
+      final JsonElement responseData;
       if (status == HttpStatus.OK_200) {
         // read response, if any, and put into a JSON element
         try (final InputStreamReader isr = new InputStreamReader(http.getInputStream())) {
-          response.add(RESPONSE_FIELD, JsonParser.parseReader(isr));
+          responseData = JsonParser.parseReader(isr);
+        }
+        if (!responseData.isJsonNull()) {
+          response.add(RESPONSE_FIELD, responseData);
         }
       } else if (status == HttpStatus.UNPROCESSABLE_ENTITY_422) {
         // read error response and put into a JSON element
         try (final InputStreamReader isr = new InputStreamReader(http.getErrorStream())) {
-          response.add(ERROR_KEY, JsonParser.parseReader(isr));
+          responseData = JsonParser.parseReader(isr);
+        }
+        if (!responseData.isJsonNull()) {
+          response.add(ERROR_KEY, responseData);
         }
       }
     } catch (final IOException e) {
@@ -140,15 +148,23 @@ public class ServerTestBase {
       http.connect();
 
       status = http.getResponseCode();
+
+      final JsonElement responseData;
       if (status == HttpStatus.OK_200) {
         // read response, if any, and put into a JSON element
         try (final InputStreamReader isr = new InputStreamReader(http.getInputStream())) {
-          response.add(RESPONSE_FIELD, JsonParser.parseReader(isr));
+          responseData = JsonParser.parseReader(isr);
+        }
+        if (!responseData.isJsonNull()) {
+          response.add(RESPONSE_FIELD, responseData);
         }
       } else if (status == HttpStatus.UNPROCESSABLE_ENTITY_422) {
         // read error response and put into a JSON element
         try (final InputStreamReader isr = new InputStreamReader(http.getErrorStream())) {
-          response.add(ERROR_KEY, JsonParser.parseReader(isr));
+          responseData = JsonParser.parseReader(isr);
+        }
+        if (!responseData.isJsonNull()) {
+          response.add(ERROR_KEY, responseData);
         }
       }
     } catch (final IOException e) {
diff --git a/src/test/java/org/apache/datasketches/server/UpdateHandlerTest.java b/src/test/java/org/apache/datasketches/server/UpdateHandlerTest.java
index 024bb5d..5455543 100644
--- a/src/test/java/org/apache/datasketches/server/UpdateHandlerTest.java
+++ b/src/test/java/org/apache/datasketches/server/UpdateHandlerTest.java
@@ -49,8 +49,8 @@ public class UpdateHandlerTest extends ServerTestBase {
     final JsonObject response = new JsonObject();
     JsonObject request = new JsonObject();
 
-    // completely empty is ok
-    assertEquals(postData(UPDATE_PATH, request, response), HttpStatus.OK_200);
+    // completely empty request cannot be handled
+    assertEquals(postData(UPDATE_PATH, request, response), HttpStatus.UNPROCESSABLE_ENTITY_422);
 
     // invalid name with value
     request.addProperty("sketchDoesNotExist", "validStringValue");
@@ -75,6 +75,7 @@ public class UpdateHandlerTest extends ServerTestBase {
       data.add(i);
     request.add(sketchName, data);
     assertEquals(postData(UPDATE_PATH, request, response), HttpStatus.OK_200);
+    assertEquals(response.size(), 0);
 
     request = new JsonObject();
     data = new JsonArray();
@@ -82,14 +83,13 @@ public class UpdateHandlerTest extends ServerTestBase {
       data.add(i);
     request.add(sketchName, data);
     assertEquals(getData(UPDATE_PATH, request, response), HttpStatus.OK_200);
+    assertEquals(response.size(), 0);
 
     // single-item update
     request = new JsonObject();
     request.add(sketchName, new JsonPrimitive(-1));
     assertEquals(getData(UPDATE_PATH, request, response), HttpStatus.OK_200);
-
-    final JsonElement element = response.get(RESPONSE_FIELD);
-    assertTrue(element.isJsonNull());
+    assertEquals(response.size(), 0);
 
     final SketchStorage.SketchEntry entry = server_.getSketch(sketchName);
     final CpcSketch sk = (CpcSketch) entry.sketch_;
@@ -110,17 +110,17 @@ public class UpdateHandlerTest extends ServerTestBase {
       data.add(i); // not converting to String since should happen upon parsing
     request.add(sketchName, data);
     assertEquals(postData(UPDATE_PATH, request, response), HttpStatus.OK_200);
+    assertEquals(response.size(), 0);
 
     request = new JsonObject();
     request.add(sketchName, new JsonPrimitive(-1));
     assertEquals(postData(UPDATE_PATH, request, response), HttpStatus.OK_200);
-
-    final JsonElement element = response.get(RESPONSE_FIELD);
-    assertTrue(element.isJsonNull());
+    assertEquals(response.size(), 0);
 
     final SketchStorage.SketchEntry entry = server_.getSketch(sketchName);
     final CpcSketch sk = (CpcSketch) entry.sketch_;
     assertEquals(entry.type_, ValueType.STRING);
+
     assertTrue(nPoints + 1 <= sk.getUpperBound(1));
     assertTrue(nPoints + 1 >= sk.getLowerBound(1));
   }
@@ -137,13 +137,12 @@ public class UpdateHandlerTest extends ServerTestBase {
       data.add(i * 10.0);
     request.add(sketchName, data);
     assertEquals(postData(UPDATE_PATH, request, response), HttpStatus.OK_200);
+    assertEquals(response.size(), 0);
 
     request = new JsonObject();
     request.add(sketchName, new JsonPrimitive(-1));
     assertEquals(getData(UPDATE_PATH, request, response), HttpStatus.OK_200);
-
-    final JsonElement element = response.get(RESPONSE_FIELD);
-    assertTrue(element.isJsonNull());
+    assertEquals(response.size(), 0);
 
     final SketchStorage.SketchEntry entry = server_.getSketch(sketchName);
     final CpcSketch sk = (CpcSketch) entry.sketch_;
@@ -162,6 +161,7 @@ public class UpdateHandlerTest extends ServerTestBase {
     JsonObject request = new JsonObject();
     request.addProperty(sketchName, "item1");
     assertEquals(postData(UPDATE_PATH, request, response), HttpStatus.OK_200);
+    assertEquals(response.size(), 0);
 
     // item with weight
     request = new JsonObject();
@@ -170,6 +170,7 @@ public class UpdateHandlerTest extends ServerTestBase {
     data.addProperty(QUERY_PAIR_WEIGHT_FIELD, 5);
     request.add(sketchName, data);
     assertEquals(postData(UPDATE_PATH, request, response), HttpStatus.OK_200);
+    assertEquals(response.size(), 0);
 
     // array of items with and without weights
     request = new JsonObject();
@@ -181,9 +182,7 @@ public class UpdateHandlerTest extends ServerTestBase {
     dataArray.add(data);
     request.add(sketchName, dataArray);
     assertEquals(postData(UPDATE_PATH, request, response), HttpStatus.OK_200);
-
-    final JsonElement element = response.get(RESPONSE_FIELD);
-    assertTrue(element.isJsonNull());
+    assertEquals(response.size(), 0);
 
     final SketchStorage.SketchEntry entry = server_.getSketch(sketchName);
     final org.apache.datasketches.frequencies.ItemsSketch<String> sk = (org.apache.datasketches.frequencies.ItemsSketch<String>) entry.sketch_;
@@ -218,13 +217,12 @@ public class UpdateHandlerTest extends ServerTestBase {
       data.add(i); // not converting to String since should happen upon parsing
     request.add(sketchName, data);
     assertEquals(postData(UPDATE_PATH, request, response), HttpStatus.OK_200);
+    assertEquals(response.size(), 0);
 
     request = new JsonObject();
     request.add(sketchName, new JsonPrimitive(-1));
     assertEquals(postData(UPDATE_PATH, request, response), HttpStatus.OK_200);
-
-    final JsonElement element = response.get(RESPONSE_FIELD);
-    assertTrue(element.isJsonNull());
+    assertEquals(response.size(), 0);
 
     final SketchStorage.SketchEntry entry = server_.getSketch(sketchName);
     final HllSketch sk = (HllSketch) entry.sketch_;
@@ -245,6 +243,7 @@ public class UpdateHandlerTest extends ServerTestBase {
       data.add(i);
     request.add(sketchName, data);
     assertEquals(getData(UPDATE_PATH, request, response), HttpStatus.OK_200);
+    assertEquals(response.size(), 0);
 
     request = new JsonObject();
     data = new JsonArray();
@@ -252,14 +251,13 @@ public class UpdateHandlerTest extends ServerTestBase {
       data.add(i);
     request.add(sketchName, data);
     assertEquals(getData(UPDATE_PATH, request, response), HttpStatus.OK_200);
+    assertEquals(response.size(), 0);
 
     // single-item update
     request = new JsonObject();
     request.add(sketchName, new JsonPrimitive(-1));
     assertEquals(getData(UPDATE_PATH, request, response), HttpStatus.OK_200);
-
-    final JsonElement element = response.get(RESPONSE_FIELD);
-    assertTrue(element.isJsonNull());
+    assertEquals(response.size(), 0);
 
     final SketchStorage.SketchEntry entry = server_.getSketch(sketchName);
     final HllSketch sk = (HllSketch) entry.sketch_;
@@ -280,13 +278,12 @@ public class UpdateHandlerTest extends ServerTestBase {
       data.add(i * 10.0);
     request.add(sketchName, data);
     assertEquals(postData(UPDATE_PATH, request, response), HttpStatus.OK_200);
+    assertEquals(response.size(), 0);
 
     request = new JsonObject();
     request.add(sketchName, new JsonPrimitive(-1));
     assertEquals(getData(UPDATE_PATH, request, response), HttpStatus.OK_200);
-
-    final JsonElement element = response.get(RESPONSE_FIELD);
-    assertTrue(element.isJsonNull());
+    assertEquals(response.size(), 0);
 
     final SketchStorage.SketchEntry entry = server_.getSketch(sketchName);
     final HllSketch sk = (HllSketch) entry.sketch_;
@@ -310,13 +307,13 @@ public class UpdateHandlerTest extends ServerTestBase {
         data.add(i * 10.0);
       request.add(sketchName, data);
       assertEquals(postData(UPDATE_PATH, request, response), HttpStatus.OK_200);
-      assertTrue(response.get(RESPONSE_FIELD).isJsonNull());
+      assertEquals(response.size(), 0);
 
       // single update
       request = new JsonObject();
       request.add(sketchName, new JsonPrimitive(-1));
       assertEquals(getData(UPDATE_PATH, request, response), HttpStatus.OK_200);
-      assertTrue(response.get(RESPONSE_FIELD).isJsonNull());
+      assertEquals(response.size(), 0);
     }
 
     final SketchStorage.SketchEntry entry = server_.getSketch(sketchName);
@@ -336,6 +333,7 @@ public class UpdateHandlerTest extends ServerTestBase {
       data.add(i);
     request.add(sketchName, data);
     assertEquals(postData(UPDATE_PATH, request, response), HttpStatus.OK_200);
+    assertEquals(response.size(), 0);
 
     request = new JsonObject();
     data = new JsonArray();
@@ -343,14 +341,13 @@ public class UpdateHandlerTest extends ServerTestBase {
       data.add(i);
     request.add(sketchName, data);
     assertEquals(getData(UPDATE_PATH, request, response), HttpStatus.OK_200);
+    assertEquals(response.size(), 0);
 
     // single-item update
     request = new JsonObject();
     request.add(sketchName, new JsonPrimitive(-1));
     assertEquals(getData(UPDATE_PATH, request, response), HttpStatus.OK_200);
-
-    final JsonElement element = response.get(RESPONSE_FIELD);
-    assertTrue(element.isJsonNull());
+    assertEquals(response.size(), 0);
 
     final SketchStorage.SketchEntry entry = server_.getSketch(sketchName);
     final CompactSketch sk = ((Union) entry.sketch_).getResult();
@@ -371,13 +368,12 @@ public class UpdateHandlerTest extends ServerTestBase {
       data.add(i); // not converting to String since should happen upon parsing
     request.add(sketchName, data);
     assertEquals(postData(UPDATE_PATH, request, response), HttpStatus.OK_200);
+    assertEquals(response.size(), 0);
 
     request = new JsonObject();
     request.add(sketchName, new JsonPrimitive(-1));
     assertEquals(postData(UPDATE_PATH, request, response), HttpStatus.OK_200);
-
-    final JsonElement element = response.get(RESPONSE_FIELD);
-    assertTrue(element.isJsonNull());
+    assertEquals(response.size(), 0);
 
     final SketchStorage.SketchEntry entry = server_.getSketch(sketchName);
     final CompactSketch sk = ((Union) entry.sketch_).getResult();
@@ -398,13 +394,12 @@ public class UpdateHandlerTest extends ServerTestBase {
       data.add(i * 10.0);
     request.add(sketchName, data);
     assertEquals(postData(UPDATE_PATH, request, response), HttpStatus.OK_200);
+    assertEquals(response.size(), 0);
 
     request = new JsonObject();
     request.add(sketchName, new JsonPrimitive(-1));
     assertEquals(getData(UPDATE_PATH, request, response), HttpStatus.OK_200);
-
-    final JsonElement element = response.get(RESPONSE_FIELD);
-    assertTrue(element.isJsonNull());
+    assertEquals(response.size(), 0);
 
     final SketchStorage.SketchEntry entry = server_.getSketch(sketchName);
     final CompactSketch sk = ((Union) entry.sketch_).getResult();
@@ -429,13 +424,13 @@ public class UpdateHandlerTest extends ServerTestBase {
         data.add(Integer.toString(i));
       request.add(sketchName, data);
       assertEquals(postData(UPDATE_PATH, request, response), HttpStatus.OK_200);
-      assertTrue(response.get(RESPONSE_FIELD).isJsonNull());
+      assertEquals(response.size(), 0);
 
       // single update
       request = new JsonObject();
       request.add(sketchName, new JsonPrimitive("-1"));
       assertEquals(getData(UPDATE_PATH, request, response), HttpStatus.OK_200);
-      assertTrue(response.get(RESPONSE_FIELD).isJsonNull());
+      assertEquals(response.size(), 0);
     }
 
     final SketchStorage.SketchEntry entry = server_.getSketch(sketchName);
@@ -453,7 +448,7 @@ public class UpdateHandlerTest extends ServerTestBase {
     JsonObject request = new JsonObject();
     request.addProperty(sketchName, "item1");
     assertEquals(postData(UPDATE_PATH, request, response), HttpStatus.OK_200);
-    assertTrue(response.get(RESPONSE_FIELD).isJsonNull());
+    assertEquals(response.size(), 0);
 
     // item with weight
     request = new JsonObject();
@@ -462,7 +457,7 @@ public class UpdateHandlerTest extends ServerTestBase {
     data.addProperty(QUERY_PAIR_WEIGHT_FIELD, 5);
     request.add(sketchName, data);
     assertEquals(postData(UPDATE_PATH, request, response), HttpStatus.OK_200);
-    assertTrue(response.get(RESPONSE_FIELD).isJsonNull());
+    assertEquals(response.size(), 0);
 
     // array of items with and without weights
     request = new JsonObject();
@@ -474,7 +469,7 @@ public class UpdateHandlerTest extends ServerTestBase {
     dataArray.add(data);
     request.add(sketchName, dataArray);
     assertEquals(postData(UPDATE_PATH, request, response), HttpStatus.OK_200);
-    assertTrue(response.get(RESPONSE_FIELD).isJsonNull());
+    assertEquals(response.size(), 0);
 
     final SketchStorage.SketchEntry entry = server_.getSketch(sketchName);
     final VarOptItemsSketch<String> sk = (VarOptItemsSketch<String>) entry.sketch_;

---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@datasketches.apache.org
For additional commands, e-mail: commits-help@datasketches.apache.org