You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@geode.apache.org by kl...@apache.org on 2016/04/27 01:17:22 UTC
[10/16] incubator-geode git commit: Updating and fixing tests
http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/ef0a6243/geode-core/src/test/java/com/gemstone/gemfire/distributed/internal/membership/gms/membership/StatRecorderJUnitTest.java
----------------------------------------------------------------------
diff --git a/geode-core/src/test/java/com/gemstone/gemfire/distributed/internal/membership/gms/membership/StatRecorderJUnitTest.java b/geode-core/src/test/java/com/gemstone/gemfire/distributed/internal/membership/gms/membership/StatRecorderJUnitTest.java
index b7b80ac..ed50a3a 100755
--- a/geode-core/src/test/java/com/gemstone/gemfire/distributed/internal/membership/gms/membership/StatRecorderJUnitTest.java
+++ b/geode-core/src/test/java/com/gemstone/gemfire/distributed/internal/membership/gms/membership/StatRecorderJUnitTest.java
@@ -16,6 +16,23 @@
*/
package com.gemstone.gemfire.distributed.internal.membership.gms.membership;
+import static org.junit.Assert.*;
+import static org.mockito.Matchers.any;
+import static org.mockito.Matchers.isA;
+import static org.mockito.Mockito.*;
+
+import java.util.Properties;
+import java.util.concurrent.RejectedExecutionException;
+
+import org.jgroups.Event;
+import org.jgroups.Message;
+import org.jgroups.protocols.UNICAST3.Header;
+import org.jgroups.protocols.pbcast.NakAckHeader2;
+import org.jgroups.stack.Protocol;
+import org.junit.Before;
+import org.junit.Test;
+import org.junit.experimental.categories.Category;
+
import com.gemstone.gemfire.distributed.internal.DistributionConfig;
import com.gemstone.gemfire.distributed.internal.DistributionConfigImpl;
import com.gemstone.gemfire.distributed.internal.DistributionManager;
@@ -27,23 +44,6 @@ import com.gemstone.gemfire.distributed.internal.membership.gms.messenger.JGroup
import com.gemstone.gemfire.distributed.internal.membership.gms.messenger.StatRecorder;
import com.gemstone.gemfire.internal.admin.remote.RemoteTransportConfig;
import com.gemstone.gemfire.test.junit.categories.UnitTest;
-import org.jgroups.Event;
-import org.jgroups.Message;
-import org.jgroups.protocols.UNICAST3.Header;
-import org.jgroups.protocols.pbcast.NakAckHeader2;
-import org.jgroups.stack.Protocol;
-import org.junit.Before;
-import org.junit.Test;
-import org.junit.experimental.categories.Category;
-
-import java.util.Properties;
-import java.util.concurrent.RejectedExecutionException;
-
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertTrue;
-import static org.mockito.Matchers.any;
-import static org.mockito.Matchers.isA;
-import static org.mockito.Mockito.*;
/**
* This class tests the GMS StatRecorder class, which records JGroups
@@ -51,18 +51,24 @@ import static org.mockito.Mockito.*;
*/
@Category(UnitTest.class)
public class StatRecorderJUnitTest {
- Protocol mockDownProtocol, mockUpProtocol;
- StatRecorder recorder;
- MyStats stats = new MyStats();
- Services services;
+
+ private Protocol mockDownProtocol;
+ private Protocol mockUpProtocol;
+ private StatRecorder recorder;
+ private MyStats stats;
+ private Services services;
@Before
- public void initMocks() throws Exception {
+ public void setUp() throws Exception {
+ stats = new MyStats();
+
// create a StatRecorder that has mock up/down protocols and stats
mockDownProtocol = mock(Protocol.class);
mockUpProtocol = mock(Protocol.class);
+
services = mock(Services.class);
when(services.getStatistics()).thenReturn(stats);
+
recorder = new StatRecorder();
recorder.setServices(services);
recorder.setUpProtocol(mockUpProtocol);
@@ -105,7 +111,6 @@ public class StatRecorderJUnitTest {
when(msg.getHeader(any(Short.class))).thenReturn(Header.createDataHeader(1L, (short)1, true));
when(msg.size()).thenReturn(150L);
-
// GEODE-1178, the TP protocol may throw a RejectedExecutionException & StatRecorder should retry
when(mockDownProtocol.down(any(Event.class))).thenThrow(new RejectedExecutionException());
@@ -161,8 +166,7 @@ public class StatRecorderJUnitTest {
assertTrue("mcastRetransmits = " + stats.mcastRetransmits,
stats.mcastRetransmits == 1);
}
-
-
+
/**
* Ensure that the messenger JGroups configuration XML strings contain
* the statistics recorder protocol
@@ -201,7 +205,8 @@ public class StatRecorderJUnitTest {
assertTrue(jgroupsConfig.contains("gms.messenger.StatRecorder"));
}
- static class MyStats extends DummyDMStats {
+ private static class MyStats extends DummyDMStats {
+
public int ucastMessagesReceived;
public int ucastMessageBytesReceived;
public int ucastMessagesSent;
http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/ef0a6243/geode-core/src/test/java/com/gemstone/gemfire/distributed/internal/membership/gms/messenger/GMSQuorumCheckerJUnitTest.java
----------------------------------------------------------------------
diff --git a/geode-core/src/test/java/com/gemstone/gemfire/distributed/internal/membership/gms/messenger/GMSQuorumCheckerJUnitTest.java b/geode-core/src/test/java/com/gemstone/gemfire/distributed/internal/membership/gms/messenger/GMSQuorumCheckerJUnitTest.java
index 904a206..0e2a617 100644
--- a/geode-core/src/test/java/com/gemstone/gemfire/distributed/internal/membership/gms/messenger/GMSQuorumCheckerJUnitTest.java
+++ b/geode-core/src/test/java/com/gemstone/gemfire/distributed/internal/membership/gms/messenger/GMSQuorumCheckerJUnitTest.java
@@ -16,12 +16,11 @@
*/
package com.gemstone.gemfire.distributed.internal.membership.gms.messenger;
+import static org.junit.Assert.*;
import static org.mockito.Matchers.any;
-import static org.mockito.Mockito.mock;
-import static org.mockito.Mockito.when;
+import static org.mockito.Mockito.*;
import java.io.IOException;
-import java.net.UnknownHostException;
import java.util.HashSet;
import java.util.LinkedList;
import java.util.List;
@@ -33,7 +32,6 @@ import org.jgroups.Message;
import org.jgroups.Receiver;
import org.jgroups.stack.IpAddress;
import org.jgroups.util.UUID;
-import org.junit.Assert;
import org.junit.Before;
import org.junit.Test;
import org.junit.experimental.categories.Category;
@@ -44,60 +42,17 @@ import org.mockito.stubbing.Answer;
import com.gemstone.gemfire.distributed.internal.DistributionManager;
import com.gemstone.gemfire.distributed.internal.membership.InternalDistributedMember;
import com.gemstone.gemfire.distributed.internal.membership.NetView;
-import com.gemstone.gemfire.distributed.internal.membership.gms.Services;
import com.gemstone.gemfire.test.junit.categories.UnitTest;
@Category(UnitTest.class)
public class GMSQuorumCheckerJUnitTest {
private InternalDistributedMember[] mockMembers;
-
- private Services services;
-
private JChannel channel;
-
private JGAddress address;
- private class PingMessageAnswer implements Answer {
- private int pingCount = 0;
- private JChannel channel;
- private GMSPingPonger pingPonger = new GMSPingPonger();
- private Set<Integer> simulatedPongRespondersByPort;
-
- public PingMessageAnswer(JChannel channel, Set<Integer> simulatedPongRespondersByPort) {
- this.channel = channel;
- this.simulatedPongRespondersByPort = simulatedPongRespondersByPort;
- }
-
- @Override
- public Object answer(InvocationOnMock invocation) throws Throwable {
- Object[] args = invocation.getArguments();
- for (int i = 0; i < args.length; i++) {
- if (args[i] instanceof Message) {
- Message msg = (Message) args[i];
- Object content = null;
- content = msg.getBuffer();
- if (content instanceof byte[]) {
- if (pingPonger.isPingMessage((byte[]) content)) {
- pingCount++;
- if (simulatedPongRespondersByPort.contains(((JGAddress)msg.getDest()).getPort())) {
- channel.getReceiver().receive(pingPonger.createPongMessage(msg.getDest(), msg.getSrc()));
- }
- }
- }
- }
- }
- return null;
- }
-
- public int getPingCount() {
- return pingCount;
- }
-
- }
-
@Before
- public void initMocks() throws UnknownHostException, Exception {
+ public void initMocks() throws Exception {
mockMembers = new InternalDistributedMember[12];
for (int i = 0; i < mockMembers.length; i++) {
mockMembers[i] = new InternalDistributedMember("localhost", 8888 + i);
@@ -111,22 +66,6 @@ public class GMSQuorumCheckerJUnitTest {
Mockito.doReturn(address).when(channel).down(any(Event.class));
}
- private NetView prepareView() throws IOException {
- return prepareView(mockMembers.length);
- }
-
- private NetView prepareView(int numMembers) throws IOException {
- int viewId = 1;
- List<InternalDistributedMember> mbrs = new LinkedList<InternalDistributedMember>();
- for (int i = 0; i < numMembers; i++) {
- mbrs.add(mockMembers[i]);
- }
-
- // prepare the view
- NetView netView = new NetView(mockMembers[0], viewId, mbrs);
- return netView;
- }
-
@Test
public void testQuorumCheckerAllRespond() throws Exception {
NetView view = prepareView();
@@ -140,10 +79,10 @@ public class GMSQuorumCheckerJUnitTest {
GMSQuorumChecker qc = new GMSQuorumChecker(view, 51, channel);
qc.initialize();
boolean quorum = qc.checkForQuorum(500);
- Assert.assertTrue(quorum);
- Assert.assertSame(view.getMembers().size(), answerer.getPingCount());
- Assert.assertTrue(qc.checkForQuorum(500));
- Assert.assertSame(qc.getMembershipInfo(), channel);
+ assertTrue(quorum);
+ assertSame(view.getMembers().size(), answerer.getPingCount());
+ assertTrue(qc.checkForQuorum(500));
+ assertSame(qc.getMembershipInfo(), channel);
}
@Test
@@ -159,8 +98,8 @@ public class GMSQuorumCheckerJUnitTest {
GMSQuorumChecker qc = new GMSQuorumChecker(view, 51, channel);
qc.initialize();
boolean quorum = qc.checkForQuorum(500);
- Assert.assertTrue(quorum);
- Assert.assertSame(view.getMembers().size(), answerer.getPingCount());
+ assertTrue(quorum);
+ assertSame(view.getMembers().size(), answerer.getPingCount());
}
@Test
@@ -174,8 +113,8 @@ public class GMSQuorumCheckerJUnitTest {
GMSQuorumChecker qc = new GMSQuorumChecker(view, 51, channel);
qc.initialize();
boolean quorum = qc.checkForQuorum(500);
- Assert.assertFalse(quorum);
- Assert.assertSame(view.getMembers().size(), answerer.getPingCount());
+ assertFalse(quorum);
+ assertSame(view.getMembers().size(), answerer.getPingCount());
}
@Test
@@ -188,8 +127,8 @@ public class GMSQuorumCheckerJUnitTest {
GMSQuorumChecker qc = new GMSQuorumChecker(view, 51, channel);
qc.initialize();
boolean quorum = qc.checkForQuorum(500);
- Assert.assertFalse(quorum);
- Assert.assertSame(view.getMembers().size(), answerer.getPingCount());
+ assertFalse(quorum);
+ assertSame(view.getMembers().size(), answerer.getPingCount());
}
@Test
@@ -202,6 +141,7 @@ public class GMSQuorumCheckerJUnitTest {
for (int i = 0; i < mockMembers.length; i++) {
pongResponders.add(mockMembers[i].getPort());
}
+
//remove 4 servers
pongResponders.remove(mockMembers[8].getPort());
pongResponders.remove(mockMembers[9].getPort());
@@ -214,8 +154,8 @@ public class GMSQuorumCheckerJUnitTest {
GMSQuorumChecker qc = new GMSQuorumChecker(view, 51, channel);
qc.initialize();
boolean quorum = qc.checkForQuorum(500);
- Assert.assertTrue(quorum);
- Assert.assertSame(view.getMembers().size(), answerer.getPingCount());
+ assertTrue(quorum);
+ assertSame(view.getMembers().size(), answerer.getPingCount());
}
@Test
@@ -228,23 +168,24 @@ public class GMSQuorumCheckerJUnitTest {
for (int i = 0; i < mockMembers.length; i++) {
pongResponders.add(mockMembers[i].getPort());
}
+
//remove 4 servers
pongResponders.remove(mockMembers[8].getPort());
pongResponders.remove(mockMembers[9].getPort());
pongResponders.remove(mockMembers[10].getPort());
pongResponders.remove(mockMembers[11].getPort());
+
//remove 1 locator
pongResponders.remove(mockMembers[1].getPort());
-
PingMessageAnswer answerer = new PingMessageAnswer(channel, pongResponders);
Mockito.doAnswer(answerer).when(channel).send(any(Message.class));
GMSQuorumChecker qc = new GMSQuorumChecker(view, 51, channel);
qc.initialize();
boolean quorum = qc.checkForQuorum(500);
- Assert.assertTrue(quorum);
- Assert.assertSame(view.getMembers().size(), answerer.getPingCount());
+ assertTrue(quorum);
+ assertSame(view.getMembers().size(), answerer.getPingCount());
}
@Test
@@ -257,12 +198,14 @@ public class GMSQuorumCheckerJUnitTest {
for (int i = 0; i < mockMembers.length; i++) {
pongResponders.add(mockMembers[i].getPort());
}
+
//remove 5 servers
pongResponders.remove(mockMembers[7].getPort());
pongResponders.remove(mockMembers[8].getPort());
pongResponders.remove(mockMembers[9].getPort());
pongResponders.remove(mockMembers[10].getPort());
pongResponders.remove(mockMembers[11].getPort());
+
//remove locators
pongResponders.remove(mockMembers[0].getPort());
pongResponders.remove(mockMembers[1].getPort());
@@ -273,8 +216,8 @@ public class GMSQuorumCheckerJUnitTest {
GMSQuorumChecker qc = new GMSQuorumChecker(view, 51, channel);
qc.initialize();
boolean quorum = qc.checkForQuorum(500);
- Assert.assertFalse(quorum);
- Assert.assertSame(view.getMembers().size(), answerer.getPingCount());
+ assertFalse(quorum);
+ assertSame(view.getMembers().size(), answerer.getPingCount());
}
@Test
@@ -303,8 +246,8 @@ public class GMSQuorumCheckerJUnitTest {
GMSQuorumChecker qc = new GMSQuorumChecker(view, 51, channel);
qc.initialize();
boolean quorum = qc.checkForQuorum(500);
- Assert.assertFalse(quorum);
- Assert.assertSame(view.getMembers().size(), answerer.getPingCount());
+ assertFalse(quorum);
+ assertSame(view.getMembers().size(), answerer.getPingCount());
}
@Test
@@ -327,8 +270,8 @@ public class GMSQuorumCheckerJUnitTest {
GMSQuorumChecker qc = new GMSQuorumChecker(view, 51, channel);
qc.initialize();
boolean quorum = qc.checkForQuorum(500);
- Assert.assertTrue(quorum);
- Assert.assertSame(view.getMembers().size(), answerer.getPingCount());
+ assertTrue(quorum);
+ assertSame(view.getMembers().size(), answerer.getPingCount());
}
@Test
@@ -352,8 +295,61 @@ public class GMSQuorumCheckerJUnitTest {
GMSQuorumChecker qc = new GMSQuorumChecker(view, 51, channel);
qc.initialize();
boolean quorum = qc.checkForQuorum(500);
- Assert.assertFalse(quorum);
- Assert.assertSame(view.getMembers().size(), answerer.getPingCount());
+ assertFalse(quorum);
+ assertSame(view.getMembers().size(), answerer.getPingCount());
+ }
+
+ private NetView prepareView() throws IOException {
+ return prepareView(mockMembers.length);
+ }
+
+ private NetView prepareView(int numMembers) throws IOException {
+ int viewId = 1;
+ List<InternalDistributedMember> mbrs = new LinkedList<InternalDistributedMember>();
+ for (int i = 0; i < numMembers; i++) {
+ mbrs.add(mockMembers[i]);
+ }
+
+ // prepare the view
+ NetView netView = new NetView(mockMembers[0], viewId, mbrs);
+ return netView;
+ }
+
+ private static class PingMessageAnswer implements Answer {
+
+ private int pingCount = 0;
+ private JChannel channel;
+ private GMSPingPonger pingPonger = new GMSPingPonger();
+ private Set<Integer> simulatedPongRespondersByPort;
+
+ public PingMessageAnswer(JChannel channel, Set<Integer> simulatedPongRespondersByPort) {
+ this.channel = channel;
+ this.simulatedPongRespondersByPort = simulatedPongRespondersByPort;
+ }
+
+ @Override
+ public Object answer(InvocationOnMock invocation) throws Throwable {
+ Object[] args = invocation.getArguments();
+ for (int i = 0; i < args.length; i++) {
+ if (args[i] instanceof Message) {
+ Message msg = (Message) args[i];
+ Object content = null;
+ content = msg.getBuffer();
+ if (content instanceof byte[]) {
+ if (pingPonger.isPingMessage((byte[]) content)) {
+ pingCount++;
+ if (simulatedPongRespondersByPort.contains(((JGAddress)msg.getDest()).getPort())) {
+ channel.getReceiver().receive(pingPonger.createPongMessage(msg.getDest(), msg.getSrc()));
+ }
+ }
+ }
+ }
+ }
+ return null;
+ }
+
+ public int getPingCount() {
+ return pingCount;
+ }
}
-
}
http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/ef0a6243/geode-core/src/test/java/com/gemstone/gemfire/distributed/internal/membership/gms/mgr/GMSMembershipManagerJUnitTest.java
----------------------------------------------------------------------
diff --git a/geode-core/src/test/java/com/gemstone/gemfire/distributed/internal/membership/gms/mgr/GMSMembershipManagerJUnitTest.java b/geode-core/src/test/java/com/gemstone/gemfire/distributed/internal/membership/gms/mgr/GMSMembershipManagerJUnitTest.java
index 952f347..a1d7a2d 100755
--- a/geode-core/src/test/java/com/gemstone/gemfire/distributed/internal/membership/gms/mgr/GMSMembershipManagerJUnitTest.java
+++ b/geode-core/src/test/java/com/gemstone/gemfire/distributed/internal/membership/gms/mgr/GMSMembershipManagerJUnitTest.java
@@ -16,18 +16,11 @@
*/
package com.gemstone.gemfire.distributed.internal.membership.gms.mgr;
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertFalse;
-import static org.junit.Assert.assertTrue;
+import static org.junit.Assert.*;
import static org.mockito.Matchers.any;
import static org.mockito.Matchers.anyInt;
import static org.mockito.Matchers.isA;
-import static org.mockito.Mockito.atLeastOnce;
-import static org.mockito.Mockito.mock;
-import static org.mockito.Mockito.never;
-import static org.mockito.Mockito.reset;
-import static org.mockito.Mockito.verify;
-import static org.mockito.Mockito.when;
+import static org.mockito.Mockito.*;
import java.util.ArrayList;
import java.util.Arrays;
@@ -77,6 +70,9 @@ import com.gemstone.gemfire.test.junit.categories.UnitTest;
@Category(UnitTest.class)
public class GMSMembershipManagerJUnitTest {
+
+ private static final long WAIT_FOR_REPLIES_MILLIS = 2000;
+
private Services services;
private ServiceConfig mockConfig;
private DistributionConfig distConfig;
@@ -88,7 +84,7 @@ public class GMSMembershipManagerJUnitTest {
private Messenger messenger;
private JoinLeave joinLeave;
private Stopper stopper;
- DistributedMembershipListener listener;
+ private DistributedMembershipListener listener;
private GMSMembershipManager manager;
private List<InternalDistributedMember> members;
private DirectChannel dc;
@@ -107,10 +103,8 @@ public class GMSMembershipManagerJUnitTest {
nonDefault.put(DistributionConfig.LOCATORS_NAME, "localhost[10344]");
distConfig = new DistributionConfigImpl(nonDefault);
distProperties = nonDefault;
- RemoteTransportConfig tconfig = new RemoteTransportConfig(distConfig,
- DistributionManager.NORMAL_DM_TYPE);
+ RemoteTransportConfig tconfig = new RemoteTransportConfig(distConfig, DistributionManager.NORMAL_DM_TYPE);
-
mockConfig = mock(ServiceConfig.class);
when(mockConfig.getDistributionConfig()).thenReturn(distConfig);
when(mockConfig.getTransport()).thenReturn(tconfig);
@@ -257,7 +251,6 @@ public class GMSMembershipManagerJUnitTest {
manager.handleOrDeferSurpriseConnect(surpriseMember);
assertEquals(5, manager.getStartupEvents().size());
-
// process a new view after we finish joining but before event processing has started
manager.isJoining = false;
mockMembers[4].setVmViewId(4);
@@ -296,26 +289,6 @@ public class GMSMembershipManagerJUnitTest {
verify(listener).memberSuspect(suspectMember, mockMembers[0], "testing");
}
- /**
- * Some tests require a DirectChannel mock
- */
- private void setUpDirectChannelMock() throws Exception {
- dc = mock(DirectChannel.class);
- when(dc.send(any(GMSMembershipManager.class), any(mockMembers.getClass()), any(DistributionMessage.class), anyInt(), anyInt()))
- .thenReturn(100);
-
- manager.start();
- manager.started();
-
- manager.setDirectChannel(dc);
-
- NetView view = new NetView(myMemberId, 1, members);
- manager.installView(view);
- when(joinLeave.getView()).thenReturn(view);
-
- manager.startEventProcessing();
- }
-
@Test
public void testDirectChannelSend() throws Exception {
setUpDirectChannelMock();
@@ -357,9 +330,8 @@ public class GMSMembershipManagerJUnitTest {
when(stopper.cancelInProgress()).thenReturn("stopping for test");
try {
manager.directChannelSend(recipients, m, null);
- throw new RuntimeException("expected directChannelSend to throw an exception");
- } catch (DistributedSystemDisconnectedException e) {
- // expected
+ fail("expected directChannelSend to throw an exception");
+ } catch (DistributedSystemDisconnectedException expected) {
}
}
@@ -427,10 +399,29 @@ public class GMSMembershipManagerJUnitTest {
mbrs.add(mockMembers[0]);
ReplyProcessor21 rp = new ReplyProcessor21(dm, mbrs);
rp.enableSevereAlertProcessing();
- boolean result = rp.waitForReplies(2000);
+ boolean result = rp.waitForReplies(WAIT_FOR_REPLIES_MILLIS);
assertFalse(result); // the wait should have timed out
verify(healthMonitor, atLeastOnce()).checkIfAvailable(isA(InternalDistributedMember.class), isA(String.class), isA(Boolean.class));
}
-
-}
+ /**
+ * Some tests require a DirectChannel mock
+ */
+ private void setUpDirectChannelMock() throws Exception {
+ dc = mock(DirectChannel.class);
+ when(dc.send(any(GMSMembershipManager.class), any(mockMembers.getClass()), any(DistributionMessage.class), anyInt(), anyInt()))
+ .thenReturn(100);
+
+ manager.start();
+ manager.started();
+
+ manager.setDirectChannel(dc);
+
+ NetView view = new NetView(myMemberId, 1, members);
+ manager.installView(view);
+ when(joinLeave.getView()).thenReturn(view);
+
+ manager.startEventProcessing();
+ }
+
+}
http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/ef0a6243/geode-core/src/test/java/com/gemstone/gemfire/distributed/internal/tcpserver/TcpServerBackwardCompatDUnitTest.java
----------------------------------------------------------------------
diff --git a/geode-core/src/test/java/com/gemstone/gemfire/distributed/internal/tcpserver/TcpServerBackwardCompatDUnitTest.java b/geode-core/src/test/java/com/gemstone/gemfire/distributed/internal/tcpserver/TcpServerBackwardCompatDUnitTest.java
index 8723505..5fd0f27 100644
--- a/geode-core/src/test/java/com/gemstone/gemfire/distributed/internal/tcpserver/TcpServerBackwardCompatDUnitTest.java
+++ b/geode-core/src/test/java/com/gemstone/gemfire/distributed/internal/tcpserver/TcpServerBackwardCompatDUnitTest.java
@@ -158,8 +158,8 @@ public class TcpServerBackwardCompatDUnitTest extends DistributedTestCase {
TcpServer.OLDTESTVERSION -= 100;
TcpServer.getGossipVersionMapForTestOnly().put(TcpServer.TESTVERSION, Version.CURRENT_ORDINAL);
TcpServer.getGossipVersionMapForTestOnly().put(TcpServer.OLDTESTVERSION, Version.GFE_57.ordinal());
-// assertEquals("Gossip Version and Test version are not same", TcpServer.GOSSIPVERSION, TcpServer.TESTVERSION);
-// assertEquals("Previous Gossip Version and Test version are not same", TcpServer.OLDGOSSIPVERSION, TcpServer.OLDTESTVERSION);
+// assertIndexDetailsEquals("Gossip Version and Test version are not same", TcpServer.GOSSIPVERSION, TcpServer.TESTVERSION);
+// assertIndexDetailsEquals("Previous Gossip Version and Test version are not same", TcpServer.OLDGOSSIPVERSION, TcpServer.OLDTESTVERSION);
Locator.startLocatorAndDS(port1, logFile1, props);
@@ -198,8 +198,8 @@ public class TcpServerBackwardCompatDUnitTest extends DistributedTestCase {
TcpServer.OLDTESTVERSION -= 100;
TcpServer.getGossipVersionMapForTestOnly().put(TcpServer.TESTVERSION, Version.CURRENT_ORDINAL);
TcpServer.getGossipVersionMapForTestOnly().put(TcpServer.OLDTESTVERSION, Version.GFE_57.ordinal());
-// assertEquals("Gossip Version and Test version are not same", TcpServer.GOSSIPVERSION, TcpServer.TESTVERSION);
-// assertEquals("Previous Gossip Version and Test version are not same", TcpServer.OLDGOSSIPVERSION, TcpServer.OLDTESTVERSION);
+// assertIndexDetailsEquals("Gossip Version and Test version are not same", TcpServer.GOSSIPVERSION, TcpServer.TESTVERSION);
+// assertIndexDetailsEquals("Previous Gossip Version and Test version are not same", TcpServer.OLDGOSSIPVERSION, TcpServer.OLDTESTVERSION);
Locator.startLocatorAndDS(port0, logFile0, props);
http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/ef0a6243/geode-core/src/test/java/com/gemstone/gemfire/distributed/internal/tcpserver/TcpServerJUnitTest.java
----------------------------------------------------------------------
diff --git a/geode-core/src/test/java/com/gemstone/gemfire/distributed/internal/tcpserver/TcpServerJUnitTest.java b/geode-core/src/test/java/com/gemstone/gemfire/distributed/internal/tcpserver/TcpServerJUnitTest.java
index 4594889..9b1b8d3 100644
--- a/geode-core/src/test/java/com/gemstone/gemfire/distributed/internal/tcpserver/TcpServerJUnitTest.java
+++ b/geode-core/src/test/java/com/gemstone/gemfire/distributed/internal/tcpserver/TcpServerJUnitTest.java
@@ -39,11 +39,9 @@ import com.gemstone.gemfire.distributed.DistributedSystem;
import com.gemstone.gemfire.distributed.internal.PoolStatHelper;
import com.gemstone.gemfire.distributed.internal.SharedConfiguration;
import com.gemstone.gemfire.internal.AvailablePort;
-//import com.gemstone.org.jgroups.stack.GossipClient;
-//import com.gemstone.org.jgroups.stack.IpAddress;
-import com.gemstone.gemfire.test.junit.categories.UnitTest;
+import com.gemstone.gemfire.test.junit.categories.IntegrationTest;
-@Category(UnitTest.class)
+@Category(IntegrationTest.class)
public class TcpServerJUnitTest {
protected/*GemStoneAddition*/ InetAddress localhost;
http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/ef0a6243/geode-core/src/test/java/com/gemstone/gemfire/internal/AbstractConfigJUnitTest.java
----------------------------------------------------------------------
diff --git a/geode-core/src/test/java/com/gemstone/gemfire/internal/AbstractConfigJUnitTest.java b/geode-core/src/test/java/com/gemstone/gemfire/internal/AbstractConfigJUnitTest.java
index 80c92e6..234d032 100644
--- a/geode-core/src/test/java/com/gemstone/gemfire/internal/AbstractConfigJUnitTest.java
+++ b/geode-core/src/test/java/com/gemstone/gemfire/internal/AbstractConfigJUnitTest.java
@@ -18,97 +18,74 @@ package com.gemstone.gemfire.internal;
import static org.junit.Assert.*;
-import org.apache.logging.log4j.Logger;
-import org.junit.After;
-import org.junit.Before;
-import org.junit.Rule;
-import org.junit.Test;
-import org.junit.experimental.categories.Category;
-import org.junit.rules.TestName;
-import com.gemstone.gemfire.distributed.internal.DistributionConfigImpl;
-
-import java.lang.reflect.InvocationTargetException;
import java.lang.reflect.Method;
import java.util.Map;
-import java.util.Properties;
-import junit.framework.TestCase;
+
+import org.junit.Test;
import org.junit.experimental.categories.Category;
+
import com.gemstone.gemfire.test.junit.categories.UnitTest;
@Category(UnitTest.class)
-public class AbstractConfigJUnitTest extends TestCase {
+public class AbstractConfigJUnitTest {
@Test
- public void testDisplayPropertyValue(){
- AbstractConfigTestClass actc=new AbstractConfigTestClass();
- Method method=null;
- try{
- method=actc.getClass().getSuperclass().getDeclaredMethod("okToDisplayPropertyValue",String.class);
- method.setAccessible(true);
- assertFalse((Boolean) method.invoke(actc, "password"));
- assertFalse((Boolean)method.invoke(actc,"cluster-ssl-truststore-password"));
- assertTrue((Boolean) method.invoke(actc, "cluster-ssl-enabled"));
- assertFalse((Boolean)method.invoke(actc,"gateway-ssl-truststore-password"));
- assertFalse((Boolean)method.invoke(actc,"server-ssl-keystore-password"));
- assertTrue((Boolean) method.invoke(actc, "ssl-enabled"));
- assertTrue((Boolean)method.invoke(actc,"conserve-sockets"));
- assertFalse((Boolean)method.invoke(actc,"javax.net.ssl.keyStorePassword"));
- assertFalse((Boolean)method.invoke(actc,"javax.net.ssl.keyStoreType"));
- assertFalse((Boolean)method.invoke(actc,"sysprop-value"));
- } catch (NoSuchMethodException e) {
- e.printStackTrace();
- } catch (InvocationTargetException e) {
- e.printStackTrace();
- } catch (IllegalAccessException e) {
- e.printStackTrace();
- } catch(Exception e){
- e.printStackTrace();
- }
- }
-
-}
-
-class AbstractConfigTestClass extends AbstractConfig{
+ public void testDisplayPropertyValue() throws Exception {
+ AbstractConfigTestClass actc = new AbstractConfigTestClass();
+ Method method = actc.getClass().getSuperclass().getDeclaredMethod("okToDisplayPropertyValue", String.class);
+ method.setAccessible(true);
+ assertFalse((Boolean) method.invoke(actc, "password"));
+ assertFalse((Boolean) method.invoke(actc, "cluster-ssl-truststore-password"));
+ assertTrue((Boolean) method.invoke(actc, "cluster-ssl-enabled"));
+ assertFalse((Boolean) method.invoke(actc, "gateway-ssl-truststore-password"));
+ assertFalse((Boolean) method.invoke(actc, "server-ssl-keystore-password"));
+ assertTrue((Boolean) method.invoke(actc, "ssl-enabled"));
+ assertTrue((Boolean) method.invoke(actc, "conserve-sockets"));
+ assertFalse((Boolean) method.invoke(actc, "javax.net.ssl.keyStorePassword"));
+ assertFalse((Boolean) method.invoke(actc, "javax.net.ssl.keyStoreType"));
+ assertFalse((Boolean) method.invoke(actc, "sysprop-value"));
+ }
+ private static class AbstractConfigTestClass extends AbstractConfig {
- @Override
- protected Map getAttDescMap() {
- return null;
- }
+ @Override
+ protected Map getAttDescMap() {
+ return null;
+ }
- @Override
- protected Map<String, ConfigSource> getAttSourceMap() {
- return null;
- }
+ @Override
+ protected Map<String, ConfigSource> getAttSourceMap() {
+ return null;
+ }
- @Override
- public Object getAttributeObject(String attName) {
- return null;
- }
+ @Override
+ public Object getAttributeObject(String attName) {
+ return null;
+ }
- @Override
- public void setAttributeObject(String attName, Object attValue, ConfigSource source) {
+ @Override
+ public void setAttributeObject(String attName, Object attValue, ConfigSource source) {
- }
+ }
- @Override
- public boolean isAttributeModifiable(String attName) {
- return false;
- }
+ @Override
+ public boolean isAttributeModifiable(String attName) {
+ return false;
+ }
- @Override
- public Class getAttributeType(String attName) {
- return null;
- }
+ @Override
+ public Class getAttributeType(String attName) {
+ return null;
+ }
- @Override
- public String[] getAttributeNames() {
- return new String[0];
- }
+ @Override
+ public String[] getAttributeNames() {
+ return new String[0];
+ }
- @Override
- public String[] getSpecificAttributeNames() {
- return new String[0];
+ @Override
+ public String[] getSpecificAttributeNames() {
+ return new String[0];
+ }
}
}
-
http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/ef0a6243/geode-core/src/test/java/com/gemstone/gemfire/internal/ArrayEqualsJUnitTest.java
----------------------------------------------------------------------
diff --git a/geode-core/src/test/java/com/gemstone/gemfire/internal/ArrayEqualsJUnitTest.java b/geode-core/src/test/java/com/gemstone/gemfire/internal/ArrayEqualsJUnitTest.java
deleted file mode 100644
index 714a7fe..0000000
--- a/geode-core/src/test/java/com/gemstone/gemfire/internal/ArrayEqualsJUnitTest.java
+++ /dev/null
@@ -1,193 +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 com.gemstone.gemfire.internal;
-
-import static org.junit.Assert.fail;
-
-import java.util.Properties;
-
-import org.junit.Test;
-import org.junit.experimental.categories.Category;
-
-import com.gemstone.gemfire.cache.CacheFactory;
-import com.gemstone.gemfire.cache.Region;
-import com.gemstone.gemfire.cache.RegionShortcut;
-import com.gemstone.gemfire.internal.cache.GemFireCacheImpl;
-import com.gemstone.gemfire.test.junit.categories.UnitTest;
-
-
-/**
- * See bug 52093.
- * Make sure that the contents of arrays are
- * used to test equality on regions ops.
- */
-@Category(UnitTest.class)
-public class ArrayEqualsJUnitTest {
- private GemFireCacheImpl createCache() {
- Properties props = new Properties();
- props.setProperty("locators", "");
- props.setProperty("mcast-port", "0");
- GemFireCacheImpl result = (GemFireCacheImpl) new CacheFactory(props).create();
- return result;
- }
- private void closeCache(GemFireCacheImpl gfc) {
- gfc.close();
- }
-
- private void doOps(Region r) {
- {
- byte[] bytesValue = new byte[]{1,2,3,4};
- r.put("bytesValue", bytesValue.clone());
- if (r.replace("bytesValue", "", "")) fail("expected replace to fail");
- if (!r.replace("bytesValue", bytesValue, "")) {
- fail("expected replace to happen");
- }
- r.put("bytesValue", bytesValue.clone());
- if (r.remove("bytesValue", "")) fail("expected remove to fail");
- if (!r.remove("bytesValue", bytesValue)) {
- fail("expected remove to happen");
- }
- }
- {
- boolean[] booleanValue = new boolean[]{true,false,true,false};
- r.put("booleanValue", booleanValue.clone());
- if (r.replace("booleanValue", "", "")) fail("expected replace to fail");
- if (!r.replace("booleanValue", booleanValue, "")) {
- fail("expected replace to happen");
- }
- r.put("booleanValue", booleanValue.clone());
- if (r.remove("booleanValue", "")) fail("expected remove to fail");
- if (!r.remove("booleanValue", booleanValue)) {
- fail("expected remove to happen");
- }
- }
- {
- short[] shortValue = new short[]{1,2,3,4};
- r.put("shortValue", shortValue.clone());
- if (r.replace("shortValue", "", "")) fail("expected replace to fail");
- if (!r.replace("shortValue", shortValue, "")) {
- fail("expected replace to happen");
- }
- r.put("shortValue", shortValue.clone());
- if (r.remove("shortValue", "")) fail("expected remove to fail");
- if (!r.remove("shortValue", shortValue)) {
- fail("expected remove to happen");
- }
- }
- {
- char[] charValue = new char[]{1,2,3,4};
- r.put("charValue", charValue.clone());
- if (r.replace("charValue", "", "")) fail("expected replace to fail");
- if (!r.replace("charValue", charValue, "")) {
- fail("expected replace to happen");
- }
- r.put("charValue", charValue.clone());
- if (r.remove("charValue", "")) fail("expected remove to fail");
- if (!r.remove("charValue", charValue)) {
- fail("expected remove to happen");
- }
- }
- {
- int[] intValue = new int[]{1,2,3,4};
- r.put("intValue", intValue.clone());
- if (r.replace("intValue", "", "")) fail("expected replace to fail");
- if (!r.replace("intValue", intValue, "")) {
- fail("expected replace to happen");
- }
- r.put("intValue", intValue.clone());
- if (r.remove("intValue", "")) fail("expected remove to fail");
- if (!r.remove("intValue", intValue)) {
- fail("expected remove to happen");
- }
- }
- {
- long[] longValue = new long[]{1,2,3,4};
- r.put("longValue", longValue.clone());
- if (r.replace("longValue", "", "")) fail("expected replace to fail");
- if (!r.replace("longValue", longValue, "")) {
- fail("expected replace to happen");
- }
- r.put("longValue", longValue.clone());
- if (r.remove("longValue", "")) fail("expected remove to fail");
- if (!r.remove("longValue", longValue)) {
- fail("expected remove to happen");
- }
- }
- {
- float[] floatValue = new float[]{1,2,3,4};
- r.put("floatValue", floatValue.clone());
- if (r.replace("floatValue", "", "")) fail("expected replace to fail");
- if (!r.replace("floatValue", floatValue, "")) {
- fail("expected replace to happen");
- }
- r.put("floatValue", floatValue.clone());
- if (r.remove("floatValue", "")) fail("expected remove to fail");
- if (!r.remove("floatValue", floatValue)) {
- fail("expected remove to happen");
- }
- }
- {
- double[] doubleValue = new double[]{1,2,3,4};
- r.put("doubleValue", doubleValue.clone());
- if (r.replace("doubleValue", "", "")) fail("expected replace to fail");
- if (!r.replace("doubleValue", doubleValue, "")) {
- fail("expected replace to happen");
- }
- r.put("doubleValue", doubleValue.clone());
- if (r.remove("doubleValue", "")) fail("expected remove to fail");
- if (!r.remove("doubleValue", doubleValue)) {
- fail("expected remove to happen");
- }
- }
- {
- Object[] oaValue = new Object[]{new byte[]{1,2,3,4},new short[]{1,2,3,4},new int[]{1,2,3,4}, "hello sweet world!"};
- r.put("oaValue", oaValue);
- Object[] deepCloneOaValue = new Object[]{new byte[]{1,2,3,4},new short[]{1,2,3,4},new int[]{1,2,3,4}, "hello sweet world!"};
- if (r.replace("oaValue", "", "")) fail("expected replace to fail");
- if (!r.replace("oaValue", deepCloneOaValue, "")) {
- fail("expected replace to happen");
- }
- r.put("oaValue", oaValue);
- if (r.remove("oaValue", "")) fail("expected remove to fail");
- if (!r.remove("oaValue", deepCloneOaValue)) {
- fail("expected remove to happen");
- }
- }
- }
-
- @Test
- public void testPartition() {
- GemFireCacheImpl gfc = createCache();
- try {
- Region r = gfc.createRegionFactory(RegionShortcut.PARTITION).create("ArrayEqualsJUnitTestPartitionRegion");
- doOps(r);
- } finally {
- closeCache(gfc);
- }
- }
- @Test
- public void testLocal() {
- GemFireCacheImpl gfc = createCache();
- try {
- Region r = gfc.createRegionFactory(RegionShortcut.LOCAL).create("ArrayEqualsJUnitTestLocalRegion");
- doOps(r);
- } finally {
- closeCache(gfc);
- }
- }
-
-}
http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/ef0a6243/geode-core/src/test/java/com/gemstone/gemfire/internal/AvailablePortJUnitTest.java
----------------------------------------------------------------------
diff --git a/geode-core/src/test/java/com/gemstone/gemfire/internal/AvailablePortJUnitTest.java b/geode-core/src/test/java/com/gemstone/gemfire/internal/AvailablePortJUnitTest.java
index 25184de..706702d 100644
--- a/geode-core/src/test/java/com/gemstone/gemfire/internal/AvailablePortJUnitTest.java
+++ b/geode-core/src/test/java/com/gemstone/gemfire/internal/AvailablePortJUnitTest.java
@@ -17,11 +17,6 @@
package com.gemstone.gemfire.internal;
import static org.junit.Assert.*;
-import static org.junit.Assume.*;
-
-import com.gemstone.gemfire.admin.internal.InetAddressUtil;
-import com.gemstone.gemfire.internal.lang.SystemUtils;
-import com.gemstone.gemfire.test.junit.categories.UnitTest;
import java.io.IOException;
import java.net.InetAddress;
@@ -32,9 +27,13 @@ import org.junit.After;
import org.junit.Test;
import org.junit.experimental.categories.Category;
+import com.gemstone.gemfire.admin.internal.InetAddressUtil;
+import com.gemstone.gemfire.test.junit.categories.IntegrationTest;
+
/**
+ * multicast availability is tested in JGroupsMessengerJUnitTest
*/
-@Category(UnitTest.class)
+@Category(IntegrationTest.class)
public class AvailablePortJUnitTest {
private ServerSocket socket;
@@ -69,5 +68,4 @@ public class AvailablePortJUnitTest {
assertFalse(AvailablePort.isPortAvailable(port, AvailablePort.SOCKET));
}
- // multicast availability is tested in JGroupsMessengerJUnitTest
}
http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/ef0a6243/geode-core/src/test/java/com/gemstone/gemfire/internal/ClassPathLoaderJUnitTest.java
----------------------------------------------------------------------
diff --git a/geode-core/src/test/java/com/gemstone/gemfire/internal/ClassPathLoaderJUnitTest.java b/geode-core/src/test/java/com/gemstone/gemfire/internal/ClassPathLoaderJUnitTest.java
deleted file mode 100755
index 2a1db52..0000000
--- a/geode-core/src/test/java/com/gemstone/gemfire/internal/ClassPathLoaderJUnitTest.java
+++ /dev/null
@@ -1,1261 +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 com.gemstone.gemfire.internal;
-
-import java.io.BufferedInputStream;
-import java.io.File;
-import java.io.FileOutputStream;
-import java.io.IOException;
-import java.io.InputStream;
-import java.io.OutputStream;
-import java.net.URL;
-import java.net.URLClassLoader;
-import java.util.Enumeration;
-import java.util.Vector;
-
-import junit.framework.TestCase;
-
-import org.apache.bcel.Constants;
-import org.apache.bcel.classfile.JavaClass;
-import org.apache.bcel.generic.ClassGen;
-import org.junit.Test;
-import org.junit.experimental.categories.Category;
-
-import com.gemstone.gemfire.test.junit.categories.UnitTest;
-
-/**
- * Test the {@link ClassPathLoader}.
- *
- * @since 6.5.1.4
- */
-@Category(UnitTest.class)
-public class ClassPathLoaderJUnitTest extends TestCase {
-
- private static final int TEMP_FILE_BYTES_COUNT = 256;
- private static final int GENERATED_CLASS_BYTES_COUNT = 362;
-
- private static final String ORIGINAL_EXCLUDE_TCCL_VALUE;
-
- private boolean deleteExtDir = false;
- private boolean deleteLibDir = false;
-
- static {
- ORIGINAL_EXCLUDE_TCCL_VALUE = System.getProperty(ClassPathLoader.EXCLUDE_TCCL_PROPERTY, Boolean
- .toString(ClassPathLoader.EXCLUDE_TCCL_DEFAULT_VALUE));
-
- exploreClassLoaders(); // optional output for developer's convenience
- }
-
- private volatile File tempFile;
- private volatile File tempFile2;
-
- public ClassPathLoaderJUnitTest(String name) {
- super(name);
- }
-
- @Override
- public void setUp() throws Exception {
- System.setProperty(ClassPathLoader.EXCLUDE_TCCL_PROPERTY, "false");
-
- File workingDir = new File(System.getProperty("user.dir")).getAbsoluteFile();
- this.tempFile = File.createTempFile("ClassPathLoaderJUnitTest.", null, workingDir);
- FileOutputStream fos = new FileOutputStream(this.tempFile);
- fos.write(new byte[TEMP_FILE_BYTES_COUNT]);
- fos.close();
-
- this.tempFile2 = File.createTempFile("ClassPathLoaderJUnitTest.", null, workingDir);
- fos = new FileOutputStream(this.tempFile2);
- fos.write(new byte[TEMP_FILE_BYTES_COUNT]);
- fos.close();
- }
-
- @Override
- public void tearDown() throws Exception {
- System.setProperty(ClassPathLoader.EXCLUDE_TCCL_PROPERTY, ORIGINAL_EXCLUDE_TCCL_VALUE);
-
- // these deletions fail on windows
-// if (this.deleteLibDir) {
-// FileUtil.delete(ClassPathLoader.EXT_LIB_DIR.getParentFile());
-// } else {
-// if (this.deleteExtDir) {
-// FileUtil.delete(ClassPathLoader.EXT_LIB_DIR);
-// } else {
-// FileUtil.delete(new File(ClassPathLoader.EXT_LIB_DIR, "ClassPathLoaderJUnit1.jar"));
-// FileUtil.delete(new File(ClassPathLoader.EXT_LIB_DIR, "cplju"));
-// }
-// }
-
- assertTrue(this.tempFile.delete());
- }
-
- /**
- * Verifies that {@link ClassPathLoader#getLatest()} is always initialized and returns a <tt>ClassPathLoader</tt>
- * instance.
- */
- public void testLatestExists() throws Exception {
- System.out.println("\nStarting ClassPathLoaderJUnitTest#testLatestExists");
-
- assertNotNull(ClassPathLoader.getLatest());
- }
-
- /**
- * Verifies that {@link ClassPathLoader#getLatest()} throws <tt>ClassNotFoundException</tt> when class does not exist.
- */
- public void testForNameThrowsClassNotFoundException() throws Exception {
- System.out.println("\nStarting ClassPathLoaderJUnitTest#testForNameThrowsClassNotFoundException");
-
- try {
- String classToLoad = "com.nowhere.DoesNotExist";
- ClassPathLoader.getLatest().forName(classToLoad);
- fail();
- } catch (ClassNotFoundException expected) {
- // Expected
- }
- }
-
- /**
- * Verifies that {@link ClassPathLoader#getLatest()} finds and loads class via
- * <tt>Class.forName(String, boolean, ClassLoader)</tt> when class does exist.
- */
- public void testForName() throws Exception {
- System.out.println("\nStarting ClassPathLoaderJUnitTest#testForName");
-
- String classToLoad = "com.gemstone.gemfire.internal.classpathloaderjunittest.DoesExist";
- Class<?> clazz = ClassPathLoader.getLatest().forName(classToLoad);
- assertNotNull(clazz);
- }
-
- /**
- * Verifies that {@link ClassPathLoader#getLatest()} can actually <tt>getResource</tt> when it exists.
- */
- public void testGetResource() throws Exception {
- System.out.println("\nStarting ClassPathLoaderJUnitTest#testGetResource");
-
- String resourceToGet = "com/gemstone/gemfire/internal/classpathloaderjunittest/DoesExist.class";
- URL url = ClassPathLoader.getLatest().getResource(resourceToGet);
- assertNotNull(url);
-
- InputStream is = url != null ? url.openStream() : null;
- assertNotNull(is);
-
- int totalBytesRead = 0;
- byte[] input = new byte[256];
-
- BufferedInputStream bis = new BufferedInputStream(is);
- for (int bytesRead = bis.read(input); bytesRead > -1;) {
- totalBytesRead += bytesRead;
- bytesRead = bis.read(input);
- }
- bis.close();
-
- // if the following fails then maybe javac changed and DoesExist.class
- // contains other than 374 bytes of data... consider updating this test
- assertEquals(GENERATED_CLASS_BYTES_COUNT, totalBytesRead);
- }
-
- /**
- * Verifies that {@link ClassPathLoader#getLatest()} can actually <tt>getResources</tt> when it exists.
- */
- public void testGetResources() throws Exception {
- System.out.println("\nStarting ClassPathLoaderJUnitTest#testGetResources");
-
- String resourceToGet = "com/gemstone/gemfire/internal/classpathloaderjunittest/DoesExist.class";
- Enumeration<URL> urls = ClassPathLoader.getLatest().getResources(resourceToGet);
- assertNotNull(urls);
- assertTrue(urls.hasMoreElements());
-
- URL url = urls.nextElement();
- InputStream is = url != null ? url.openStream() : null;
- assertNotNull(is);
-
- int totalBytesRead = 0;
- byte[] input = new byte[256];
-
- BufferedInputStream bis = new BufferedInputStream(is);
- for (int bytesRead = bis.read(input); bytesRead > -1;) {
- totalBytesRead += bytesRead;
- bytesRead = bis.read(input);
- }
- bis.close();
-
- // if the following fails then maybe javac changed and DoesExist.class
- // contains other than 374 bytes of data... consider updating this test
- assertEquals(GENERATED_CLASS_BYTES_COUNT, totalBytesRead);
- }
-
- /**
- * Verifies that {@link ClassPathLoader#getLatest()} can actually <tt>getResourceAsStream</tt> when it exists.
- */
- public void testGetResourceAsStream() throws Exception {
- System.out.println("\nStarting ClassPathLoaderJUnitTest#testGetResourceAsStream");
-
- String resourceToGet = "com/gemstone/gemfire/internal/classpathloaderjunittest/DoesExist.class";
- InputStream is = ClassPathLoader.getLatest().getResourceAsStream(resourceToGet);
- assertNotNull(is);
-
- int totalBytesRead = 0;
- byte[] input = new byte[256];
-
- BufferedInputStream bis = new BufferedInputStream(is);
- for (int bytesRead = bis.read(input); bytesRead > -1;) {
- totalBytesRead += bytesRead;
- bytesRead = bis.read(input);
- }
- bis.close();
-
- // if the following fails then maybe javac changed and DoesExist.class
- // contains other than 374 bytes of data... consider updating this test
- assertEquals(GENERATED_CLASS_BYTES_COUNT, totalBytesRead);
- }
-
- /**
- * Verifies that the {@link GeneratingClassLoader} works and always generates the named class. This is a control which
- * ensures that tests depending on <tt>GeneratingClassLoader</tt> are valid.
- */
- public void testGeneratingClassLoader() throws Exception {
- System.out.println("\nStarting ClassPathLoaderJUnitTest#testGeneratingClassLoader");
-
- ClassLoader gcl = new GeneratingClassLoader();
- String classToLoad = "com.nowhere.TestGeneratingClassLoader";
-
- Class<?> clazz = gcl.loadClass(classToLoad);
- assertNotNull(clazz);
- assertEquals(classToLoad, clazz.getName());
-
- Object obj = clazz.newInstance();
- assertEquals(clazz.getName(), obj.getClass().getName());
-
- try {
- Class.forName(classToLoad);
- fail("Should have thrown ClassNotFoundException");
- } catch (ClassNotFoundException expected) {
- // Expected
- }
-
- Class<?> clazzForName = Class.forName(classToLoad, true, gcl);
- assertNotNull(clazzForName);
- assertEquals(clazz, clazzForName);
-
- Object objForName = clazzForName.newInstance();
- assertEquals(classToLoad, objForName.getClass().getName());
- }
-
- /**
- * Verifies that custom loader is used to load class.
- */
- public void testForNameWithCustomLoader() throws Exception {
- System.out.println("\nStarting ClassPathLoaderJUnitTest#testForNameWithCustomLoader");
-
- ClassPathLoader dcl = ClassPathLoader.createWithDefaults(false);
- dcl = dcl.addOrReplace(new GeneratingClassLoader());
-
- String classToLoad = "com.nowhere.TestForNameWithCustomLoader";
- Class<?> clazz = dcl.forName(classToLoad);
- assertNotNull(clazz);
- assertEquals(classToLoad, clazz.getName());
-
- Object obj = clazz.newInstance();
- assertEquals(classToLoad, obj.getClass().getName());
- }
-
- /**
- * Verifies that {@link Class#forName(String, boolean, ClassLoader)} used with {@link ClassPathLoader} works as
- * expected with named object arrays, while {@link ClassLoader#loadClass(String)} throws ClassNotFoundException for
- * named object arrays.
- */
- public void testForNameWithObjectArray() throws Exception {
- System.out.println("\nStarting ClassPathLoaderJUnitTest#testForNameWithObjectArray");
-
- ClassPathLoader dcl = ClassPathLoader.createWithDefaults(false);
-
- String classToLoad = "[Ljava.lang.String;";
- Class<?> clazz = null;
- clazz = dcl.forName(classToLoad);
- assertEquals(classToLoad, clazz.getName());
- }
-
- /**
- * Verifies that TCCL finds the class when {@link Class#forName(String, boolean, ClassLoader)} uses
- * {@link ClassPathLoader}.
- */
- public void testForNameWithTCCL() throws Exception {
- System.out.println("\nStarting ClassPathLoaderJUnitTest#testForNameWithTCCL");
-
- final ClassPathLoader dcl = ClassPathLoader.createWithDefaults(false);
- final String classToLoad = "com.nowhere.TestForNameWithTCCL";
-
- try {
- dcl.forName(classToLoad);
- fail("Should have thrown ClassNotFoundException");
- } catch (ClassNotFoundException expected) {
- // Expected
- }
-
- ClassLoader cl = Thread.currentThread().getContextClassLoader();
- try {
- // ensure that TCCL is only CL that can find this class
- Thread.currentThread().setContextClassLoader(new GeneratingClassLoader());
- Class<?> clazz = dcl.forName(classToLoad);
- assertNotNull(clazz);
- Object instance = clazz.newInstance();
- assertNotNull(instance);
- assertEquals(classToLoad, instance.getClass().getName());
- } finally {
- Thread.currentThread().setContextClassLoader(cl);
- }
-
- try {
- dcl.forName(classToLoad);
- fail("Should have thrown ClassNotFoundException");
- } catch (ClassNotFoundException expected) {
- // Expected
- }
-
- }
-
- /**
- * Verifies that the {@link NullClassLoader} works and never finds the named class. This is a control which ensures
- * that tests depending on <tt>NullClassLoader</tt> are valid.
- */
- public void testNullClassLoader() throws Exception {
- System.out.println("\nStarting ClassPathLoaderJUnitTest#testNullClassLoader");
-
- ClassLoader cl = new NullClassLoader();
- String classToLoad = "java.lang.String";
-
- try {
- Class.forName(classToLoad, true, cl);
- fail();
- } catch (ClassNotFoundException expected) {
- // Expected
- }
-
- String resourceToGet = "java/lang/String.class";
-
- URL url = cl.getResource(resourceToGet);
- assertNull(url);
-
- InputStream is = cl.getResourceAsStream(resourceToGet);
- assertNull(is);
- }
-
- /**
- * Verifies that the {@link SimpleClassLoader} works and finds classes that the parent can find. This is a control
- * which ensures that tests depending on <tt>SimpleClassLoader</tt> are valid.
- */
- public void testSimpleClassLoader() throws Exception {
- System.out.println("\nStarting ClassPathLoaderJUnitTest#testSimpleClassLoader");
-
- ClassLoader cl = new SimpleClassLoader(getClass().getClassLoader());
- String classToLoad = "java.lang.String";
-
- Class<?> clazz = Class.forName(classToLoad, true, cl);
- assertNotNull(clazz);
-
- String resourceToGet = "java/lang/String.class";
-
- URL url = cl.getResource(resourceToGet);
- assertNotNull(url);
-
- InputStream is = cl.getResourceAsStream(resourceToGet);
- assertNotNull(is);
- }
-
- /**
- * Verifies that the {@link BrokenClassLoader} is broken and always throws errors. This is a control which ensures
- * that tests depending on <tt>BrokenClassLoader</tt> are valid.
- */
- public void testBrokenClassLoader() throws Exception {
- System.out.println("\nStarting ClassPathLoaderJUnitTest#testBrokenClassLoader");
-
- ClassLoader cl = new BrokenClassLoader();
-
- String classToLoad = "java.lang.String";
- try {
- Class.forName(classToLoad, true, cl);
- fail();
- } catch (ClassNotFoundException e) {
- throw e;
- } catch (BrokenError expected) {
- // Expected
- }
-
- String resourceToGet = "java/lang/String.class";
- try {
- cl.getResource(resourceToGet);
- fail();
- } catch (BrokenError expected) {
- // Expected
- }
- try {
- cl.getResourceAsStream(resourceToGet);
- fail();
- } catch (BrokenError expected) {
- // Expected
- }
- }
-
- /**
- * Verifies that the {@link BrokenClassLoader} is broken and always throws errors even when used as a TCCL from
- * {@link ClassPathLoader}. This is primarily a control which ensures that tests depending on
- * <tt>BrokenClassLoader</tt> are valid, but it also verifies that TCCL is included by default by
- * <tt>ClassPathLoader</tt>.
- */
- public void testBrokenTCCLThrowsErrors() throws Exception {
- System.out.println("\nStarting ClassPathLoaderJUnitTest#testBrokenTCCLThrowsErrors");
-
- ClassPathLoader dcl = ClassPathLoader.createWithDefaults(false);
- dcl.addOrReplace(new NullClassLoader());
-
- ClassLoader cl = Thread.currentThread().getContextClassLoader();
- try {
- // set the TCCL to throw errors
- Thread.currentThread().setContextClassLoader(new BrokenClassLoader());
-
- String classToLoad = "java.lang.String";
- try {
- dcl.forName(classToLoad);
- fail();
- } catch (ClassNotFoundException e) {
- throw e;
- } catch (BrokenError expected) {
- // Expected
- }
-
- String resourceToGet = "java/lang/String.class";
- try {
- dcl.getResource(resourceToGet);
- fail();
- } catch (BrokenError expected) {
- // Expected
- }
-
- try {
- dcl.getResourceAsStream(resourceToGet);
- fail();
- } catch (BrokenError expected) {
- // Expected
- }
- } finally {
- Thread.currentThread().setContextClassLoader(cl);
- }
- }
-
- /**
- * Verifies that the class classloader or system classloader will find the class or resource. Parent is a
- * {@link NullClassLoader} while the TCCL is an excluded {@link BrokenClassLoader}.
- */
- public void testEverythingWithDefaultLoader() throws Exception {
- System.out.println("\nStarting ClassPathLoaderJUnitTest#testEverythingWithDefaultLoader");
-
- // create DCL such that parent cannot find anything
- ClassPathLoader dcl = ClassPathLoader.createWithDefaults(true);
- dcl.addOrReplace(new NullClassLoader());
-
- ClassLoader cl = Thread.currentThread().getContextClassLoader();
- try {
- // set the TCCL to never find anything
- Thread.currentThread().setContextClassLoader(new BrokenClassLoader());
-
- String classToLoad = "java.lang.String";
- Class<?> clazz = dcl.forName(classToLoad);
- assertNotNull(clazz);
-
- String resourceToGet = "java/lang/String.class";
- URL url = dcl.getResource(resourceToGet);
- assertNotNull(url);
- InputStream is = dcl.getResourceAsStream(resourceToGet);
- assertNotNull(is);
- } finally {
- Thread.currentThread().setContextClassLoader(cl);
- }
- }
-
- /**
- * Verifies that the 3rd custom loader will find the class. Parent cannot find it and TCCL is broken. This verifies
- * that all custom loaders are checked and that the custom loaders are all checked before TCCL.
- */
- public void testForNameWithMultipleCustomLoaders() throws Exception {
- System.out.println("\nStarting ClassPathLoaderJUnitTest#testForNameWithMultipleCustomLoaders");
-
- // create DCL such that the 3rd loader should find the class
- // first custom loader becomes parent which won't find anything
- ClassPathLoader dcl = ClassPathLoader.createWithDefaults(false);
- final GeneratingClassLoader generatingClassLoader = new GeneratingClassLoader();
- dcl = dcl.addOrReplace(generatingClassLoader);
- dcl = dcl.addOrReplace(new SimpleClassLoader(getClass().getClassLoader()));
- dcl = dcl.addOrReplace(new NullClassLoader());
-
- String classToLoad = "com.nowhere.TestForNameWithMultipleCustomLoaders";
-
- ClassLoader cl = Thread.currentThread().getContextClassLoader();
- try {
- // set TCCL to throw errors which makes sure we find before checking TCCL
- Thread.currentThread().setContextClassLoader(new BrokenClassLoader());
-
- Class<?> clazz = dcl.forName(classToLoad);
- assertNotNull(clazz);
- assertEquals(classToLoad, clazz.getName());
- assertTrue("Class not loaded by a GeneratingClassLoader.", clazz.getClassLoader() instanceof GeneratingClassLoader);
- assertEquals("Class not loaded by generatingClassLoader.", generatingClassLoader, clazz.getClassLoader());
-
- Object obj = clazz.newInstance();
- assertEquals(classToLoad, obj.getClass().getName());
- } finally {
- Thread.currentThread().setContextClassLoader(cl);
- }
- }
-
- /**
- * Verifies that the 3rd custom loader will get the resource. Parent cannot find it and TCCL is broken. This verifies
- * that all custom loaders are checked and that the custom loaders are all checked before TCCL.
- */
- public void testGetResourceWithMultipleCustomLoaders() throws Exception {
- System.out.println("\nStarting ClassPathLoaderJUnitTest#testGetResourceWithMultipleCustomLoaders");
-
- // create DCL such that the 3rd loader should find the resource
- // first custom loader becomes parent which won't find anything
- ClassPathLoader dcl = ClassPathLoader.createWithDefaults(false);
- dcl = dcl.addOrReplace(new GeneratingClassLoader());
- dcl = dcl.addOrReplace(new SimpleClassLoader(getClass().getClassLoader()));
- dcl = dcl.addOrReplace(new NullClassLoader());
-
- String resourceToGet = "com/nowhere/testGetResourceWithMultipleCustomLoaders.rsc";
-
- ClassLoader cl = Thread.currentThread().getContextClassLoader();
- try {
- // set TCCL to throw errors which makes sure we find before checking TCCL
- Thread.currentThread().setContextClassLoader(new BrokenClassLoader());
-
- URL url = dcl.getResource(resourceToGet);
- assertNotNull(url);
- } finally {
- Thread.currentThread().setContextClassLoader(cl);
- }
- }
-
- /**
- * Verifies that the 3rd custom loader will get the resources. Parent cannot find it and TCCL is broken. This verifies
- * that all custom loaders are checked and that the custom loaders are all checked before TCCL.
- */
- public void testGetResourcesWithMultipleCustomLoaders() throws Exception {
- System.out.println("\nStarting ClassPathLoaderJUnitTest#testGetResourceWithMultipleCustomLoaders");
-
- // create DCL such that the 3rd loader should find the resource
- // first custom loader becomes parent which won't find anything
- ClassPathLoader dcl = ClassPathLoader.createWithDefaults(false);
- dcl = dcl.addOrReplace(new GeneratingClassLoader());
- dcl = dcl.addOrReplace(new GeneratingClassLoader2());
- dcl = dcl.addOrReplace(new SimpleClassLoader(getClass().getClassLoader()));
- dcl = dcl.addOrReplace(new NullClassLoader());
-
- String resourceToGet = "com/nowhere/testGetResourceWithMultipleCustomLoaders.rsc";
-
- ClassLoader cl = Thread.currentThread().getContextClassLoader();
- try {
- // set TCCL to throw errors which makes sure we find before checking TCCL
- Thread.currentThread().setContextClassLoader(new BrokenClassLoader());
-
- Enumeration<URL> urls = dcl.getResources(resourceToGet);
- assertNotNull(urls);
- assertTrue(urls.hasMoreElements());
-
- URL url = urls.nextElement();
- assertNotNull(url);
-
- // Should find two with unique URLs
- assertTrue("Did not find all resources.", urls.hasMoreElements());
- URL url2 = urls.nextElement();
- assertNotNull(url2);
- assertTrue("Resource URLs should be unique.", !url.equals(url2));
-
- } finally {
- Thread.currentThread().setContextClassLoader(cl);
- }
- }
-
- /**
- * Verifies that the 3rd custom loader will get the resource. Parent cannot find it and TCCL is broken. This verifies
- * that all custom loaders are checked and that the custom loaders are all checked before TCCL.
- */
- public void testGetResourceAsStreamWithMultipleCustomLoaders() throws Exception {
- System.out.println("\nStarting ClassPathLoaderJUnitTest#testGetResourceAsStreamWithMultipleCustomLoaders");
-
- // create DCL such that the 3rd loader should find the resource
- // first custom loader becomes parent which won't find anything
- ClassPathLoader dcl = ClassPathLoader.createWithDefaults(false);
- dcl = dcl.addOrReplace(new GeneratingClassLoader());
- dcl = dcl.addOrReplace(new SimpleClassLoader(getClass().getClassLoader()));
- dcl = dcl.addOrReplace(new NullClassLoader());
-
- String resourceToGet = "com/nowhere/testGetResourceAsStreamWithMultipleCustomLoaders.rsc";
-
- ClassLoader cl = Thread.currentThread().getContextClassLoader();
- try {
- // set TCCL to throw errors which makes sure we find before checking TCCL
- Thread.currentThread().setContextClassLoader(new BrokenClassLoader());
-
- InputStream is = dcl.getResourceAsStream(resourceToGet);
- assertNotNull(is);
- is.close();
- } finally {
- Thread.currentThread().setContextClassLoader(cl);
- }
- }
-
- /**
- * Verifies that setting <tt>excludeThreadContextClassLoader</tt> to true will indeed exclude the TCCL.
- */
- public void testExcludeTCCL() throws Exception {
- System.out.println("\nStarting ClassPathLoaderJUnitTest#testExcludeTCCL");
-
- ClassPathLoader dcl = ClassPathLoader.createWithDefaults(true);
-
- String classToLoad = "com.nowhere.TestExcludeTCCL";
-
- try {
- dcl.forName(classToLoad);
- fail("Should have thrown ClassNotFoundException");
- } catch (ClassNotFoundException expected) {
- // Expected
- }
-
- ClassLoader cl = Thread.currentThread().getContextClassLoader();
- try {
- // ensure that TCCL is only CL that can find this class
- Thread.currentThread().setContextClassLoader(new GeneratingClassLoader());
- dcl.forName(classToLoad);
- fail("Should have thrown ClassNotFoundException");
- } catch (ClassNotFoundException expected) {
- // Expected
- } finally {
- Thread.currentThread().setContextClassLoader(cl);
- }
-
- }
-
- /**
- * Verifies that <tt>getResource</tt> works with custom loader from {@link ClassPathLoader}.
- */
- public void testGetResourceWithCustomLoader() throws Exception {
- System.out.println("\nStarting ClassPathLoaderJUnitTest#testGetResourceWithCustomLoader");
-
- ClassPathLoader dcl = ClassPathLoader.createWithDefaults(false);
- dcl = dcl.addOrReplace(new GeneratingClassLoader());
-
- String resourceToGet = "com/nowhere/testGetResourceWithCustomLoader.rsc";
- URL url = dcl.getResource(resourceToGet);
- assertNotNull(url);
-
- InputStream is = url != null ? url.openStream() : null;
- assertNotNull(is);
-
- int totalBytesRead = 0;
- byte[] input = new byte[128];
-
- BufferedInputStream bis = new BufferedInputStream(is);
- for (int bytesRead = bis.read(input); bytesRead > -1;) {
- totalBytesRead += bytesRead;
- bytesRead = bis.read(input);
- }
- bis.close();
-
- assertEquals(TEMP_FILE_BYTES_COUNT, totalBytesRead);
- }
-
- /**
- * Verifies that <tt>getResources</tt> works with custom loader from {@link ClassPathLoader}.
- */
- public void testGetResourcesWithCustomLoader() throws Exception {
- System.out.println("\nStarting ClassPathLoaderJUnitTest#testGetResourceWithCustomLoader");
-
- ClassPathLoader dcl = ClassPathLoader.createWithDefaults(false);
- dcl = dcl.addOrReplace(new GeneratingClassLoader());
-
- String resourceToGet = "com/nowhere/testGetResourceWithCustomLoader.rsc";
- Enumeration<URL> urls = dcl.getResources(resourceToGet);
- assertNotNull(urls);
- assertTrue(urls.hasMoreElements());
-
- URL url = urls.nextElement();
- InputStream is = url != null ? url.openStream() : null;
- assertNotNull(is);
-
- int totalBytesRead = 0;
- byte[] input = new byte[128];
-
- BufferedInputStream bis = new BufferedInputStream(is);
- for (int bytesRead = bis.read(input); bytesRead > -1;) {
- totalBytesRead += bytesRead;
- bytesRead = bis.read(input);
- }
- bis.close();
-
- assertEquals(TEMP_FILE_BYTES_COUNT, totalBytesRead);
- }
-
- /**
- * Verifies that <tt>getResourceAsStream</tt> works with custom loader from {@link ClassPathLoader}.
- */
- public void testGetResourceAsStreamWithCustomLoader() throws Exception {
- System.out.println("\nStarting ClassPathLoaderJUnitTest#testGetResourceAsStreamWithCustomLoader");
-
- ClassPathLoader dcl = ClassPathLoader.createWithDefaults(false);
- dcl = dcl.addOrReplace(new GeneratingClassLoader());
-
- String resourceToGet = "com/nowhere/testGetResourceAsStreamWithCustomLoader.rsc";
- InputStream is = dcl.getResourceAsStream(resourceToGet);
- assertNotNull(is);
-
- int totalBytesRead = 0;
- byte[] input = new byte[128];
-
- BufferedInputStream bis = new BufferedInputStream(is);
- for (int bytesRead = bis.read(input); bytesRead > -1;) {
- totalBytesRead += bytesRead;
- bytesRead = bis.read(input);
- }
- bis.close();
-
- assertEquals(TEMP_FILE_BYTES_COUNT, totalBytesRead);
- }
-
- /**
- * Verifies that <tt>getResource</tt> works with TCCL from {@link ClassPathLoader}.
- */
- public void testGetResourceWithTCCL() throws Exception {
- System.out.println("\nStarting ClassPathLoaderJUnitTest#testGetResourceWithTCCL");
-
- ClassPathLoader dcl = ClassPathLoader.createWithDefaults(false);
-
- String resourceToGet = "com/nowhere/testGetResourceWithTCCL.rsc";
- assertNull(dcl.getResource(resourceToGet));
-
- ClassLoader cl = Thread.currentThread().getContextClassLoader();
- try {
- Thread.currentThread().setContextClassLoader(new GeneratingClassLoader());
- URL url = dcl.getResource(resourceToGet);
- assertNotNull(url);
-
- InputStream is = url.openStream();
- assertNotNull(is);
-
- int totalBytesRead = 0;
- byte[] input = new byte[128];
-
- BufferedInputStream bis = new BufferedInputStream(is);
- for (int bytesRead = bis.read(input); bytesRead > -1;) {
- totalBytesRead += bytesRead;
- bytesRead = bis.read(input);
- }
- bis.close();
-
- assertEquals(TEMP_FILE_BYTES_COUNT, totalBytesRead);
- } finally {
- Thread.currentThread().setContextClassLoader(cl);
- }
- }
-
- /**
- * Verifies that <tt>getResources</tt> works with TCCL from {@link ClassPathLoader}.
- */
- public void testGetResourcesWithTCCL() throws Exception {
- System.out.println("\nStarting ClassPathLoaderJUnitTest#testGetResourceWithTCCL");
-
- ClassPathLoader dcl = ClassPathLoader.createWithDefaults(false);
-
- String resourceToGet = "com/nowhere/testGetResourceWithTCCL.rsc";
- Enumeration<URL> urls = dcl.getResources(resourceToGet);
- assertNotNull(urls);
- assertFalse(urls.hasMoreElements());
-
- ClassLoader cl = Thread.currentThread().getContextClassLoader();
- try {
- Thread.currentThread().setContextClassLoader(new GeneratingClassLoader());
- urls = dcl.getResources(resourceToGet);
- assertNotNull(urls);
-
- URL url = urls.nextElement();
- InputStream is = url.openStream();
- assertNotNull(is);
-
- int totalBytesRead = 0;
- byte[] input = new byte[128];
-
- BufferedInputStream bis = new BufferedInputStream(is);
- for (int bytesRead = bis.read(input); bytesRead > -1;) {
- totalBytesRead += bytesRead;
- bytesRead = bis.read(input);
- }
- bis.close();
-
- assertEquals(TEMP_FILE_BYTES_COUNT, totalBytesRead);
- } finally {
- Thread.currentThread().setContextClassLoader(cl);
- }
- }
-
- /**
- * Verifies that <tt>getResourceAsStream</tt> works with TCCL from {@link ClassPathLoader}.
- */
- public void testGetResourceAsStreamWithTCCL() throws Exception {
- System.out.println("\nStarting ClassPathLoaderJUnitTest#testGetResourceAsStreamWithTCCL");
-
- ClassPathLoader dcl = ClassPathLoader.createWithDefaults(false);
-
- String resourceToGet = "com/nowhere/testGetResourceAsStreamWithTCCL.rsc";
- assertNull(dcl.getResourceAsStream(resourceToGet));
-
- ClassLoader cl = Thread.currentThread().getContextClassLoader();
- try {
- // ensure that TCCL is only CL that can find this resource
- Thread.currentThread().setContextClassLoader(new GeneratingClassLoader());
- InputStream is = dcl.getResourceAsStream(resourceToGet);
- assertNotNull(is);
-
- int totalBytesRead = 0;
- byte[] input = new byte[128];
-
- BufferedInputStream bis = new BufferedInputStream(is);
- for (int bytesRead = bis.read(input); bytesRead > -1;) {
- totalBytesRead += bytesRead;
- bytesRead = bis.read(input);
- }
- bis.close();
-
- assertEquals(TEMP_FILE_BYTES_COUNT, totalBytesRead);
- } finally {
- Thread.currentThread().setContextClassLoader(cl);
- }
- }
-
- /**
- * Verifies that <tt>getResource</tt> will skip TCCL if <tt>excludeThreadContextClassLoader</tt> has been set to true.
- */
- public void testGetResourceExcludeTCCL() throws Exception {
- System.out.println("\nStarting ClassPathLoaderJUnitTest#testGetResourceExcludeTCCL");
-
- ClassPathLoader dcl = ClassPathLoader.createWithDefaults(true);
-
- String resourceToGet = "com/nowhere/testGetResourceExcludeTCCL.rsc";
- assertNull(dcl.getResource(resourceToGet));
-
- ClassLoader cl = Thread.currentThread().getContextClassLoader();
- try {
- // ensure that TCCL is only CL that can find this resource
- Thread.currentThread().setContextClassLoader(new GeneratingClassLoader());
- assertNull(dcl.getResource(resourceToGet));
- } finally {
- Thread.currentThread().setContextClassLoader(cl);
- }
- }
-
- /**
- * Verifies that <tt>getResourceAsStream</tt> will skip TCCL if <tt>excludeThreadContextClassLoader</tt> has been set
- * to true.
- */
- public void testGetResourceAsStreamExcludeTCCL() throws Exception {
- System.out.println("\nStarting ClassPathLoaderJUnitTest#testGetResourceAsStreamExcludeTCCL");
-
- ClassPathLoader dcl = ClassPathLoader.createWithDefaults(true);
-
- String resourceToGet = "com/nowhere/testGetResourceAsStreamExcludeTCCL.rsc";
- assertNull(dcl.getResourceAsStream(resourceToGet));
-
- ClassLoader cl = Thread.currentThread().getContextClassLoader();
- try {
- // ensure that TCCL is only CL that can find this resource
- Thread.currentThread().setContextClassLoader(new GeneratingClassLoader());
- assertNull(dcl.getResourceAsStream(resourceToGet));
- } finally {
- Thread.currentThread().setContextClassLoader(cl);
- }
- }
-
- public void testAddFindsLatestClassLoader() throws Exception {
- System.out.println("\nStarting ClassPathLoaderJUnitTest#testAddFindsLatestClassLoader");
-
- ClassPathLoader dcl = ClassPathLoader.createWithDefaults(false);
- dcl = dcl.addOrReplace(new GeneratingClassLoader());
-
- String classToLoad = "com.nowhere.TestAddFindsLatestClassLoader";
- Class<?> clazz = dcl.forName(classToLoad);
- assertNotNull(clazz);
-
- dcl = dcl.addOrReplace(new BrokenClassLoader());
-
- try {
- dcl.forName(classToLoad);
- fail();
- } catch (BrokenError expected) {
- // Expected
- }
- }
-
- /**
- * Verifies removing a ClassLoader.
- */
- public void testRemoveClassLoader() throws Exception {
- System.out.println("\nStarting ClassPathLoaderJUnitTest#testRemoveClassLoader");
-
- GeneratingClassLoader genClassLoader = new GeneratingClassLoader();
- ClassPathLoader cpl = ClassPathLoader.createWithDefaults(false);
- cpl = cpl.addOrReplace(genClassLoader);
-
- String classToLoad = "com.nowhere.TestRemoveClassLoader";
- Class<?> clazz = cpl.forName(classToLoad);
- assertNotNull(clazz);
-
- cpl = cpl.remove(genClassLoader);
-
- try {
- clazz = cpl.forName(classToLoad);
- fail();
- } catch (ClassNotFoundException expected) {
- // Expected
- }
- }
-
- /**
- * Verifies that a ClassLoader will be replaced when added more than once.
- */
- public void testClassLoaderReplace() throws Exception {
- System.out.println("\nStarting ClassPathLoaderJUnitTest#testClassLoaderReplace");
-
- String class1ToLoad = "ClassA";
- String class2ToLoad = "ClassB";
-
- ClassPathLoader cpl = ClassPathLoader.createWithDefaults(false);
- cpl = cpl.addOrReplace(new OneClassClassLoader(class1ToLoad));
-
- try {
- @SuppressWarnings("unused")
- Class<?> clazz = cpl.forName(class1ToLoad);
- } catch (ClassNotFoundException unexpected) {
- fail();
- }
-
- try {
- @SuppressWarnings("unused")
- Class<?> clazz = cpl.forName(class2ToLoad);
- fail();
- } catch (ClassNotFoundException expected) {
- // Expected
- }
-
- cpl = cpl.addOrReplace(new OneClassClassLoader(class2ToLoad));
- try {
- @SuppressWarnings("unused")
- Class<?> clazz = cpl.forName(class2ToLoad);
- } catch (ClassNotFoundException unexpected) {
- fail();
- }
-
- try {
- @SuppressWarnings("unused")
- Class<?> clazz = cpl.forName(class1ToLoad);
- fail();
- } catch (ClassNotFoundException expected) {
- // Expected
- }
- }
-
- /**
- * Verifies that JAR files found in the extlib directory will be correctly
- * added to the {@link ClassPathLoader}.
- */
- public void testJarsInExtLib() throws Exception {
- System.out.println("\nStarting ClassPathLoaderJUnitTest#testJarsInExtLib");
-
- this.deleteLibDir = ClassPathLoader.EXT_LIB_DIR.getParentFile().mkdirs();
- this.deleteExtDir = ClassPathLoader.EXT_LIB_DIR.mkdirs();
-
- File subdir = new File(ClassPathLoader.EXT_LIB_DIR, "cplju");
- subdir.mkdir();
-
- final ClassBuilder classBuilder = new ClassBuilder();
-
- writeJarBytesToFile(new File(ClassPathLoader.EXT_LIB_DIR, "ClassPathLoaderJUnit1.jar"),
- classBuilder.createJarFromClassContent("com/cpljunit1/ClassPathLoaderJUnit1", "package com.cpljunit1; public class ClassPathLoaderJUnit1 {}"));
- writeJarBytesToFile(new File(subdir, "ClassPathLoaderJUnit2.jar"),
- classBuilder.createJarFromClassContent("com/cpljunit2/ClassPathLoaderJUnit2", "package com.cpljunit2; public class ClassPathLoaderJUnit2 {}"));
-
- ClassPathLoader classPathLoader = ClassPathLoader.createWithDefaults(false);
- try {
- classPathLoader.forName("com.cpljunit1.ClassPathLoaderJUnit1");
- } catch (ClassNotFoundException cnfex) {
- fail("JAR file not correctly added to Classpath");
- }
-
- try {
- classPathLoader.forName("com.cpljunit2.ClassPathLoaderJUnit2");
- } catch (ClassNotFoundException cnfex) {
- fail("JAR file not correctly added to Classpath");
- }
-
- assertNotNull(classPathLoader.getResource("com/cpljunit2/ClassPathLoaderJUnit2.class"));
-
- Enumeration<URL> urls = classPathLoader.getResources("com/cpljunit1");
- if (!urls.hasMoreElements()) {
- fail("Resources should return one element");
- }
- }
-
- @Test
- public void testAsClassLoaderLoadClassWithMultipleCustomLoaders() throws Exception {
- System.out.println("\nStarting ClassPathLoaderJUnitTest#testAsClassLoaderLoadClassWithMultipleCustomLoaders");
-
- // create DCL such that the 3rd loader should find the class
- // first custom loader becomes parent which won't find anything
- ClassPathLoader dcl = ClassPathLoader.createWithDefaults(false);
- final GeneratingClassLoader generatingClassLoader = new GeneratingClassLoader();
- dcl = dcl.addOrReplace(generatingClassLoader);
- dcl = dcl.addOrReplace(new SimpleClassLoader(getClass().getClassLoader()));
- dcl = dcl.addOrReplace(new NullClassLoader());
-
- final String classToLoad = "com.nowhere.TestForNameWithMultipleCustomLoaders";
-
- ClassLoader cl = Thread.currentThread().getContextClassLoader();
- try {
- // set TCCL to throw errors which makes sure we find before checking TCCL
- Thread.currentThread().setContextClassLoader(new BrokenClassLoader());
-
- final ClassLoader classLoader = dcl.asClassLoader();
- final Class<?> clazz = classLoader.loadClass(classToLoad);
- assertNotNull(clazz);
- assertEquals(classToLoad, clazz.getName());
- assertTrue(clazz.getClassLoader() instanceof GeneratingClassLoader);
- assertEquals(generatingClassLoader, clazz.getClassLoader());
-
- final Object obj = clazz.newInstance();
- assertEquals(classToLoad, obj.getClass().getName());
-
- final Class<?> clazz2 = dcl.forName(classToLoad);
- assertSame("Should load same class as calling classLoader.", clazz, clazz2);
-
- final Class<?> clazz3 = Class.forName(classToLoad, true, classLoader);
- assertSame("Should load same class as calling classLoader.", clazz, clazz3);
-
- } finally {
- Thread.currentThread().setContextClassLoader(cl);
- }
- }
-
- private void writeJarBytesToFile(File jarFile, byte[] jarBytes) throws IOException {
- final OutputStream outStream = new FileOutputStream(jarFile);
- outStream.write(jarBytes);
- outStream.close();
- }
-
- private static void exploreClassLoaders() {
- System.out.println("Thread.currentThread().getContextClassLoader()...");
- exploreClassLoader(Thread.currentThread().getContextClassLoader(), 1);
-
- System.out.println("class.getClassLoader()...");
- exploreClassLoader(ClassPathLoaderJUnitTest.class.getClassLoader(), 1);
-
- System.out.println("ClassLoader.getSystemClassLoader()...");
- exploreClassLoader(ClassLoader.getSystemClassLoader(), 1);
- }
-
- private static void exploreClassLoader(ClassLoader cl, int indent) {
- String prefix = "";
- for (int i = 0; i < indent; i++) {
- prefix += "\t";
- }
- System.out.println(prefix + "ClassLoader toString() = " + cl);
-
- Class<?> clazz = cl.getClass();
- System.out.println(prefix + "ClassLoader getClass().getName() = " + clazz.getName());
- exploreClassLoaderSuperClass(prefix, clazz);
-
- try {
- URL[] urls = ((URLClassLoader) cl).getURLs();
- StringBuilder sb = new StringBuilder(prefix).append("ClassLoader getURLs = [");
- for (int i = 0; i < urls.length; i++) {
- if (i > 0)
- sb.append(", ");
- sb.append(urls[i].toString());
- }
- sb.append("]");
- System.out.println(sb.toString());
- } catch (Exception e) {
- System.out.println(prefix + "ClassLoader is not a URLClassLoader");
- }
-
- ClassLoader parent = cl.getParent();
- if (parent != null) {
- System.out.println(prefix + "ClassLoader has parent...");
- exploreClassLoader(parent, ++indent);
- }
- }
-
- private static void exploreClassLoaderSuperClass(String prefix, Class<?> clazz) {
- Class<?> superClazz = clazz.getSuperclass();
- if (superClazz != null) {
- System.out.println(prefix + " getSuperclass().getName() = " + superClazz.getName());
- exploreClassLoaderSuperClass(prefix, superClazz);
- }
- }
-
- /**
- * Custom class loader which uses BCEL to always dynamically generate a class for any class name it tries to load.
- */
- private class GeneratingClassLoader extends ClassLoader {
-
- /**
- * Currently unused but potentially useful for some future test. This causes this loader to only generate a class
- * that the parent could not find.
- *
- * @param parent
- * the parent class loader to check with first
- */
- @SuppressWarnings("unused")
- public GeneratingClassLoader(ClassLoader parent) {
- super(parent);
- }
-
- /**
- * Specifies no parent to ensure that this loader generates the named class.
- */
- public GeneratingClassLoader() {
- super(null); // no parent!!
- }
-
- @Override
- protected Class<?> findClass(String name) throws ClassNotFoundException {
- ClassGen cg = new ClassGen(name, "java.lang.Object", "<generated>", Constants.ACC_PUBLIC | Constants.ACC_SUPER, null);
- cg.addEmptyConstructor(Constants.ACC_PUBLIC);
- JavaClass jClazz = cg.getJavaClass();
- byte[] bytes = jClazz.getBytes();
- return defineClass(jClazz.getClassName(), bytes, 0, bytes.length);
- }
-
- @Override
- protected URL findResource(String name) {
- URL url = null;
- try {
- url = getTempFile().getAbsoluteFile().toURI().toURL();
- System.out.println("GeneratingClassLoader#findResource returning " + url);
- } catch (IOException e) {
- }
- return url;
- }
-
- @Override
- protected Enumeration<URL> findResources(String name) throws IOException {
- URL url = null;
- try {
- url = getTempFile().getAbsoluteFile().toURI().toURL();
- System.out.println("GeneratingClassLoader#findResources returning " + url);
- } catch (IOException e) {
- }
- Vector<URL> urls = new Vector<URL>();
- urls.add(url);
- return urls.elements();
- }
-
- protected File getTempFile() {
- return ClassPathLoaderJUnitTest.this.tempFile;
- }
- }
-
- /**
- * Custom class loader which uses BCEL to always dynamically generate a class for any class name it tries to load.
- */
- private class GeneratingClassLoader2 extends GeneratingClassLoader {
- @Override
- protected File getTempFile() {
- return ClassPathLoaderJUnitTest.this.tempFile2;
- }
- }
-
- /**
- * Custom class loader which will never find any class or resource.
- */
- private class NullClassLoader extends ClassLoader {
- public NullClassLoader() {
- super(null); // no parent!!
- }
-
- @Override
- public Class<?> loadClass(String name) throws ClassNotFoundException {
- throw new ClassNotFoundException(name);
- }
-
- @Override
- public URL getResource(String name) {
- return null;
- }
- }
-
- /**
- * Custom class loader which will find anything the parent can find.
- */
- private class SimpleClassLoader extends ClassLoader {
- public SimpleClassLoader(ClassLoader parent) {
- super(parent);
- }
- }
-
- private class OneClassClassLoader extends ClassLoader {
- private final GeneratingClassLoader genClassLoader = new GeneratingClassLoader();
- private String className;
-
- public OneClassClassLoader(final String className) {
- super(null); // no parent!!
- this.className = className;
- }
-
- @Override
- public Class<?> findClass(String name) throws ClassNotFoundException {
- if (!name.equals(className))
- throw new ClassNotFoundException();
-
- else
- return this.genClassLoader.findClass(name);
- }
-
- @Override
- public boolean equals(final Object other) {
- return (other instanceof OneClassClassLoader);
- }
- }
-
- /**
- * Custom class loader which is broken and always throws errors.
- */
- private class BrokenClassLoader extends ClassLoader {
- public BrokenClassLoader() {
- super(null); // no parent!!
- }
-
- @Override
- public Class<?> loadClass(String name) throws ClassNotFoundException {
- throw new BrokenError();
- }
-
- @Override
- public URL getResource(String name) {
- throw new BrokenError();
- }
- }
-
- @SuppressWarnings("serial")
- private class BrokenError extends Error {
- }
-}