GceManager

public class GceManager
extends Object

java.lang.Object
   ↳ com.android.tradefed.device.cloud.GceManager


用于管理 GCE 调用以启动/停止和收集 GCE 日志的辅助程序。

摘要

常量

String GCE_HOSTNAME_KEY

String GCE_INSTANCE_CLEANED_KEY

String GCE_INSTANCE_NAME_KEY

String GCE_IP_PRECONFIGURED_KEY

公共构造函数

GceManager(DeviceDescriptor deviceDesc, TestDeviceOptions deviceOptions, IBuildInfo buildInfo)

Ctor

GceManager(DeviceDescriptor deviceDesc, TestDeviceOptions deviceOptions, IBuildInfo buildInfo, testResourceBuildInfos)

此构造函数已被弃用。 请使用其他构造函数,我们暂时保留此构造函数是为了实现向后兼容性。

GceManager(DeviceDescriptor deviceDesc, TestDeviceOptions deviceOptions, IBuildInfo buildInfo, String gceInstanceName, String gceHost)

Ctor,可用于直接提供要使用的 GCE 实例名称的变体。

公共方法

static boolean AcloudShutdown(TestDeviceOptions options, IRunUtil runUtil, String instanceName, String hostname, boolean isIpPreconfigured)

实际运行 Acloud 以关闭虚拟设备。

void cleanUp()
static File getBugreportzWithSsh(GceAvdInfo gceAvd, TestDeviceOptions options, IRunUtil runUtil)

使用 SSH 从设备获取 bugreportz,以避免任何潜在的 adb 连接问题。

HostOrchestratorUtil getHostOrchestratorUtil()

返回 HostOrchestratorUtil 的实例。

static String getInstanceSerialLog(GceAvdInfo infos, File avdConfigFile, File jsonKeyFile, IRunUtil runUtil)

读取 Gce Avd 实例串行日志的当前内容。

static File getNestedDeviceSshBugreportz(GceAvdInfo gceAvd, TestDeviceOptions options, IRunUtil runUtil)

通过 SSH 获取嵌套实例的 bug 报告。

static void logAndDeleteFile(File tempFile, String dataName, ITestLogger logger)
static void logDirectory(File remoteDirectory, String baseName, ITestLogger logger, LogDataType type)
static boolean logNestedRemoteFile(ITestLogger logger, GceAvdInfo gceAvd, TestDeviceOptions options, IRunUtil runUtil, String remoteFilePath, LogDataType type)

从嵌套实例中提取远程文件并记录。

static boolean logNestedRemoteFile(ITestLogger logger, GceAvdInfo gceAvd, TestDeviceOptions options, IRunUtil runUtil, String remoteFilePath, LogDataType type, String baseName)

从嵌套实例中提取远程文件并记录。

void logSerialOutput(GceAvdInfo infos, ITestLogger logger)

记录由 GceAvdInfo 描述的设备的序列输出。

static CommandResult remoteSshCommandExecution(GceAvdInfo gceAvd, TestDeviceOptions options, IRunUtil runUtil, long timeoutMs, String... command)

通过 SSH 在实例上执行远程命令。

boolean shutdownGce()

关闭与 startGce() 关联的 GCE 实例。

GceAvdInfo startGce(String ipDevice, String user, Integer offset, MultiMap<String, String> attributes, ITestLogger logger)

尝试使用 Acloud 或 Oxygen 启动 GCE 实例。

GceAvdInfo startGce()
GceAvdInfo startGce(String ipDevice, MultiMap<String, String> attributes)

尝试启动 GCE 实例。

GceAvdInfo startGce(String ipDevice, String user, Integer offset, MultiMap<String, String> attributes)

尝试使用 Acloud 或 Oxygen 启动 GCE 实例。

startMultiDevicesGce( buildInfos)

此方法已弃用。 在主分支更新后移除此内容。

startMultiDevicesGce( buildInfos, MultiMap<String, String> attributes)

尝试使用 Oxygen 启动多设备 GCE 实例。

受保护的方法

