プロセス使用率

public final class ProcessUtil
extends Object

java.lang.オブジェクト
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

getプロセス名

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

キルピッド

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

SIGKILL をプロセスに送信し、プロセスが終了するのを待ちます。

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

pid int : 終了するまで待機するプロセスの ID

timeoutMs long : TimeoutException をスローするまでの待機時間

投げる
DeviceNotAvailableException
TimeoutException
ProcessUtil.KillException

キルピッド

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

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

waitPid終了しました

public static void waitPidExited (ITestDevice device, 
                int pid)

プロセスが終了するまで待ちます。これは変化するのを待っているのではなく、単に存在しないだけです。ポーリング間で pid が再利用される可能性はありますが、可能性は低いです。

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

pid int : 終了するまで待機するプロセスの ID

投げる
TimeoutException
DeviceNotAvailableException
ProcessUtil.KillException

waitPid終了しました

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

プロセスが終了するまで待ちます。これは変化するのを待っているのではなく、単に存在しないだけです。ポーリング間で pid が再利用される可能性はありますが、可能性は低いです。

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

pid int : 終了するまで待機するプロセスの ID

timeoutMs long : TimeoutException をスローするまでの待機時間

投げる
TimeoutException
DeviceNotAvailableException
ProcessUtil.KillException

waitプロセス実行中

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

waitプロセス実行中

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