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` 的模式相匹配的 pids。

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)

PROCESS_WAIT_TIMEOUT_MS

public static final long PROCESS_WAIT_TIMEOUT_MS

常數值:10000 (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

獲取進程名稱

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

殺死Pid

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

向進程發送 SIGKILL 並等待它退出。

參數
device ITestDevice :要使用的設備

pid int : 等待直到退出的進程的 ID

timeoutMs long :在拋出 TimeoutException 之前等待多長時間

投擲
DeviceNotAvailableException
TimeoutException
ProcessUtil.KillException

殺死Pid

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

列出打開的文件

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

pids的

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

獲取與傳遞給 `pgrep` 的模式相匹配的 pids。因為 /proc/pid/comm 被截斷了,所以將 `pgrep` 與 `-f` 一起傳遞以檢查完整的命令行。

參數
device ITestDevice :要使用的設備

pgrepRegex String :表示 pgrep 正則表達式的字符串

退貨
Optional<Map<Integer, String>> pid 到命令行的可選映射;如果 pgrep 沒有返回 EXIT_SUCCESS 則為空

投擲
DeviceNotAvailableException

等待Pid退出

public static void waitPidExited (ITestDevice device, 
                int pid)

等待進程退出。這不是等待它改變,而是根本不存在。在輪詢之間重用 pid 是可能的,但不太可能

參數
device ITestDevice :要使用的設備

pid int : 等待直到退出的進程的 ID

投擲
TimeoutException
DeviceNotAvailableException
ProcessUtil.KillException

等待Pid退出

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

等待進程退出。這不是等待它改變,而是根本不存在。在輪詢之間重用 pid 是可能的,但不太可能

參數
device ITestDevice :要使用的設備

pid int : 等待直到退出的進程的 ID

timeoutMs long :在拋出 TimeoutException 之前等待多長時間

投擲
TimeoutException
DeviceNotAvailableException
ProcessUtil.KillException

等待進程運行

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

等待進程運行

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 :在測試結束時在正常環境中終止進程之前需要清理的任何操作的可運行。可以為空。

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 :在測試結束時在正常環境中終止進程之前需要清理的任何操作的可運行。可以為空。

退貨
AutoCloseable關閉時會再次殺死進程的對象

投擲
DeviceNotAvailableException
TimeoutException
ProcessUtil.KillException