static buildShutdownCommand(File config, TestDeviceOptions options, String instanceName, String hostname, boolean isIpPreconfigured)
String extractInstanceName(String bootupLogs)

从 GCE 启动日志中检索实例名称。

常量

GCE_HOSTNAME_KEY

public static final String GCE_HOSTNAME_KEY

常量值: "gce-hostname"

GCE_INSTANCE_CLEANED_KEY

public static final String GCE_INSTANCE_CLEANED_KEY

常量值: “gce-instance-clean-called”

GCE_INSTANCE_NAME_KEY

public static final String GCE_INSTANCE_NAME_KEY

常量值: "gce-instance-name"

GCE_IP_PRECONFIGURED_KEY

public static final String GCE_IP_PRECONFIGURED_KEY

常量值: "gce-ip-pre-configured"

公共构造函数

GceManager

public GceManager (DeviceDescriptor deviceDesc, 
                TestDeviceOptions deviceOptions, 
                IBuildInfo buildInfo)

Ctor

参数
deviceDesc DeviceDescriptor:将与 GCE 设备关联的 DeviceDescriptor

deviceOptions TestDeviceOptions:与设备关联的 TestDeviceOptions

buildInfo IBuildInfo:用于描述要启动的 GCE build 的 IBuildInfo

GceManager

public GceManager (DeviceDescriptor deviceDesc, 
                TestDeviceOptions deviceOptions, 
                IBuildInfo buildInfo, 
                 testResourceBuildInfos)

此构造函数已弃用。
请使用其他构造函数,我们暂时保留此构造函数是为了实现向后兼容性。

参数
deviceDesc DeviceDescriptor

deviceOptions TestDeviceOptions

buildInfo IBuildInfo

testResourceBuildInfos

GceManager

public GceManager (DeviceDescriptor deviceDesc, 
                TestDeviceOptions deviceOptions, 
                IBuildInfo buildInfo, 
                String gceInstanceName, 
                String gceHost)

Ctor,可用于直接提供要使用的 GCE 实例名称的变体。

参数
deviceDesc DeviceDescriptor:将与 GCE 设备关联的 DeviceDescriptor

deviceOptions TestDeviceOptions:与设备关联的 TestDeviceOptions

buildInfo IBuildInfo:用于描述要启动的 GCE build 的 IBuildInfo

gceInstanceName String:要使用的实例名称。

gceHost String:要使用的实例的主机名或 IP。

公共方法

AcloudShutdown

public static boolean AcloudShutdown (TestDeviceOptions options, 
                IRunUtil runUtil, 
                String instanceName, 
                String hostname, 
                boolean isIpPreconfigured)

实际运行 Acloud 以关闭虚拟设备。

参数
options TestDeviceOptions:Acloud 选项的 TestDeviceOptions

runUtil IRunUtil:用于运行 Acloud 的 IRunUtil

instanceName String:要关停的实例。

hostname String:实例的主机名,仅用于 Oxygen Cuttlefish。

isIpPreconfigured boolean:AVD 是否是在具有预配置 IP 的远程设备上创建的

返回
boolean 如果成功,则为 true

cleanUp

public void cleanUp ()

getBugreportzWithSsh

public static File getBugreportzWithSsh (GceAvdInfo gceAvd, 
                TestDeviceOptions options, 
                IRunUtil runUtil)

使用 SSH 从设备获取 bugreportz,以避免任何潜在的 adb 连接问题。

参数
gceAvd GceAvdInfo:描述设备的 GceAvdInfo

options TestDeviceOptions:一个 TestDeviceOptions,用于描述要用于 GCE 设备的设备选项。

runUtil IRunUtil:用于执行命令的 IRunUtil

返回
File 指向 zip bugreport 的文件,如果出现问题,则为 null。

抛出
IOException

getHostOrchestratorUtil

public HostOrchestratorUtil getHostOrchestratorUtil ()

返回 HostOrchestratorUtil 的实例。

返回
HostOrchestratorUtil

getInstanceSerialLog

public static String getInstanceSerialLog (GceAvdInfo infos, 
                File avdConfigFile, 
                File jsonKeyFile, 
                IRunUtil runUtil)

