ProcessUtil

public final class ProcessUtil
extends Object

java.lang.Object 中
   ↳ com.android.sts.common.ProcessUtil


用于查找、等待和终止设备上进程的各种帮助程序

摘要

嵌套的类

class ProcessUtil.KillException

 

常量

long PROCESS_POLL_PERIOD_MS

long PROCESS_WAIT_TIMEOUT_MS

公共方法

static Optional<IFileEntry> findFileLoadedByProcess(ITestDevice device, String process, String filenameSubstr)

返回由指定进程加载的具有指定名称的第一个文件的文件条目

static Optional<List<String>> findFilesLoadedByProcess(ITestDevice device, int pid, Pattern filePattern)

返回由指定进程加载的指定文件的文件名。

static Optional<String> getProcessName(ITestDevice device, int pid)

从 /proc/pid/cmdline 获取内容。

static boolean killAll(ITestDevice device, String pgrepRegex, long timeoutMs, boolean expectExist)

将 SIGKILL 发送到与某种模式匹配的所有进程。

static boolean killAll(ITestDevice device, String pgrepRegex, long timeoutMs)

将 SIGKILL 发送到与某种模式匹配的所有进程。

static void killPid(ITestDevice device, int pid, long timeoutMs)

将 SIGKILL 发送至进程并等待其退出。

static void killPid(ITestDevice device, int pid, int signal, long timeoutMs)

向进程发送信号并等待其退出。

static Optional<List<String>> listOpenFiles(ITestDevice device, int pid)

返回指定进程当前打开的文件名。

static Optional<Integer> pidOf(ITestDevice device, String pgrepRegex)

获取与传递给“pgrep”的模式匹配的单个 pid。

static Optional<Map<Integer, String>> pidsOf(ITestDevice device, String pgrepRegex)

获取与传递给 `pgrep` 的模式匹配的 pid。

static void waitPidExited(ITestDevice device, int pid)

等待进程退出。

static void waitPidExited(ITestDevice device, int pid, long timeoutMs)

等待进程退出。

static Map<Integer, String> waitProcessRunning(ITestDevice device, String pgrepRegex, long timeoutMs)

等待给定正则表达式找到正在运行的进程。

static Map<Integer, String> waitProcessRunning(ITestDevice device, String pgrepRegex)

等待给定正则表达式找到正在运行的进程。

static AutoCloseable withProcessKill(ITestDevice device, String pgrepRegex, Runnable beforeCloseKill, long timeoutMs)

在测试开始和结束时终止进程。

static AutoCloseable withProcessKill(ITestDevice device, String pgrepRegex, Runnable beforeCloseKill)

在测试开始和结束时终止进程。

常量

PROCESS_POLL_PERIOD_MS

public static final long PROCESS_POLL_PERIOD_MS

常量值: 250 个 (0x00000000000000fa)

进程 WAIT_TIMEOUT_MS

public static final long PROCESS_WAIT_TIMEOUT_MS

常量值: 10,000 次 (0x0000000000002710)

公共方法

findFileLoadedByProcess

public static Optional<IFileEntry> findFileLoadedByProcess (ITestDevice device, 
                String process, 
                String filenameSubstr)

返回由指定进程加载的具有指定名称的第一个文件的文件条目

参数
device ITestDevice:运行应用的设备

process String:要查找的进程的 pgrep 模式

filenameSubstr String:进程加载的文件名/路径的一部分

返回
Optional<IFileEntry> 设备上的文件路径的 IFileEntry (如果存在)。

抛出
DeviceNotAvailableException

findFilesLoadedByProcess

public static Optional<List<String>> findFilesLoadedByProcess (ITestDevice device, 
                int pid, 
                Pattern filePattern)

返回由指定进程加载的指定文件的文件名。

参数
device ITestDevice:运行应用的设备

pid int:要搜索的进程的 ID

filePattern Pattern:要返回的文件名的模式

返回
Optional<List<String>> 过滤后的文件的可选字段;如果未找到相应进程或未打开的 无法读取文件。

抛出
DeviceNotAvailableException

getProcessName

public static Optional<String> getProcessName (ITestDevice device, 
                int pid)

从 /proc/pid/cmdline 获取内容。

参数
device ITestDevice:要使用的设备

pid int:要获取其名称的进程的 ID

返回
Optional<String> /proc/pid/cmdline 内容的可选字符串;如果 pid 为 ,则为空。 找到

抛出
DeviceNotAvailableException

全部终止

public static boolean killAll (ITestDevice device, 
                String pgrepRegex, 
                long timeoutMs, 
                boolean expectExist)

将 SIGKILL 发送到与某种模式匹配的所有进程。

参数
device ITestDevice:要使用的设备

pgrepRegex String:表示 pgrep 的正则表达式的字符串

timeoutMs long:等待多长时间后抛出 TimeoutException

expectExist boolean:在未终止任何进程时是否应抛出异常

返回
boolean 是否有进程被终止

抛出
DeviceNotAvailableException
TimeoutException
ProcessUtil.KillException

全部终止

public static boolean killAll (ITestDevice device, 
                String pgrepRegex, 
                long timeoutMs)

将 SIGKILL 发送到与某种模式匹配的所有进程。

参数
device ITestDevice:要使用的设备

pgrepRegex String:表示 pgrep 的正则表达式的字符串

timeoutMs long:等待多长时间后抛出 TimeoutException

返回
boolean 是否有进程被终止

抛出
DeviceNotAvailableException
TimeoutException
ProcessUtil.KillException

