Skip to content

Commit 01b24d3

Browse files
aCombraycopybara-github
authored andcommitted
Internal change
PiperOrigin-RevId: 914780082
1 parent d8aa61a commit 01b24d3

6 files changed

Lines changed: 43 additions & 2 deletions

File tree

src/java/com/google/devtools/mobileharness/infra/client/api/util/stub/BUILD

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -115,6 +115,8 @@ java_library(
115115
"//src/devtools/mobileharness/shared/util/comm/relay/proto:destination_java_proto",
116116
"//src/java/com/google/devtools/mobileharness/api/model/lab:locator",
117117
"//src/java/com/google/devtools/mobileharness/infra/client/api/mode/remote:lab_server_locator",
118+
"//src/java/com/google/devtools/mobileharness/shared/util/comm/dualconduit/proxy:server_type",
119+
"//src/java/com/google/devtools/mobileharness/shared/util/comm/dualconduit/proxy:util",
118120
"//src/java/com/google/devtools/mobileharness/shared/util/flags",
119121
],
120122
)

src/java/com/google/devtools/mobileharness/infra/client/api/util/stub/StubUtils.java

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,8 @@
2222
import com.google.devtools.mobileharness.api.model.proto.Lab;
2323
import com.google.devtools.mobileharness.infra.client.api.mode.remote.LabServerLocator;
2424
import com.google.devtools.mobileharness.infra.container.proto.TestEngine;
25+
import com.google.devtools.mobileharness.shared.util.comm.dualconduit.proxy.DualConduitUtil;
26+
import com.google.devtools.mobileharness.shared.util.comm.dualconduit.proxy.ServerType;
2527
import com.google.devtools.mobileharness.shared.util.comm.relay.proto.DestinationProto.TestEngineLocator;
2628
import com.google.devtools.mobileharness.shared.util.flags.Flags;
2729

@@ -33,6 +35,10 @@ public static String getLabServerGrpcTarget(Lab.LabLocator labLocator) {
3335
}
3436

3537
public static String getLabServerGrpcTarget(LabServerLocator labServerLocator) {
38+
if (Flags.useDconXdsAddress.getNonNull() && DualConduitUtil.isXdsBootstrapped()) {
39+
return DualConduitUtil.getDualConduitXdsAddress(
40+
ServerType.LAB_SERVER, labServerLocator.hostName());
41+
}
3642
if (Flags.connectToLabServerUsingIp.getNonNull()) {
3743
if (Flags.connectToLabServerUsingMasterDetectedIp.getNonNull()
3844
&& labServerLocator.masterDetectedIp().isPresent()) {
@@ -66,6 +72,11 @@ public static String getTestEngineGrpcTarget(TestEngineLocator testEngineLocator
6672

6773
private static String getTestEngineGrpcTarget(
6874
String masterDetectedIp, TestEngine.TestEngineLocator testEngineLocator) {
75+
if (Flags.useDconXdsAddress.getNonNull()
76+
&& DualConduitUtil.isXdsBootstrapped()
77+
&& testEngineLocator.getEnableDualConduit()) {
78+
return testEngineLocator.getDualConduitLocator().getXdsAddress();
79+
}
6980
if (Flags.connectToLabServerUsingIp.getNonNull()
7081
&& Flags.connectToLabServerUsingMasterDetectedIp.getNonNull()) {
7182
return getGrpcTargetByIp(masterDetectedIp, testEngineLocator.getGrpcLocator().getGrpcPort());
@@ -75,6 +86,11 @@ private static String getTestEngineGrpcTarget(
7586
}
7687

7788
private static String getTestEngineGrpcTarget(TestEngine.TestEngineLocator testEngineLocator) {
89+
if (Flags.useDconXdsAddress.getNonNull()
90+
&& DualConduitUtil.isXdsBootstrapped()
91+
&& testEngineLocator.getEnableDualConduit()) {
92+
return testEngineLocator.getDualConduitLocator().getXdsAddress();
93+
}
7894
if (Flags.connectToLabServerUsingIp.getNonNull()) {
7995
return getGrpcTargetByIp(
8096
testEngineLocator.getGrpcLocator().getHostIp(),

src/java/com/google/devtools/mobileharness/infra/lab/rpc/service/PrepareTestServiceImpl.java

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -412,8 +412,10 @@ private TestEngineLocator getProxiedTestEngineLocator() throws MobileHarnessExce
412412
if (!Strings.isNullOrEmpty(dconDialerAddress)) {
413413
String xdsAddress =
414414
DualConduitUtil.getDualConduitXdsAddress(ServerType.LAB_SERVER, getInstanceId());
415-
builder.setDualConduitLocator(
416-
TestEngineLocator.DualConduitLocator.newBuilder().setXdsAddress(xdsAddress).build());
415+
builder
416+
.setDualConduitLocator(
417+
TestEngineLocator.DualConduitLocator.newBuilder().setXdsAddress(xdsAddress).build())
418+
.setEnableDualConduit(true);
417419
}
418420
GrpcLocator.Builder grpcLocator =
419421
GrpcLocator.newBuilder()

src/java/com/google/devtools/mobileharness/shared/util/comm/dualconduit/proxy/BUILD

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -47,5 +47,6 @@ java_library(
4747
srcs = ["DualConduitUtil.java"],
4848
deps = [
4949
":server_type",
50+
"@maven//:com_google_guava_guava",
5051
],
5152
)

src/java/com/google/devtools/mobileharness/shared/util/comm/dualconduit/proxy/DualConduitUtil.java

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,9 +16,22 @@
1616

1717
package com.google.devtools.mobileharness.shared.util.comm.dualconduit.proxy;
1818

19+
import com.google.common.annotations.VisibleForTesting;
20+
import java.util.Objects;
21+
1922
/** Utility class for DualConduit. */
2023
public class DualConduitUtil {
2124

25+
@SuppressWarnings("NonFinalStaticField")
26+
@VisibleForTesting
27+
static boolean isXdsBootstrapped =
28+
Objects.equals(System.getenv("GRPC_XDS_BOOTSTRAP"), "/etc/grpc/bootstrap.json");
29+
30+
/** Returns whether gRPC xDS is configured with the expected bootstrap file. */
31+
public static boolean isXdsBootstrapped() {
32+
return isXdsBootstrapped;
33+
}
34+
2235
/**
2336
* Returns the xDS address of a server for DualConduit.
2437
*

src/java/com/google/devtools/mobileharness/shared/util/flags/Flags.java

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1533,6 +1533,13 @@ private static String getTmpDirRootDefaultOss() {
15331533
help = "Use ALTS for OLC server auth.This is supported by GCP vm. The default is false.")
15341534
public static final Flag<Boolean> useAlts = Flag.value(false);
15351535

1536+
@FlagSpec(
1537+
name = "use_dcon_xds_address",
1538+
help =
1539+
"Whether to use xDS addresses exposed by Dual Conduit for gRPC communication with Lab"
1540+
+ " Servers and Test Engines. Default is false.")
1541+
public static final Flag<Boolean> useDconXdsAddress = Flag.value(false);
1542+
15361543
@FlagSpec(
15371544
name = "use_emulator_name_in_uuid",
15381545
help =

0 commit comments

Comments
 (0)