GGraziadei commented on code in PR #8714:
URL: https://github.com/apache/storm/pull/8714#discussion_r3330733532


##########
storm-server/src/test/java/org/apache/storm/cluster/ClusterStateTest.java:
##########
@@ -482,4 +488,83 @@ public void testClusterAuthentication() throws Exception {
         }
     }
 
+    @Test
+    public void testGetVersion() throws Exception {
+        try (InProcessZookeeper zk = new InProcessZookeeper()) {
+            IStateStorage state = mkState(zk.getPort());
+
+            // absent node -> null version
+            assertNull(state.get_version("/v", false));
+
+            // first set_data creates the node at dataVersion 0
+            state.set_data("/v", barr(1), OPEN_ACL);
+            assertEquals(Integer.valueOf(0), state.get_version("/v", false));
+
+            // each subsequent update bumps the version
+            state.set_data("/v", barr(2), OPEN_ACL);
+            assertEquals(Integer.valueOf(1), state.get_version("/v", false));
+            state.set_data("/v", barr(3), OPEN_ACL);
+            assertEquals(Integer.valueOf(2), state.get_version("/v", false));
+
+            // deleted -> null again
+            state.delete_node("/v");
+            assertNull(state.get_version("/v", false));
+
+            state.close();
+        }
+    }
+
+    @Test
+    public void testGetDataWithVersion() throws Exception {
+        try (InProcessZookeeper zk = new InProcessZookeeper()) {
+            IStateStorage state = mkState(zk.getPort());
+
+            // absent node -> null
+            assertNull(state.get_data_with_version("/v", false));
+
+            // created -> data with dataVersion 0
+            state.set_data("/v", barr(1), OPEN_ACL);
+            VersionedData<byte[]> v0 = state.get_data_with_version("/v", 
false);
+            assertNotNull(v0);
+            assertArrayEquals(barr(1), v0.getData());
+            assertEquals(0, v0.getVersion());
+
+            // updated -> new data and bumped version, consistent with 
get_version
+            state.set_data("/v", barr(2, 3), OPEN_ACL);
+            VersionedData<byte[]> v1 = state.get_data_with_version("/v", 
false);
+            assertNotNull(v1);
+            assertArrayEquals(barr(2, 3), v1.getData());
+            assertEquals(1, v1.getVersion());
+            assertEquals(Integer.valueOf(1), state.get_version("/v", false));
+
+            // deleted -> null
+            state.delete_node("/v");
+            assertNull(state.get_data_with_version("/v", false));
+
+            state.close();
+        }
+    }

Review Comment:
   Thank you! I've committed the missing test case.
   This test is crucial for preventing regressions. It verifies that if a 
`getData` call to zk fails with `watched` clause enabled, the fallback 
mechanism successfully registers the watcher manually (calling the method 
`existsNode`).



-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: [email protected]

For queries about this service, please contact Infrastructure at:
[email protected]

Reply via email to