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

定数値: 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

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

killAll

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

killAll

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> 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