You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@servicecomb.apache.org by li...@apache.org on 2022/03/03 02:50:05 UTC
[servicecomb-java-chassis] branch master updated: [SCB-2361]modify transformIpPort logic (#2728)
This is an automated email from the ASF dual-hosted git repository.
liubao pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/servicecomb-java-chassis.git
The following commit(s) were added to refs/heads/master by this push:
new 9d06d75 [SCB-2361]modify transformIpPort logic (#2728)
9d06d75 is described below
commit 9d06d75e2fe0a50a294cb6a130d11558a4b43d44
Author: zyl <72...@users.noreply.github.com>
AuthorDate: Thu Mar 3 10:49:55 2022 +0800
[SCB-2361]modify transformIpPort logic (#2728)
---
.../serviceregistry/refresh/AddressManager.java | 7 ++++---
.../serviceregistry/refresh/AddressManagerTest.java | 20 ++++++++++++++++++++
2 files changed, 24 insertions(+), 3 deletions(-)
diff --git a/service-registry/registry-service-center/src/main/java/org/apache/servicecomb/serviceregistry/refresh/AddressManager.java b/service-registry/registry-service-center/src/main/java/org/apache/servicecomb/serviceregistry/refresh/AddressManager.java
index 8851c95..e782e05 100644
--- a/service-registry/registry-service-center/src/main/java/org/apache/servicecomb/serviceregistry/refresh/AddressManager.java
+++ b/service-registry/registry-service-center/src/main/java/org/apache/servicecomb/serviceregistry/refresh/AddressManager.java
@@ -20,6 +20,7 @@ package org.apache.servicecomb.serviceregistry.refresh;
import java.io.IOException;
import java.net.InetSocketAddress;
import java.net.Socket;
+import java.net.URI;
import java.util.List;
import org.apache.commons.lang3.StringUtils;
@@ -36,7 +37,7 @@ import com.google.common.eventbus.Subscribe;
public class AddressManager extends AbstractAddressManager {
private static final Logger LOGGER = LoggerFactory.getLogger(AddressManager.class);
- private static final String URI_SPLIT = ":";
+ private static final String URI_PREFIX = "rest://";
public AddressManager(List<String> addresses, EventBus eventBus) {
super(addresses);
@@ -65,8 +66,8 @@ public class AddressManager extends AbstractAddressManager {
}
private IpPort transformIpPort(String address) {
- String[] result = StringUtils.split(address, URI_SPLIT);
- return new IpPort(result[0], Integer.valueOf(result[1]));
+ URI uri = URI.create(URI_PREFIX + address);
+ return new IpPort(uri.getHost(), uri.getPort());
}
@Subscribe
diff --git a/service-registry/registry-service-center/src/test/java/org/apache/servicecomb/serviceregistry/refresh/AddressManagerTest.java b/service-registry/registry-service-center/src/test/java/org/apache/servicecomb/serviceregistry/refresh/AddressManagerTest.java
index a81a56c..9263e1b 100644
--- a/service-registry/registry-service-center/src/test/java/org/apache/servicecomb/serviceregistry/refresh/AddressManagerTest.java
+++ b/service-registry/registry-service-center/src/test/java/org/apache/servicecomb/serviceregistry/refresh/AddressManagerTest.java
@@ -23,6 +23,7 @@ import java.util.HashMap;
import java.util.List;
import java.util.Map;
+import org.apache.servicecomb.foundation.common.event.EventManager;
import org.apache.servicecomb.foundation.common.net.IpPort;
import org.apache.servicecomb.http.client.event.RefreshEndpointEvent;
import org.junit.Assert;
@@ -80,4 +81,23 @@ class AddressManagerTest {
List<String> availableRegion = Deencapsulation.getField(addressManager1, "availableRegion");
Assert.assertEquals("127.0.0.4:30100", availableRegion.get(0));
}
+
+ @Test
+ public void addressIPV6Test() {
+ List<String> addressAZ = new ArrayList<>();
+ addressAZ.add("rest://[2008::7:957f:b2d6:1af4:a1f8]:30100");
+ Map<String, List<String>> zoneAndRegion = new HashMap<>();
+ zoneAndRegion.put("sameZone", addressAZ);
+ zoneAndRegion.put("sameRegion", new ArrayList<>());
+ addressManager1 = new AddressManager(addresses, EventManager.getEventBus());
+ RefreshEndpointEvent event = new RefreshEndpointEvent(zoneAndRegion, "SERVICECENTER");
+ addressManager1.refreshEndpoint(event, "SERVICECENTER");
+
+ List<String> availableZone = Deencapsulation.getField(addressManager1, "availableZone");
+ Assert.assertEquals("[2008::7:957f:b2d6:1af4:a1f8]:30100", availableZone.get(0));
+
+ IpPort ipPort = addressManager1.getAvailableIpPort();
+ Assert.assertEquals("[2008::7:957f:b2d6:1af4:a1f8]", ipPort.getHostOrIp());
+ Assert.assertEquals(30100, ipPort.getPort());
+ }
}
\ No newline at end of file