Repository: incubator-geode
Updated Branches:
  refs/heads/develop f2c3ca489 -> 8a0803230


GEODE-2000 Now ClientMembershipListener returns host on which
CacheServer is bind


Project: http://git-wip-us.apache.org/repos/asf/incubator-geode/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-geode/commit/8a080323
Tree: http://git-wip-us.apache.org/repos/asf/incubator-geode/tree/8a080323
Diff: http://git-wip-us.apache.org/repos/asf/incubator-geode/diff/8a080323

Branch: refs/heads/develop
Commit: 8a080323070dbbc1d7037612d0d8e1188dcf1507
Parents: f2c3ca4
Author: Hitesh Khamesra <hkhame...@pivotal.io>
Authored: Wed Oct 12 15:18:21 2016 -0700
Committer: Hitesh Khamesra <hkhame...@pivotal.io>
Committed: Thu Oct 13 14:38:14 2016 -0700

----------------------------------------------------------------------
 .../membership/InternalDistributedMember.java   |  7 ++++-
 .../internal/cache/tier/sockets/HandShake.java  |  8 +++---
 .../AutoConnectionSourceImplJUnitTest.java      | 27 ++++++++++++++++++++
 3 files changed, 38 insertions(+), 4 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/8a080323/geode-core/src/main/java/org/apache/geode/distributed/internal/membership/InternalDistributedMember.java
----------------------------------------------------------------------
diff --git 
a/geode-core/src/main/java/org/apache/geode/distributed/internal/membership/InternalDistributedMember.java
 
b/geode-core/src/main/java/org/apache/geode/distributed/internal/membership/InternalDistributedMember.java
index 775fa24..3c16bb3 100755
--- 
a/geode-core/src/main/java/org/apache/geode/distributed/internal/membership/InternalDistributedMember.java
+++ 
b/geode-core/src/main/java/org/apache/geode/distributed/internal/membership/InternalDistributedMember.java
@@ -1031,6 +1031,7 @@ public class InternalDistributedMember
     int port = in.readInt();
 
     this.hostName = DataSerializer.readString(in);
+    
     this.hostName = SocketCreator.resolve_dns? 
SocketCreator.getCanonicalHostName(inetAddr, hostName) : 
inetAddr.getHostAddress();
 
     int flags = in.readUnsignedByte();
@@ -1210,7 +1211,11 @@ public class InternalDistributedMember
   }
 
   public String getHost() {
-    return this.netMbr.getInetAddress().getCanonicalHostName();
+    return this.hostName;
+  }
+  
+  public void setHost(String h) {
+    this.hostName = h;
   }
 
   public int getProcessId() {

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/8a080323/geode-core/src/main/java/org/apache/geode/internal/cache/tier/sockets/HandShake.java
----------------------------------------------------------------------
diff --git 
a/geode-core/src/main/java/org/apache/geode/internal/cache/tier/sockets/HandShake.java
 
b/geode-core/src/main/java/org/apache/geode/internal/cache/tier/sockets/HandShake.java
index d63dfa0..885b61b 100644
--- 
a/geode-core/src/main/java/org/apache/geode/internal/cache/tier/sockets/HandShake.java
+++ 
b/geode-core/src/main/java/org/apache/geode/internal/cache/tier/sockets/HandShake.java
@@ -1320,7 +1320,7 @@ public class HandShake implements ClientHandShake
       int qSize = dis.readInt();
 
       // Read the server member
-      member = readServerMember(dis);
+      member = readServerMember(dis, location);
       serverQStatus = new ServerQueueStatus(epType, qSize,member);
 
       // Read the message (if any)
@@ -1439,7 +1439,7 @@ public class HandShake implements ClientHandShake
     return sqs;
   }
 
