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)

PROCESS_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 は省略されているため、 コマンドライン全体を確認するため、`pgrep` に `-f` が渡されます。

パラメータ
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> pidOf(...) からコマンド マップへの pid

例外
TimeoutException
DeviceNotAvailableException

waitProcessRunning

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

指定した正規表現で実行中のプロセスが見つかるまで待機します。

パラメータ
device ITestDevice: 使用するデバイス

pgrepRegex String: pgrep の正規表現を表す文字列

戻り値
Map<Integer, String> pidOf(...) からコマンド マップへの 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