You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@pulsar.apache.org by eo...@apache.org on 2022/09/11 13:14:20 UTC

[pulsar] branch master updated: [improve][test] try remove whitebox on MockZooKeeper (#17579)

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

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


The following commit(s) were added to refs/heads/master by this push:
     new c1434fdf076 [improve][test] try remove whitebox on MockZooKeeper (#17579)
c1434fdf076 is described below

commit c1434fdf0762aa356343682f89d00389198037e5
Author: tison <wa...@gmail.com>
AuthorDate: Sun Sep 11 21:14:12 2022 +0800

    [improve][test] try remove whitebox on MockZooKeeper (#17579)
---
 .../java/org/apache/zookeeper/MockZooKeeper.java   | 34 ++++++++++------------
 1 file changed, 15 insertions(+), 19 deletions(-)

diff --git a/testmocks/src/main/java/org/apache/zookeeper/MockZooKeeper.java b/testmocks/src/main/java/org/apache/zookeeper/MockZooKeeper.java
index 39f3845c967..190720e5bcc 100644
--- a/testmocks/src/main/java/org/apache/zookeeper/MockZooKeeper.java
+++ b/testmocks/src/main/java/org/apache/zookeeper/MockZooKeeper.java
@@ -46,6 +46,7 @@ import java.util.function.BiPredicate;
 import lombok.AllArgsConstructor;
 import lombok.Data;
 import lombok.extern.slf4j.Slf4j;
+import org.apache.commons.lang3.reflect.FieldUtils;
 import org.apache.zookeeper.AsyncCallback.Children2Callback;
 import org.apache.zookeeper.AsyncCallback.ChildrenCallback;
 import org.apache.zookeeper.AsyncCallback.DataCallback;
@@ -59,7 +60,6 @@ import org.apache.zookeeper.data.Stat;
 import org.objenesis.Objenesis;
 import org.objenesis.ObjenesisStd;
 import org.objenesis.instantiator.ObjectInstantiator;
-import org.powermock.reflect.Whitebox;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
@@ -144,10 +144,7 @@ public class MockZooKeeper extends ZooKeeper {
 
     public static MockZooKeeper newInstance(ExecutorService executor, int readOpDelayMs) {
         try {
-            MockZooKeeper zk = createMockZooKeeperInstance(executor, readOpDelayMs);
-            ObjectInstantiator<ClientCnxn> clientCnxnObjectInstantiator = objenesis.getInstantiatorOf(ClientCnxn.class);
-            Whitebox.setInternalState(zk, "cnxn", clientCnxnObjectInstantiator.newInstance());
-            return zk;
+            return createMockZooKeeperInstance(executor, readOpDelayMs);
         } catch (RuntimeException e) {
             throw e;
         } catch (Exception e) {
@@ -1018,33 +1015,32 @@ public class MockZooKeeper extends ZooKeeper {
         try {
             for (org.apache.zookeeper.Op op : ops) {
                 switch (op.getType()) {
-                    case ZooDefs.OpCode.create: {
+                    case ZooDefs.OpCode.create -> {
                         org.apache.zookeeper.Op.Create opc = ((org.apache.zookeeper.Op.Create) op);
                         CreateMode cm = CreateMode.fromFlag(opc.flags);
                         String path = this.create(op.getPath(), opc.data, null, cm);
                         res.add(new OpResult.CreateResult(path));
-                        break;
                     }
-                    case ZooDefs.OpCode.delete:
-                        this.delete(op.getPath(), Whitebox.getInternalState(op, "version"));
+                    case ZooDefs.OpCode.delete -> {
+                        this.delete(op.getPath(), (int) FieldUtils.readField(op, "version", true));
                         res.add(new OpResult.DeleteResult());
-                        break;
-                    case ZooDefs.OpCode.setData: {
-                        Stat stat = this.setData(op.getPath(), Whitebox.getInternalState(op, "data"),
-                                Whitebox.getInternalState(op, "version"));
+                    }
+                    case ZooDefs.OpCode.setData -> {
+                        Stat stat = this.setData(
+                                op.getPath(),
+                                (byte[]) FieldUtils.readField(op, "data", true),
+                                (int) FieldUtils.readField(op, "version", true));
                         res.add(new OpResult.SetDataResult(stat));
-                        break;
                     }
-                    case ZooDefs.OpCode.getChildren: {
+                    case ZooDefs.OpCode.getChildren -> {
                         try {
                             List<String> children = this.getChildren(op.getPath(), null);
                             res.add(new OpResult.GetChildrenResult(children));
                         } catch (KeeperException e) {
                             res.add(new OpResult.ErrorResult(e.code().intValue()));
                         }
-                        break;
                     }
-                    case ZooDefs.OpCode.getData: {
+                    case ZooDefs.OpCode.getData -> {
                         Stat stat = new Stat();
                         try {
                             byte[] payload = this.getData(op.getPath(), null, stat);
@@ -1052,9 +1048,7 @@ public class MockZooKeeper extends ZooKeeper {
                         } catch (KeeperException e) {
                             res.add(new OpResult.ErrorResult(e.code().intValue()));
                         }
-                        break;
                     }
-                    default:
                 }
             }
         } catch (KeeperException e) {
@@ -1063,6 +1057,8 @@ public class MockZooKeeper extends ZooKeeper {
             for (int i = res.size(); i < total; i++) {
                 res.add(new OpResult.ErrorResult(KeeperException.Code.RUNTIMEINCONSISTENCY.intValue()));
             }
+        } catch (IllegalAccessException e) {
+            throw new IllegalStateException(e);
         }
         return res;
     }