读取 GCE AVD 实例串行日志的当前内容。

参数
infos GceAvdInfo:描述实例的 GceAvdInfo

avdConfigFile File:AVD 配置文件

jsonKeyFile File:服务账号 JSON 密钥文件。

runUtil IRunUtil:用于执行命令的 IRunUtil

返回
String 串行日志输出;如果出现问题,则为 null。

getNestedDeviceSshBugreportz

public static File getNestedDeviceSshBugreportz (GceAvdInfo gceAvd, 
                TestDeviceOptions options, 
                IRunUtil runUtil)

通过 SSH 获取嵌套实例的 bug 报告。这需要在嵌套的虚拟实例中请求 adb。

参数
gceAvd GceAvdInfo:描述设备的 GceAvdInfo

options TestDeviceOptions:一个 TestDeviceOptions,用于描述要用于 GCE 设备的设备选项。

runUtil IRunUtil:用于执行命令的 IRunUtil

返回
File 指向 zip bugreport 的文件,如果出现问题,则为 null。

抛出
IOException

logAndDeleteFile

public static void logAndDeleteFile (File tempFile, 
                String dataName, 
                ITestLogger logger)

参数
tempFile File

dataName String

logger ITestLogger

logDirectory

public static void logDirectory (File remoteDirectory, 
                String baseName, 
                ITestLogger logger, 
                LogDataType type)

参数
remoteDirectory File

baseName String

logger ITestLogger

type LogDataType

logNestedRemoteFile

public static boolean logNestedRemoteFile (ITestLogger logger, 
                GceAvdInfo gceAvd, 
                TestDeviceOptions options, 
                IRunUtil runUtil, 
                String remoteFilePath, 
                LogDataType type)

从嵌套实例中提取远程文件并记录。

参数
logger ITestLogger:用于记录文件的 ITestLogger

gceAvd GceAvdInfo:描述设备的 GceAvdInfo

options TestDeviceOptions:一个 TestDeviceOptions,用于描述要用于 GCE 设备的设备选项。

runUtil IRunUtil:用于执行命令的 IRunUtil

remoteFilePath String:查找文件的远程路径。

type LogDataType:已记录文件的 LogDataType

返回
boolean 文件是否已成功记录。

logNestedRemoteFile

public static boolean logNestedRemoteFile (ITestLogger logger, 
                GceAvdInfo gceAvd, 
                TestDeviceOptions options, 
                IRunUtil runUtil, 
                String remoteFilePath, 
                LogDataType type, 
                String baseName)

从嵌套实例中提取远程文件并记录。

参数
logger ITestLogger:用于记录文件的 ITestLogger

gceAvd GceAvdInfo:描述设备的 GceAvdInfo

options TestDeviceOptions:一个 TestDeviceOptions,用于描述要用于 GCE 设备的设备选项。

runUtil IRunUtil:用于执行命令的 IRunUtil

remoteFilePath String:查找文件的远程路径。

type LogDataType:已记录文件的 LogDataType

baseName String:用于记录文件的基本名称。如果为 null,则使用实际文件名。

返回
boolean 文件是否已成功记录。

logSerialOutput

public void logSerialOutput (GceAvdInfo infos, 
                ITestLogger logger)

记录由 GceAvdInfo 描述的设备的序列输出。

参数
infos GceAvdInfo:描述实例的 GceAvdInfo

logger ITestLogger:用于记录序列日志的 ITestLogger

remoteSshCommandExecution

public static CommandResult remoteSshCommandExecution (GceAvdInfo gceAvd, 
                TestDeviceOptions options, 
                IRunUtil runUtil, 
                long timeoutMs, 
                String... command)

通过 SSH 在实例上执行远程命令。

参数
gceAvd GceAvdInfo:描述设备的 GceAvdInfo

options TestDeviceOptions:一个 TestDeviceOptions,用于描述要用于 GCE 设备的设备选项。

runUtil IRunUtil:用于执行命令的 IRunUtil

