From a6e70a9274917b54f69325279fd4cc7fdb7c4572 Mon Sep 17 00:00:00 2001 From: Weiran Fang <8175562+WeiranFang@users.noreply.github.com> Date: Mon, 24 Aug 2020 12:59:43 -0700 Subject: [PATCH] chore(fix): directpath ipv4 connection should not fail for an ipv6-enabled test client (#388) * chore(fix): directpath ipv4 connection should not fail for an ipv6-enabled test client * rename bigtable-directpath-ipv4-it profile to bigtable-directpath-ipv4only-it * fix sys prop & method naming * fix err msg --- google-cloud-bigtable/pom.xml | 10 +++++----- .../bigtable/test_helpers/env/AbstractTestEnv.java | 4 ++-- .../cloud/bigtable/test_helpers/env/CloudEnv.java | 8 +++++--- 3 files changed, 12 insertions(+), 10 deletions(-) diff --git a/google-cloud-bigtable/pom.xml b/google-cloud-bigtable/pom.xml index 119624fd6..309e4d51e 100644 --- a/google-cloud-bigtable/pom.xml +++ b/google-cloud-bigtable/pom.xml @@ -340,7 +340,7 @@ - bigtable-directpath-ipv4-it + bigtable-directpath-ipv4only-it @@ -359,16 +359,16 @@ cloud ${bigtable.directpath-data-endpoint} ${bigtable.directpath-admin-endpoint} - ${project.build.directory}/test-grpc-logs/directpath-ipv4-it + ${project.build.directory}/test-grpc-logs/directpath-ipv4only-it true - true + true com.google.cloud.bigtable.data.v2.it.*IT - ${project.build.directory}/failsafe-reports/failsafe-summary-directpath-ipv4-it.xml - ${project.build.directory}/failsafe-reports/directpath-ipv4-it + ${project.build.directory}/failsafe-reports/failsafe-summary-directpath-ipv4only-it.xml + ${project.build.directory}/failsafe-reports/directpath-ipv4only-it diff --git a/google-cloud-bigtable/src/test/java/com/google/cloud/bigtable/test_helpers/env/AbstractTestEnv.java b/google-cloud-bigtable/src/test/java/com/google/cloud/bigtable/test_helpers/env/AbstractTestEnv.java index 492e94e9b..c86403deb 100644 --- a/google-cloud-bigtable/src/test/java/com/google/cloud/bigtable/test_helpers/env/AbstractTestEnv.java +++ b/google-cloud-bigtable/src/test/java/com/google/cloud/bigtable/test_helpers/env/AbstractTestEnv.java @@ -78,8 +78,8 @@ public boolean isDirectPathEnabled() { return Boolean.getBoolean("bigtable.attempt-directpath"); } - public boolean isDirectPathIpv4() { - return Boolean.getBoolean("bigtable.directpath-ipv4"); + public boolean isDirectPathIpv4Only() { + return Boolean.getBoolean("bigtable.directpath-ipv4only"); } public String getPrimaryZone() { diff --git a/google-cloud-bigtable/src/test/java/com/google/cloud/bigtable/test_helpers/env/CloudEnv.java b/google-cloud-bigtable/src/test/java/com/google/cloud/bigtable/test_helpers/env/CloudEnv.java index 87aab527e..cee19b29a 100644 --- a/google-cloud-bigtable/src/test/java/com/google/cloud/bigtable/test_helpers/env/CloudEnv.java +++ b/google-cloud-bigtable/src/test/java/com/google/cloud/bigtable/test_helpers/env/CloudEnv.java @@ -222,7 +222,8 @@ public void onHeaders(Metadata headers) { + " to the test environment's requirement for DirectPath." + " Expected test to access DirectPath via %s," + " but RPC was destined for %s", - isDirectPathIpv4() ? "ipv4" : "ipv6", remoteAddr.toString())); + isDirectPathIpv4Only() ? "ipv4 only" : "ipv4 or ipv6", + remoteAddr.toString())); } super.onHeaders(headers); } @@ -238,10 +239,11 @@ private boolean verifyRemoteAddress(SocketAddress remoteAddr) { if (remoteAddr instanceof InetSocketAddress) { InetAddress inetAddress = ((InetSocketAddress) remoteAddr).getAddress(); String addr = inetAddress.getHostAddress(); - if (isDirectPathIpv4()) { + if (isDirectPathIpv4Only()) { return addr.startsWith(DP_IPV4_PREFIX); } else { - return addr.startsWith(DP_IPV6_PREFIX); + // For an ipv6-enabled VM, client could connect to either ipv4 or ipv6 balancer addresses. + return addr.startsWith(DP_IPV6_PREFIX) || addr.startsWith(DP_IPV4_PREFIX); } } return true;