killPid

public static void killPid (ITestDevice device, 
                int pid, 
                long timeoutMs)

将 SIGKILL 发送至进程并等待其退出。

参数
device ITestDevice:要使用的设备

pid int:等待退出的进程的 ID

timeoutMs long:等待多长时间后抛出 TimeoutException

抛出
DeviceNotAvailableException
TimeoutException
ProcessUtil.KillException

killPid

public static void killPid (ITestDevice device, 
                int pid, 
                int signal, 
                long timeoutMs)

向进程发送信号并等待其退出。

参数
device ITestDevice:要使用的设备

pid int:等待退出的进程的 ID

signal int:要发送给进程的信号

timeoutMs long:等待多长时间后抛出 TimeoutException

抛出
DeviceNotAvailableException
TimeoutException
ProcessUtil.KillException

listOpenFiles

public static Optional<List<String>> listOpenFiles (ITestDevice device, 
                int pid)

返回指定进程当前打开的文件名。

参数
device ITestDevice:运行应用的设备

pid int:要搜索的进程的 ID

返回
Optional<List<String>> 已打开文件的可选文件;如果未找到相应进程或打开的文件,则为空 错误。

抛出
DeviceNotAvailableException

pidOf

public static Optional<Integer> pidOf (ITestDevice device, 
                String pgrepRegex)

获取与传递给“pgrep”的模式匹配的单个 pid。如果有多个 PID 与模式匹配,则会抛出 IllegalArgumentException

参数
device ITestDevice:要使用的设备

pgrepRegex String:表示 pgrep 的正则表达式的字符串

返回
Optional<Integer> pid 的可选整数;如果 pgrep 未返回 EXIT_SUCCESS,则为空

抛出
DeviceNotAvailableException
IllegalArgumentException

PidsOf

public static Optional<Map<Integer, String>> pidsOf (ITestDevice device, 
                String pgrepRegex)

获取与传递给 `pgrep` 的模式匹配的 pid。由于 /proc/pid/comm 已被截断, 使用 `-f` 传递 `pgrep` 以检查完整的命令行。

参数
device ITestDevice:要使用的设备

pgrepRegex String:表示 pgrep 的正则表达式的字符串

返回
Optional<Map<Integer, String>> pid 到命令行的可选映射;如果 pgrep 未返回 EXIT_SUCCESS,则为空

抛出
DeviceNotAvailableException

waitPidExited

public static void waitPidExited (ITestDevice device, 
                int pid)

等待进程退出。这并不意味着一切发生变化,只是简单地 不存在。可以(但不太可能)在轮询之间重复使用 pid

参数
device ITestDevice:要使用的设备

pid int:等待退出的进程的 ID

抛出
TimeoutException
DeviceNotAvailableException
ProcessUtil.KillException

waitPidExited

public static void waitPidExited (ITestDevice device, 
                int pid, 
                long timeoutMs)

等待进程退出。这并不意味着一切发生变化,只是简单地 不存在。可以(但不太可能)在轮询之间重复使用 pid

参数
device ITestDevice:要使用的设备

pid int:等待退出的进程的 ID

timeoutMs long:等待多长时间后抛出 TimeoutException

抛出
TimeoutException
DeviceNotAvailableException
ProcessUtil.KillException

waitProcessRunning

public static Map<Integer, String> waitProcessRunning (ITestDevice device, 
                String pgrepRegex, 
                long timeoutMs)

等待给定正则表达式找到正在运行的进程。

参数
device ITestDevice:要使用的设备

pgrepRegex String:表示 pgrep 的正则表达式的字符串

timeoutMs long:等待多长时间后抛出 TimeoutException

返回
Map<Integer, String> 从 pidsOf(...) 到命令映射的 pid

抛出
TimeoutException
DeviceNotAvailableException

waitProcessRunning

public static Map<Integer, String> waitProcessRunning (ITestDevice device, 
                String pgrepRegex)

等待给定正则表达式找到正在运行的进程。

参数
device ITestDevice:要使用的设备

pgrepRegex String:表示 pgrep 的正则表达式的字符串

返回
Map<Integer, String> 从 pidsOf(...) 到命令映射的 pid

抛出
TimeoutException
DeviceNotAvailableException

withProcessKill

public static AutoCloseable withProcessKill (ITestDevice device, 
                String pgrepRegex, 
                Runnable beforeCloseKill, 
                long timeoutMs)

在测试开始和结束时终止进程。

参数
device ITestDevice:要使用的设备

pgrepRegex String:要终止并提供给 pgrep 的进程的名称模式

beforeCloseKill Runnable:对于任何需要在终止 并在正常环境中完成此过程。可以为 null。

timeoutMs long:等待进程终止的等待时间(以毫秒为单位)

返回
AutoCloseable 将在关闭后再次终止进程的对象

抛出
DeviceNotAvailableException
TimeoutException
ProcessUtil.KillException

withProcessKill

public static AutoCloseable withProcessKill (ITestDevice device, 
                String pgrepRegex, 
                Runnable beforeCloseKill)

在测试开始和结束时终止进程。

参数
device ITestDevice:要使用的设备

pgrepRegex String:要终止并提供给 pgrep 的进程的名称模式

beforeCloseKill Runnable:对于任何需要在终止 并在正常环境中完成此过程。可以为 null。

返回
AutoCloseable 将在关闭后再次终止进程的对象

抛出
DeviceNotAvailableException
TimeoutException
ProcessUtil.KillException