-  protected DistributedMember readServerMember(DataInputStream p_dis) throws 
IOException {
+  public static DistributedMember readServerMember(DataInputStream p_dis, 
ServerLocation serverLocation) throws IOException {
 
     byte[] memberBytes = DataSerializer.readByteArray(p_dis);
     ByteArrayInputStream bais = new ByteArrayInputStream(memberBytes);
@@ -1449,7 +1449,9 @@ public class HandShake implements ClientHandShake
       dis = new VersionedDataInputStream(dis, v);
     }
     try {
-      return (DistributedMember)DataSerializer.readObject(dis);
+      InternalDistributedMember ids = 
(InternalDistributedMember)DataSerializer.readObject(dis);
+      ids.setHost(serverLocation.getHostName());
+      return ids;
     }
     catch (EOFException e) {
       throw e;

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/8a080323/geode-core/src/test/java/org/apache/geode/cache/client/internal/AutoConnectionSourceImplJUnitTest.java
----------------------------------------------------------------------
diff --git 
a/geode-core/src/test/java/org/apache/geode/cache/client/internal/AutoConnectionSourceImplJUnitTest.java
 
b/geode-core/src/test/java/org/apache/geode/cache/client/internal/AutoConnectionSourceImplJUnitTest.java
index fb4b970..ab6f626 100644
--- 
a/geode-core/src/test/java/org/apache/geode/cache/client/internal/AutoConnectionSourceImplJUnitTest.java
+++ 
b/geode-core/src/test/java/org/apache/geode/cache/client/internal/AutoConnectionSourceImplJUnitTest.java
@@ -17,6 +17,7 @@
 package org.apache.geode.cache.client.internal;
 
 import org.apache.geode.CancelCriterion;
+import org.apache.geode.DataSerializer;
 import org.apache.geode.cache.*;
 import org.apache.geode.cache.client.NoAvailableLocatorsException;
 import org.apache.geode.cache.client.SubscriptionNotEnabledException;
@@ -24,22 +25,29 @@ import 
org.apache.geode.cache.client.internal.locator.ClientConnectionRequest;
 import org.apache.geode.cache.client.internal.locator.ClientConnectionResponse;
 import org.apache.geode.cache.client.internal.locator.LocatorListResponse;
 import org.apache.geode.cache.query.QueryService;
+import org.apache.geode.distributed.DistributedMember;
 import org.apache.geode.distributed.DistributedSystem;
 import org.apache.geode.distributed.internal.InternalDistributedSystem;
 import org.apache.geode.distributed.internal.PoolStatHelper;
 import org.apache.geode.distributed.internal.ServerLocation;
 import org.apache.geode.distributed.internal.SharedConfiguration;
+import 
org.apache.geode.distributed.internal.membership.InternalDistributedMember;
 import org.apache.geode.distributed.internal.tcpserver.TcpClient;
 import org.apache.geode.distributed.internal.tcpserver.TcpHandler;
 import org.apache.geode.distributed.internal.tcpserver.TcpServer;
 import org.apache.geode.internal.AvailablePortHelper;
+import org.apache.geode.internal.HeapDataOutputStream;
+import org.apache.geode.internal.Version;
 import org.apache.geode.internal.cache.PoolStats;
+import org.apache.geode.internal.cache.tier.sockets.HandShake;
 import org.apache.geode.test.junit.categories.IntegrationTest;
 import org.junit.After;
 import org.junit.Before;
 import org.junit.Test;
 import org.junit.experimental.categories.Category;
 
+import java.io.ByteArrayInputStream;
+import java.io.DataInputStream;
 import java.io.IOException;
 import java.net.ConnectException;
 import java.net.InetAddress;
@@ -140,6 +148,25 @@ public class AutoConnectionSourceImplJUnitTest {
   }
   
   @Test
+  public void testClientMembershipListenerHostAtClient() throws IOException {
+    String fakeHost = "fake.com";
+    InternalDistributedMember member = new 
InternalDistributedMember("localhost", 54638);
+    ServerLocation sl = new ServerLocation(fakeHost, 420);
+    
+    HeapDataOutputStream dos = new HeapDataOutputStream( Version.CURRENT);
+    HeapDataOutputStream hdos = new HeapDataOutputStream(Version.CURRENT);
+    DataSerializer.writeObject(member, hdos);
+    DataSerializer.writeByteArray(hdos.toByteArray(), dos);
+    hdos.close();
+    
+    DataInputStream dis = new DataInputStream(new 
ByteArrayInputStream(dos.toByteArray()));
+    
+    DistributedMember ret = (DistributedMember)HandShake.readServerMember(dis, 
sl);
+    
+    assertEquals(fakeHost, ret.getHost());
+  }
+  
+  @Test
   public void testNoServers() throws Exception {
     startFakeLocator();
     handler.nextConnectionResponse = new ClientConnectionResponse(null);

Reply via email to