public class org.apache.zookeeper.server.quorum.WatchLeakTest extends java.lang.Object
{
protected static final org.slf4j.Logger LOG;
final long SESSION_ID;
private static final long superSecret;
public void <init>()
{
org.apache.zookeeper.server.quorum.WatchLeakTest v;
v := @this: org.apache.zookeeper.server.quorum.WatchLeakTest;
specialinvoke v.<java.lang.Object: void <init>()>();
v.<org.apache.zookeeper.server.quorum.WatchLeakTest: long SESSION_ID> = 47806L;
return;
}
public void setUp()
{
org.apache.zookeeper.server.quorum.WatchLeakTest v;
v := @this: org.apache.zookeeper.server.quorum.WatchLeakTest;
staticinvoke <java.lang.System: java.lang.String setProperty(java.lang.String,java.lang.String)>("zookeeper.admin.enableServer", "false");
return;
}
public void testWatchesLeak(boolean) throws java.lang.Exception
{
org.apache.zookeeper.server.NIOServerCnxnFactory v;
java.lang.Integer v, v;
org.apache.zookeeper.server.quorum.QuorumPacket v;
java.nio.channels.SocketChannel v;
boolean v, v, v;
org.apache.zookeeper.server.quorum.WatchLeakTest$MyFollower v;
org.apache.zookeeper.server.quorum.Follower v;
java.lang.Throwable v;
org.apache.zookeeper.server.quorum.WatchLeakTest$FakeSK v;
org.apache.zookeeper.server.ZKDatabase v;
int v;
java.lang.Boolean v;
org.apache.zookeeper.server.quorum.FollowerZooKeeperServer v, v;
org.apache.zookeeper.server.quorum.WatchLeakTest$1 v;
org.apache.zookeeper.server.MockNIOServerCnxn v;
org.slf4j.Logger v, v, v, v, v, v;
org.mockito.stubbing.OngoingStubbing v, v, v;
java.io.File v, v, v, v;
org.apache.zookeeper.server.DataTree v;
java.lang.Object v, v, v, v, v;
org.apache.zookeeper.server.quorum.WatchLeakTest v;
v := @this: org.apache.zookeeper.server.quorum.WatchLeakTest;
v := @parameter: boolean;
v = staticinvoke <org.mockito.Mockito: java.lang.Object mock(java.lang.Class)>(class "Lorg/apache/zookeeper/server/NIOServerCnxnFactory;");
v = new org.apache.zookeeper.server.quorum.WatchLeakTest$FakeSK;
specialinvoke v.<org.apache.zookeeper.server.quorum.WatchLeakTest$FakeSK: void <init>()>();
v = staticinvoke <org.mockito.Mockito: java.lang.Object mock(java.lang.Class)>(class "Lorg/apache/zookeeper/server/MockSelectorThread;");
v = staticinvoke <org.mockito.ArgumentMatchers: java.lang.Object any(java.lang.Class)>(class "Ljava/nio/channels/SelectionKey;");
v = virtualinvoke v.<org.apache.zookeeper.server.MockSelectorThread: boolean addInterestOpsUpdateRequest(java.nio.channels.SelectionKey)>(v);
v = staticinvoke <java.lang.Boolean: java.lang.Boolean valueOf(boolean)>(v);
v = staticinvoke <org.mockito.Mockito: org.mockito.stubbing.OngoingStubbing when(java.lang.Object)>(v);
v = new org.apache.zookeeper.server.quorum.WatchLeakTest$1;
specialinvoke v.<org.apache.zookeeper.server.quorum.WatchLeakTest$1: void <init>(org.apache.zookeeper.server.quorum.WatchLeakTest)>(v);
interfaceinvoke v.<org.mockito.stubbing.OngoingStubbing: org.mockito.stubbing.OngoingStubbing thenAnswer(org.mockito.stubbing.Answer)>(v);
v = new org.apache.zookeeper.server.ZKDatabase;
specialinvoke v.<org.apache.zookeeper.server.ZKDatabase: void <init>(org.apache.zookeeper.server.persistence.FileTxnSnapLog)>(null);
virtualinvoke v.<org.apache.zookeeper.server.ZKDatabase: void setlastProcessedZxid(long)>(2L);
v = staticinvoke <org.mockito.Mockito: java.lang.Object mock(java.lang.Class)>(class "Lorg/apache/zookeeper/server/quorum/QuorumPeer;");
v = staticinvoke <org.mockito.Mockito: java.lang.Object mock(java.lang.Class)>(class "Lorg/apache/zookeeper/server/persistence/FileTxnSnapLog;");
v = virtualinvoke v.<org.apache.zookeeper.server.persistence.FileTxnSnapLog: java.io.File getDataDir()>();
v = staticinvoke <org.mockito.Mockito: org.mockito.stubbing.OngoingStubbing when(java.lang.Object)>(v);
v = new java.io.File;
specialinvoke v.<java.io.File: void <init>(java.lang.String)>("");
interfaceinvoke v.<org.mockito.stubbing.OngoingStubbing: org.mockito.stubbing.OngoingStubbing thenReturn(java.lang.Object)>(v);
v = virtualinvoke v.<org.apache.zookeeper.server.persistence.FileTxnSnapLog: java.io.File getSnapDir()>();
v = staticinvoke <org.mockito.Mockito: org.mockito.stubbing.OngoingStubbing when(java.lang.Object)>(v);
v = new java.io.File;
specialinvoke v.<java.io.File: void <init>(java.lang.String)>("");
interfaceinvoke v.<org.mockito.stubbing.OngoingStubbing: org.mockito.stubbing.OngoingStubbing thenReturn(java.lang.Object)>(v);
v = null;
label:
v = new org.apache.zookeeper.server.quorum.FollowerZooKeeperServer;
specialinvoke v.<org.apache.zookeeper.server.quorum.FollowerZooKeeperServer: void <init>(org.apache.zookeeper.server.persistence.FileTxnSnapLog,org.apache.zookeeper.server.quorum.QuorumPeer,org.apache.zookeeper.server.ZKDatabase)>(v, v, v);
v = v;
virtualinvoke v.<org.apache.zookeeper.server.quorum.FollowerZooKeeperServer: void startup()>();
virtualinvoke v.<org.apache.zookeeper.server.quorum.FollowerZooKeeperServer: void setServerCnxnFactory(org.apache.zookeeper.server.ServerCnxnFactory)>(v);
v = new org.apache.zookeeper.server.quorum.WatchLeakTest$MyFollower;
specialinvoke v.<org.apache.zookeeper.server.quorum.WatchLeakTest$MyFollower: void <init>(org.apache.zookeeper.server.quorum.QuorumPeer,org.apache.zookeeper.server.quorum.FollowerZooKeeperServer)>(v, v);
v.<org.apache.zookeeper.server.quorum.QuorumPeer: org.apache.zookeeper.server.quorum.Follower follower> = v;
v = <org.apache.zookeeper.server.quorum.WatchLeakTest: org.slf4j.Logger LOG>;
interfaceinvoke v.<org.slf4j.Logger: void info(java.lang.String)>("Follower created");
v = specialinvoke v.<org.apache.zookeeper.server.quorum.WatchLeakTest: java.nio.channels.SocketChannel createClientSocketChannel()>();
v = new org.apache.zookeeper.server.MockNIOServerCnxn;
specialinvoke v.<org.apache.zookeeper.server.MockNIOServerCnxn: void <init>(org.apache.zookeeper.server.ZooKeeperServer,java.nio.channels.SocketChannel,java.nio.channels.SelectionKey,org.apache.zookeeper.server.NIOServerCnxnFactory,org.apache.zookeeper.server.NIOServerCnxnFactory$SelectorThread)>(v, v, v, v, v);
virtualinvoke v.<java.nio.channels.SelectionKey: java.lang.Object attach(java.lang.Object)>(v);
virtualinvoke v.<org.apache.zookeeper.server.MockNIOServerCnxn: void doIO(java.nio.channels.SelectionKey)>(v);
v = <org.apache.zookeeper.server.quorum.WatchLeakTest: org.slf4j.Logger LOG>;
interfaceinvoke v.<org.slf4j.Logger: void info(java.lang.String)>("Client connection sent");
if v != 0 goto label;
v = 1;
goto label;
label:
v = 0;
label:
v = specialinvoke v.<org.apache.zookeeper.server.quorum.WatchLeakTest: org.apache.zookeeper.server.quorum.QuorumPacket createValidateSessionPacketResponse(boolean)>(v);
v = v.<org.apache.zookeeper.server.quorum.QuorumPeer: org.apache.zookeeper.server.quorum.Follower follower>;
virtualinvoke v.<org.apache.zookeeper.server.quorum.Follower: void processPacket(org.apache.zookeeper.server.quorum.QuorumPacket)>(v);
v = <org.apache.zookeeper.server.quorum.WatchLeakTest: org.slf4j.Logger LOG>;
interfaceinvoke v.<org.slf4j.Logger: void info(java.lang.String)>("Session validation sent");
virtualinvoke v.<org.apache.zookeeper.server.MockNIOServerCnxn: void doIO(java.nio.channels.SelectionKey)>(v);
staticinvoke <java.lang.Thread: void sleep(long)>(1000L);
v = <org.apache.zookeeper.server.quorum.WatchLeakTest: org.slf4j.Logger LOG>;
interfaceinvoke v.<org.slf4j.Logger: void info(java.lang.String)>("Watches processed");
v = virtualinvoke v.<org.apache.zookeeper.server.ZKDatabase: org.apache.zookeeper.server.DataTree getDataTree()>();
v = virtualinvoke v.<org.apache.zookeeper.server.DataTree: int getWatchCount()>();
if v == 0 goto label;
v = <org.apache.zookeeper.server.quorum.WatchLeakTest: org.slf4j.Logger LOG>;
v = staticinvoke <java.lang.Integer: java.lang.Integer valueOf(int)>(v);
interfaceinvoke v.<org.slf4j.Logger: void info(java.lang.String,java.lang.Object)>("session is not valid, watches = {}", v);
staticinvoke <org.junit.jupiter.api.Assertions: void assertEquals(int,int,java.lang.String)>(0, v, "Session is not valid so there should be no watches");
goto label;
label:
v = <org.apache.zookeeper.server.quorum.WatchLeakTest: org.slf4j.Logger LOG>;
v = staticinvoke <java.lang.Integer: java.lang.Integer valueOf(int)>(v);
interfaceinvoke v.<org.slf4j.Logger: void info(java.lang.String,java.lang.Object)>("session is valid, watches = {}", v);
staticinvoke <org.junit.jupiter.api.Assertions: void assertEquals(int,int,java.lang.String)>(1, v, "Session is valid so the watch should be there");
label:
virtualinvoke v.<org.apache.zookeeper.server.quorum.FollowerZooKeeperServer: void shutdown()>();
goto label;
label:
v := @caughtexception;
if v == null goto label;
virtualinvoke v.<org.apache.zookeeper.server.quorum.FollowerZooKeeperServer: void shutdown()>();
label:
throw v;
label:
return;
catch java.lang.Throwable from label to label with label;
}
private java.nio.ByteBuffer createWatchesMessage()
{
org.apache.zookeeper.MockPacket v;
java.nio.ByteBuffer v;
java.util.ArrayList v;
org.apache.zookeeper.proto.RequestHeader v;
java.util.List v, v;
org.apache.zookeeper.proto.SetWatches v;
int v;
org.apache.zookeeper.proto.ReplyHeader v;
org.apache.zookeeper.server.quorum.WatchLeakTest v;
v := @this: org.apache.zookeeper.server.quorum.WatchLeakTest;
v = new java.util.ArrayList;
specialinvoke v.<java.util.ArrayList: void <init>(int)>(1);
interfaceinvoke v.<java.util.List: boolean add(java.lang.Object)>("/");
v = staticinvoke <java.util.Collections: java.util.List emptyList()>();
v = staticinvoke <java.util.Collections: java.util.List emptyList()>();
v = new org.apache.zookeeper.proto.SetWatches;
specialinvoke v.<org.apache.zookeeper.proto.SetWatches: void <init>(long,java.util.List,java.util.List,java.util.List)>(1L, v, v, v);
v = new org.apache.zookeeper.proto.RequestHeader;
specialinvoke v.<org.apache.zookeeper.proto.RequestHeader: void <init>()>();
virtualinvoke v.<org.apache.zookeeper.proto.RequestHeader: void setType(int)>(101);
v = (int) -8;
virtualinvoke v.<org.apache.zookeeper.proto.RequestHeader: void setXid(int)>(v);
v = new org.apache.zookeeper.MockPacket;
v = new org.apache.zookeeper.proto.ReplyHeader;
specialinvoke v.<org.apache.zookeeper.proto.ReplyHeader: void <init>()>();
specialinvoke v.<org.apache.zookeeper.MockPacket: void <init>(org.apache.zookeeper.proto.RequestHeader,org.apache.zookeeper.proto.ReplyHeader,org.apache.jute.Record,org.apache.jute.Record,org.apache.zookeeper.ZooKeeper$WatchRegistration)>(v, v, v, null, null);
v = virtualinvoke v.<org.apache.zookeeper.MockPacket: java.nio.ByteBuffer createAndReturnBB()>();
return v;
}
private java.nio.ByteBuffer createConnRequest()
{
byte[] v;
java.util.Random v;
org.apache.zookeeper.MockPacket v;
org.apache.zookeeper.proto.ConnectRequest v;
org.apache.zookeeper.server.quorum.WatchLeakTest v;
java.nio.ByteBuffer v;
v := @this: org.apache.zookeeper.server.quorum.WatchLeakTest;
v = new java.util.Random;
specialinvoke v.<java.util.Random: void <init>(long)>(3007440574L);
v = newarray (byte)[16];
virtualinvoke v.<java.util.Random: void nextBytes(byte[])>(v);
v = new org.apache.zookeeper.proto.ConnectRequest;
specialinvoke v.<org.apache.zookeeper.proto.ConnectRequest: void <init>(int,long,int,long,byte[],boolean)>(0, 1L, 30000, 47806L, v, 0);
v = new org.apache.zookeeper.MockPacket;
specialinvoke v.<org.apache.zookeeper.MockPacket: void <init>(org.apache.zookeeper.proto.RequestHeader,org.apache.zookeeper.proto.ReplyHeader,org.apache.jute.Record,org.apache.jute.Record,org.apache.zookeeper.ZooKeeper$WatchRegistration)>(null, null, v, null, null);
v = virtualinvoke v.<org.apache.zookeeper.MockPacket: java.nio.ByteBuffer createAndReturnBB()>();
return v;
}
private java.nio.channels.SocketChannel createClientSocketChannel() throws java.io.IOException
{
java.net.Socket v;
java.net.SocketAddress v;
java.lang.Integer v;
java.nio.ByteBuffer v, v, v;
int v, v, v, v;
org.apache.zookeeper.server.quorum.WatchLeakTest$2 v;
org.mockito.stubbing.OngoingStubbing v, v, v;
java.net.InetSocketAddress v;
java.lang.Object v, v, v;
org.apache.zookeeper.server.quorum.WatchLeakTest v;
v := @this: org.apache.zookeeper.server.quorum.WatchLeakTest;
v = staticinvoke <org.mockito.Mockito: java.lang.Object mock(java.lang.Class)>(class "Ljava/nio/channels/SocketChannel;");
v = staticinvoke <org.mockito.Mockito: java.lang.Object mock(java.lang.Class)>(class "Ljava/net/Socket;");
v = new java.net.InetSocketAddress;
specialinvoke v.<java.net.InetSocketAddress: void <init>(int)>(1234);
v = virtualinvoke v.<java.net.Socket: java.net.SocketAddress getRemoteSocketAddress()>();
v = staticinvoke <org.mockito.Mockito: org.mockito.stubbing.OngoingStubbing when(java.lang.Object)>(v);
interfaceinvoke v.<org.mockito.stubbing.OngoingStubbing: org.mockito.stubbing.OngoingStubbing thenReturn(java.lang.Object)>(v);
v = virtualinvoke v.<java.nio.channels.SocketChannel: java.net.Socket socket()>();
v = staticinvoke <org.mockito.Mockito: org.mockito.stubbing.OngoingStubbing when(java.lang.Object)>(v);
interfaceinvoke v.<org.mockito.stubbing.OngoingStubbing: org.mockito.stubbing.OngoingStubbing thenReturn(java.lang.Object)>(v);
v = specialinvoke v.<org.apache.zookeeper.server.quorum.WatchLeakTest: java.nio.ByteBuffer createConnRequest()>();
v = specialinvoke v.<org.apache.zookeeper.server.quorum.WatchLeakTest: java.nio.ByteBuffer createWatchesMessage()>();
v = virtualinvoke v.<java.nio.ByteBuffer: int limit()>();
v = virtualinvoke v.<java.nio.ByteBuffer: int limit()>();
v = v + v;
v = staticinvoke <java.nio.ByteBuffer: java.nio.ByteBuffer allocate(int)>(v);
virtualinvoke v.<java.nio.ByteBuffer: java.nio.ByteBuffer put(java.nio.ByteBuffer)>(v);
virtualinvoke v.<java.nio.ByteBuffer: java.nio.ByteBuffer put(java.nio.ByteBuffer)>(v);
v = new org.apache.zookeeper.server.quorum.WatchLeakTest$2;
specialinvoke v.<org.apache.zookeeper.server.quorum.WatchLeakTest$2: void <init>(org.apache.zookeeper.server.quorum.WatchLeakTest,java.nio.ByteBuffer)>(v, v);
v = staticinvoke <org.mockito.ArgumentMatchers: java.lang.Object any(java.lang.Class)>(class "Ljava/nio/ByteBuffer;");
v = virtualinvoke v.<java.nio.channels.SocketChannel: int read(java.nio.ByteBuffer)>(v);
v = staticinvoke <java.lang.Integer: java.lang.Integer valueOf(int)>(v);
v = staticinvoke <org.mockito.Mockito: org.mockito.stubbing.OngoingStubbing when(java.lang.Object)>(v);
interfaceinvoke v.<org.mockito.stubbing.OngoingStubbing: org.mockito.stubbing.OngoingStubbing thenAnswer(org.mockito.stubbing.Answer)>(v);
return v;
}
private org.apache.zookeeper.server.quorum.QuorumPacket createValidateSessionPacketResponse(boolean) throws java.lang.Exception
{
byte[] v, v;
java.io.DataInputStream v;
java.io.ByteArrayOutputStream v;
long v;
org.apache.zookeeper.server.quorum.QuorumPacket v;
java.io.ByteArrayInputStream v;
java.io.DataOutputStream v;
org.apache.zookeeper.server.quorum.WatchLeakTest v;
boolean v;
v := @this: org.apache.zookeeper.server.quorum.WatchLeakTest;
v := @parameter: boolean;
v = specialinvoke v.<org.apache.zookeeper.server.quorum.WatchLeakTest: org.apache.zookeeper.server.quorum.QuorumPacket createValidateSessionPacket()>();
v = new java.io.ByteArrayInputStream;
v = virtualinvoke v.<org.apache.zookeeper.server.quorum.QuorumPacket: byte[] getData()>();
specialinvoke v.<java.io.ByteArrayInputStream: void <init>(byte[])>(v);
v = new java.io.DataInputStream;
specialinvoke v.<java.io.DataInputStream: void <init>(java.io.InputStream)>(v);
v = virtualinvoke v.<java.io.DataInputStream: long readLong()>();
v = new java.io.ByteArrayOutputStream;
specialinvoke v.<java.io.ByteArrayOutputStream: void <init>()>();
v = new java.io.DataOutputStream;
specialinvoke v.<java.io.DataOutputStream: void <init>(java.io.OutputStream)>(v);
virtualinvoke v.<java.io.DataOutputStream: void writeLong(long)>(v);
virtualinvoke v.<java.io.DataOutputStream: void writeBoolean(boolean)>(v);
v = virtualinvoke v.<java.io.ByteArrayOutputStream: byte[] toByteArray()>();
virtualinvoke v.<org.apache.zookeeper.server.quorum.QuorumPacket: void setData(byte[])>(v);
return v;
}
private org.apache.zookeeper.server.quorum.QuorumPacket createValidateSessionPacket() throws java.lang.Exception
{
org.apache.zookeeper.server.quorum.QuorumPacket v;
byte[] v;
java.io.ByteArrayOutputStream v;
java.io.DataOutputStream v;
org.apache.zookeeper.server.quorum.WatchLeakTest v;
v := @this: org.apache.zookeeper.server.quorum.WatchLeakTest;
v = new java.io.ByteArrayOutputStream;
specialinvoke v.<java.io.ByteArrayOutputStream: void <init>()>();
v = new java.io.DataOutputStream;
specialinvoke v.<java.io.DataOutputStream: void <init>(java.io.OutputStream)>(v);
virtualinvoke v.<java.io.DataOutputStream: void writeLong(long)>(47806L);
virtualinvoke v.<java.io.DataOutputStream: void writeInt(int)>(3000);
virtualinvoke v.<java.io.DataOutputStream: void close()>();
v = new org.apache.zookeeper.server.quorum.QuorumPacket;
v = virtualinvoke v.<java.io.ByteArrayOutputStream: byte[] toByteArray()>();
specialinvoke v.<org.apache.zookeeper.server.quorum.QuorumPacket: void <init>(int,long,byte[],java.util.List)>(6, -1L, v, null);
return v;
}
static void <clinit>()
{
org.slf4j.Logger v;
v = staticinvoke <org.slf4j.LoggerFactory: org.slf4j.Logger getLogger(java.lang.Class)>(class "Lorg/apache/zookeeper/server/quorum/WatchLeakTest;");
<org.apache.zookeeper.server.quorum.WatchLeakTest: org.slf4j.Logger LOG> = v;
return;
}
}