You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@geode.apache.org by hi...@apache.org on 2016/06/15 00:08:48 UTC
[92/94] [abbrv] incubator-geode git commit: GEODE-1362 Merge
remote-tracking branch 'origin/develop' into feature/GEODE-1372
http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/571724bb/geode-core/src/test/java/com/gemstone/gemfire/distributed/LocatorUDPSecurityDUnitTest.java
----------------------------------------------------------------------
diff --cc geode-core/src/test/java/com/gemstone/gemfire/distributed/LocatorUDPSecurityDUnitTest.java
index 123b5ab,0000000..5cc0eb0
mode 100755,000000..100755
--- a/geode-core/src/test/java/com/gemstone/gemfire/distributed/LocatorUDPSecurityDUnitTest.java
+++ b/geode-core/src/test/java/com/gemstone/gemfire/distributed/LocatorUDPSecurityDUnitTest.java
@@@ -1,90 -1,0 +1,89 @@@
+package com.gemstone.gemfire.distributed;
+
+import java.io.File;
+import java.io.IOException;
+import java.util.Properties;
+
+import org.junit.Assert;
+import org.junit.Test;
+
+import com.gemstone.gemfire.GemFireConfigException;
+import com.gemstone.gemfire.distributed.internal.DistributionConfig;
+import com.gemstone.gemfire.distributed.internal.InternalDistributedSystem;
+import com.gemstone.gemfire.distributed.internal.membership.gms.MembershipManagerHelper;
+import com.gemstone.gemfire.internal.AvailablePort;
+import com.gemstone.gemfire.test.dunit.DistributedTestUtils;
+import com.gemstone.gemfire.test.dunit.Host;
+import com.gemstone.gemfire.test.dunit.NetworkUtils;
+import com.gemstone.gemfire.test.dunit.SerializableRunnable;
+import com.gemstone.gemfire.test.dunit.VM;
+import com.gemstone.gemfire.test.dunit.Wait;
+import com.gemstone.gemfire.test.dunit.WaitCriterion;
+
+import static com.gemstone.gemfire.distributed.DistributedSystemConfigProperties.*;
+
+public class LocatorUDPSecurityDUnitTest extends LocatorDUnitTest{
+
- public LocatorUDPSecurityDUnitTest(String name) {
- super(name);
++ public LocatorUDPSecurityDUnitTest() {
+ }
+
+ @Test
+ public void testLoop() throws Exception {
- for(int i=0; i < 100; i++) {
++ for(int i=0; i < 1; i++) {
+ testMultipleLocatorsRestartingAtSameTime();
+ tearDown();
+ setUp();
+ }
+ }
+
+ @Override
+ protected void addDSProps(Properties p) {
+ p.setProperty(SECURITY_UDP_DHALGO, "AES:128");
+ }
+
+ @Test
+ public void testLocatorWithUDPSecurityButServer() throws Exception {
+ disconnectAllFromDS();
+ Host host = Host.getHost(0);
+ VM vm0 = host.getVM(0);
+ VM vm1 = host.getVM(1);
+ VM vm2 = host.getVM(2);
+
+ final int port =
+ AvailablePort.getRandomAvailablePort(AvailablePort.SOCKET);
+ DistributedTestUtils.deleteLocatorStateFile(port1);
+ final String locators = NetworkUtils.getServerHostName(host) + "[" + port + "]";
+ final String uniqueName = getUniqueName();
+
+ vm0.invoke(new SerializableRunnable("Start locator " + locators) {
+ public void run() {
+ File logFile = new File("");
+ try {
+ Properties locProps = new Properties();
+ locProps.setProperty(MCAST_PORT, "0");
+ locProps.setProperty(MEMBER_TIMEOUT, "1000");
+ locProps.put(ENABLE_CLUSTER_CONFIGURATION, "false");
+
+ addDSProps(locProps);
+ Locator.startLocatorAndDS(port, logFile, locProps);
+ } catch (IOException ex) {
+ com.gemstone.gemfire.test.dunit.Assert.fail("While starting locator on port " + port, ex);
+ }
+ }
+ });
+ try {
+
+ Properties props = new Properties();
+ props.setProperty(MCAST_PORT, "0");
+ props.setProperty(LOCATORS, locators);
+ props.setProperty(MEMBER_TIMEOUT, "1000");
+ // addDSProps(props);
+ system = (InternalDistributedSystem) DistributedSystem.connect(props);
+
+ } catch(GemFireConfigException gce){
+ Assert.assertTrue(gce.getMessage().contains("Rejecting findCoordinatorRequest"));
+ } finally {
+ vm0.invoke(getStopLocatorRunnable());
+ }
+ }
+}
http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/571724bb/geode-core/src/test/java/com/gemstone/gemfire/distributed/internal/membership/MembershipJUnitTest.java
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/571724bb/geode-core/src/test/java/com/gemstone/gemfire/distributed/internal/membership/gms/locator/GMSLocatorRecoveryJUnitTest.java
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/571724bb/geode-core/src/test/java/com/gemstone/gemfire/distributed/internal/membership/gms/messenger/JGroupsMessengerJUnitTest.java
----------------------------------------------------------------------
diff --cc geode-core/src/test/java/com/gemstone/gemfire/distributed/internal/membership/gms/messenger/JGroupsMessengerJUnitTest.java
index 7385228,58dbe48..75192af
--- a/geode-core/src/test/java/com/gemstone/gemfire/distributed/internal/membership/gms/messenger/JGroupsMessengerJUnitTest.java
+++ b/geode-core/src/test/java/com/gemstone/gemfire/distributed/internal/membership/gms/messenger/JGroupsMessengerJUnitTest.java
@@@ -16,33 -16,21 +16,51 @@@
*/
package com.gemstone.gemfire.distributed.internal.membership.gms.messenger;
+import com.gemstone.gemfire.ForcedDisconnectException;
+import com.gemstone.gemfire.GemFireIOException;
+import com.gemstone.gemfire.distributed.DistributedSystemConfigProperties;
+import com.gemstone.gemfire.distributed.DistributedSystemDisconnectedException;
+import com.gemstone.gemfire.distributed.internal.*;
+import com.gemstone.gemfire.distributed.internal.membership.InternalDistributedMember;
+import com.gemstone.gemfire.distributed.internal.membership.NetView;
+import com.gemstone.gemfire.distributed.internal.membership.gms.GMSMember;
+import com.gemstone.gemfire.distributed.internal.membership.gms.ServiceConfig;
+import com.gemstone.gemfire.distributed.internal.membership.gms.Services;
+import com.gemstone.gemfire.distributed.internal.membership.gms.Services.Stopper;
+import com.gemstone.gemfire.distributed.internal.membership.gms.interfaces.HealthMonitor;
+import com.gemstone.gemfire.distributed.internal.membership.gms.interfaces.JoinLeave;
+import com.gemstone.gemfire.distributed.internal.membership.gms.interfaces.Manager;
+import com.gemstone.gemfire.distributed.internal.membership.gms.interfaces.MessageHandler;
+import com.gemstone.gemfire.distributed.internal.membership.gms.locator.FindCoordinatorRequest;
+import com.gemstone.gemfire.distributed.internal.membership.gms.locator.FindCoordinatorResponse;
+import com.gemstone.gemfire.distributed.internal.membership.gms.messages.InstallViewMessage;
+import com.gemstone.gemfire.distributed.internal.membership.gms.messages.JoinRequestMessage;
+import com.gemstone.gemfire.distributed.internal.membership.gms.messages.JoinResponseMessage;
+import com.gemstone.gemfire.distributed.internal.membership.gms.messages.LeaveRequestMessage;
+import com.gemstone.gemfire.distributed.internal.membership.gms.messenger.JGroupsMessenger.JGroupsReceiver;
+import com.gemstone.gemfire.internal.*;
+import com.gemstone.gemfire.internal.admin.remote.RemoteTransportConfig;
+import com.gemstone.gemfire.internal.cache.DistributedCacheOperation;
+import com.gemstone.gemfire.internal.logging.log4j.AlertAppender;
+import com.gemstone.gemfire.test.junit.categories.IntegrationTest;
++
+ import static com.gemstone.gemfire.distributed.ConfigurationProperties.*;
+ import static org.junit.Assert.*;
+ import static org.mockito.Matchers.*;
+ import static org.mockito.Mockito.*;
+
+ import java.io.ByteArrayInputStream;
+ import java.io.DataInputStream;
+ import java.io.DataOutput;
+ import java.io.IOException;
+ import java.util.ArrayList;
+ import java.util.HashMap;
++import java.util.HashSet;
+ import java.util.List;
+ import java.util.Map;
+ import java.util.Properties;
++import java.util.Set;
+
import org.apache.commons.lang.SerializationException;
import org.jgroups.Address;
import org.jgroups.Event;
@@@ -889,174 -891,6 +930,174 @@@ public class JGroupsMessengerJUnitTest
assertFalse(AvailablePort.isPortAvailable(services.getConfig().getDistributionConfig().getMcastPort(), AvailablePort.MULTICAST));
}
+ private NetView createView(InternalDistributedMember otherMbr) {
+ InternalDistributedMember sender = messenger.getMemberID();
+ List<InternalDistributedMember> mbrs = new ArrayList<>();
+ mbrs.add(sender);
+ mbrs.add(otherMbr);
+ NetView v = new NetView(sender, 1, mbrs);
+ return v;
+ }
+
+ @Test
+ public void testEncryptedFindCoordinatorRequest() throws Exception{
+ InternalDistributedMember otherMbr = new InternalDistributedMember("localhost", 8888);
+
+ Properties p = new Properties();
+ p.put(DistributedSystemConfigProperties.SECURITY_UDP_DHALGO, "AES:128");
+ initMocks(false, p);
+
+ NetView v = createView(otherMbr);
+
+ GMSEncrypt otherMbrEncrptor = new GMSEncrypt(services);
+
+ messenger.setPublicKey(otherMbrEncrptor.getPublicKeyBytes(), otherMbr);
+ messenger.initClusterKey();
+
+ FindCoordinatorRequest gfmsg = new FindCoordinatorRequest(messenger.getMemberID(), new ArrayList<InternalDistributedMember>(2), 1, messenger.getPublickey(messenger.getMemberID()), 1, "");
- Set<InternalDistributedMember> recipients = new HashSet<>();
++ Set<InternalDistributedMember> recipients = new HashSet();
+ recipients.add(otherMbr);
+ gfmsg.setRecipients(recipients);
+
+ short version = Version.CURRENT_ORDINAL;
+
+ HeapDataOutputStream out = new HeapDataOutputStream(Version.CURRENT);
+
+ messenger.writeEncryptedMessage(gfmsg, version, out);
+
+ byte[] requestBytes = out.toByteArray();
+
+ DataInputStream dis = new DataInputStream(new ByteArrayInputStream(requestBytes));
+
+ DistributionMessage distributionMessage = messenger.readEncryptedMessage(dis, version, otherMbrEncrptor);
+
+ assertEquals(gfmsg, distributionMessage);
+ }
+
+ @Test
+ public void testEncryptedFindCoordinatorResponse() throws Exception{
+ InternalDistributedMember otherMbr = new InternalDistributedMember("localhost", 8888);
+
+ Properties p = new Properties();
+ p.put(DistributedSystemConfigProperties.SECURITY_UDP_DHALGO, "AES:128");
+ initMocks(false, p);
+
+ NetView v = createView(otherMbr);
+
+ GMSEncrypt otherMbrEncrptor = new GMSEncrypt(services);
+ otherMbrEncrptor.setPublicKey(messenger.getPublickey(messenger.getMemberID()), messenger.getMemberID());
+
+ messenger.setPublicKey(otherMbrEncrptor.getPublicKeyBytes(), otherMbr);
+ messenger.initClusterKey();
+
+ FindCoordinatorResponse gfmsg = new FindCoordinatorResponse(messenger.getMemberID(), messenger.getMemberID(), messenger.getClusterSecretKey(), 1);
+ Set<InternalDistributedMember> recipients = new HashSet<>();
+ recipients.add(otherMbr);
+ gfmsg.setRecipients(recipients);
+
+ short version = Version.CURRENT_ORDINAL;
+
+ HeapDataOutputStream out = new HeapDataOutputStream(Version.CURRENT);
+
+ messenger.writeEncryptedMessage(gfmsg, version, out);
+
+ byte[] requestBytes = out.toByteArray();
+
+ DataInputStream dis = new DataInputStream(new ByteArrayInputStream(requestBytes));
+
+ messenger.addRequestId(1, messenger.getMemberID());
+
+ DistributionMessage distributionMessage = messenger.readEncryptedMessage(dis, version, otherMbrEncrptor);
+
+ assertEquals(gfmsg, distributionMessage);
+ }
+
+ @Test
+ public void testEncryptedJoinRequest() throws Exception{
+ InternalDistributedMember otherMbr = new InternalDistributedMember("localhost", 8888);
+
+ Properties p = new Properties();
+ p.put(DistributedSystemConfigProperties.SECURITY_UDP_DHALGO, "AES:128");
+ initMocks(false, p);
+
+ NetView v = createView(otherMbr);
+
+ GMSEncrypt otherMbrEncrptor = new GMSEncrypt(services);
+
+ messenger.setPublicKey(otherMbrEncrptor.getPublicKeyBytes(), otherMbr);
+ messenger.initClusterKey();
+
+ JoinRequestMessage gfmsg = new JoinRequestMessage(otherMbr, messenger.getMemberID(), null, 9789, 1);
+
+ short version = Version.CURRENT_ORDINAL;
+
+ HeapDataOutputStream out = new HeapDataOutputStream(Version.CURRENT);
+
+ messenger.writeEncryptedMessage(gfmsg, version, out);
+
+ byte[] requestBytes = out.toByteArray();
+
+ DataInputStream dis = new DataInputStream(new ByteArrayInputStream(requestBytes));
+
+ DistributionMessage distributionMessage = messenger.readEncryptedMessage(dis, version, otherMbrEncrptor);
+
+ assertEquals(gfmsg, distributionMessage);
+ }
+
+ @Test
+ public void testEncryptedJoinResponse() throws Exception{
+ InternalDistributedMember otherMbr = new InternalDistributedMember("localhost", 8888);
+
+ Properties p = new Properties();
+ p.put(DistributedSystemConfigProperties.SECURITY_UDP_DHALGO, "AES:128");
+ initMocks(false, p);
+
+ NetView v = createView(otherMbr);
+
+ GMSEncrypt otherMbrEncrptor = new GMSEncrypt(services);
+ otherMbrEncrptor.setPublicKey(messenger.getPublickey(messenger.getMemberID()), messenger.getMemberID());
+
+ messenger.setPublicKey(otherMbrEncrptor.getPublicKeyBytes(), otherMbr);
+ messenger.initClusterKey();
+
+ JoinResponseMessage gfmsg = new JoinResponseMessage(otherMbr, messenger.getClusterSecretKey(), 1);
+
+ short version = Version.CURRENT_ORDINAL;
+
+ HeapDataOutputStream out = new HeapDataOutputStream(Version.CURRENT);
+
+ messenger.writeEncryptedMessage(gfmsg, version, out);
+
+ byte[] requestBytes = out.toByteArray();
+
+ DataInputStream dis = new DataInputStream(new ByteArrayInputStream(requestBytes));
+
+ messenger.addRequestId(1, messenger.getMemberID());
+
+ DistributionMessage gfMessageAtOtherMbr = messenger.readEncryptedMessage(dis, version, otherMbrEncrptor);
+
+ assertEquals(gfmsg, gfMessageAtOtherMbr);
+
+ //lets send view as well..
+
+ InstallViewMessage installViewMessage = new InstallViewMessage(v, null, true);
+
+ out = new HeapDataOutputStream(Version.CURRENT);
+
+ messenger.writeEncryptedMessage(installViewMessage, version, out);
+
+ requestBytes = out.toByteArray();
+
+ otherMbrEncrptor.addClusterKey(((JoinResponseMessage)gfMessageAtOtherMbr).getSecretPk());
+
+ dis = new DataInputStream(new ByteArrayInputStream(requestBytes));
+
+ gfMessageAtOtherMbr = messenger.readEncryptedMessage(dis, version, otherMbrEncrptor);
+
+ assertEquals(installViewMessage, gfMessageAtOtherMbr);
+
+ }
+
/**
* creates an InternalDistributedMember address that can be used
* with the doctored JGroups channel. This includes a logical