timeoutMs long:命令的超时时间(以毫秒为单位)。0 表示不超时。

command String:要执行的远程命令。

返回
CommandResult CommandResult,其中包含执行结果。

shutdownGce

public boolean shutdownGce ()

关闭与 startGce() 关联的 GCE 实例。

返回
boolean 如果 GCE 关闭请求为非阻塞,则返回 true。

startGce

public GceAvdInfo startGce (String ipDevice, 
                String user, 
                Integer offset, 
                MultiMap<String, String> attributes, 
                ITestLogger logger)

尝试使用 Acloud 或 Oxygen 启动 GCE 实例。

参数
ipDevice String:要在其中运行 AVD 的 GCE 实例的初始 IP,null 表示不适用

user String:AVD 的运行用户,如果不可用则为 null

offset Integer:主机中 AVD 的设备编号偏移量,如果不适用,则为 null

attributes MultiMap:与当前调用关联的属性,用于将适用信息传递给要添加为虚拟机元数据的 GCE 实例

logger ITestLogger:用于记录设备启动日志的 ITestLogger

返回
GceAvdInfo 一个描述 GCE 实例的 GceAvdInfo。可能是 BOOT_FAIL 实例。

抛出
com.android.tradefed.targetprep.TargetSetupError
TargetSetupError

startGce

public GceAvdInfo startGce ()

返回
GceAvdInfo

抛出
TargetSetupError

startGce

public GceAvdInfo startGce (String ipDevice, 
                MultiMap<String, String> attributes)

尝试启动 GCE 实例。

参数
ipDevice String:要在其中运行 AVD 的 GCE 实例的初始 IP,null 表示不适用

attributes MultiMap:与当前调用关联的属性,用于将适用信息传递给要添加为虚拟机元数据的 GCE 实例

返回
GceAvdInfo 一个描述 GCE 实例的 GceAvdInfo。可能是 BOOT_FAIL 实例。

抛出
com.android.tradefed.targetprep.TargetSetupError
TargetSetupError

startGce

public GceAvdInfo startGce (String ipDevice, 
                String user, 
                Integer offset, 
                MultiMap<String, String> attributes)

尝试使用 Acloud 或 Oxygen 启动 GCE 实例。

参数
ipDevice String:要在其中运行 AVD 的 GCE 实例的初始 IP,null 表示不适用

user String:AVD 的运行用户,如果不可用则为 null

offset Integer:主机中 AVD 的设备编号偏移量,如果不适用,则为 null

attributes MultiMap:与当前调用关联的属性,用于将适用信息传递给要添加为虚拟机元数据的 GCE 实例

返回
GceAvdInfo 一个描述 GCE 实例的 GceAvdInfo。可能是 BOOT_FAIL 实例。

抛出
com.android.tradefed.targetprep.TargetSetupError
TargetSetupError

startMultiDevicesGce

public  startMultiDevicesGce ( buildInfos)

此方法已弃用。
在主分支更新后移除此内容。

参数
buildInfos

返回

抛出
TargetSetupError

startMultiDevicesGce

public  startMultiDevicesGce ( buildInfos, 
                MultiMap<String, String> attributes)

尝试使用 Oxygen 启动多设备 GCE 实例。

参数
buildInfos ERROR(/List)

attributes MultiMap:与当前调用关联的属性

返回
描述 GCE Avd 信息的 ERROR(/List)

抛出
TargetSetupError

受保护的方法

buildShutdownCommand

protected static  buildShutdownCommand (File config, 
                TestDeviceOptions options, 
                String instanceName, 
                String hostname, 
                boolean isIpPreconfigured)

参数
config File

options TestDeviceOptions

instanceName String

hostname String

isIpPreconfigured boolean

返回

extractInstanceName

protected String extractInstanceName (String bootupLogs)

从 GCE 启动日志中检索实例名称。搜索“名称”:“gce-”模式以提取其名称。我们从日志中提取,而不是从结果文件中提取,因为在 GCE 启动失败时,尝试的实例名称不会显示在 JSON 中。

参数
bootupLogs String

返回
String