マルチプロセス

マルチプロセス — マルチプロセスでテストを走らせるためのユーティリティ。

概要

                    CutSubProcess;
                    CutSubProcessGroup;
double              cut_sub_process_get_elapsed         (CutSubProcess *sub_process);
const char **       cut_sub_process_get_exclude_directories
                                                        (CutSubProcess *sub_process);
const char **       cut_sub_process_get_exclude_files   (CutSubProcess *sub_process);
cut_boolean         cut_sub_process_get_fatal_failures  (CutSubProcess *sub_process);
int                 cut_sub_process_get_max_threads     (CutSubProcess *sub_process);
cut_boolean         cut_sub_process_get_multi_thread    (CutSubProcess *sub_process);
const char *        cut_sub_process_get_source_directory
                                                        (CutSubProcess *sub_process);
const char **       cut_sub_process_get_target_test_case_names
                                                        (CutSubProcess *sub_process);
const char **       cut_sub_process_get_target_test_names
                                                        (CutSubProcess *sub_process);
const char *        cut_sub_process_get_test_directory  (CutSubProcess *sub_process);
double              cut_sub_process_get_total_elapsed   (CutSubProcess *sub_process);
void                cut_sub_process_group_add           (CutSubProcessGroup *group,
                                                         CutSubProcess *sub_process);
cut_boolean         cut_sub_process_group_run           (CutSubProcessGroup *group);
void                cut_sub_process_group_run_async     (CutSubProcessGroup *group);
cut_boolean         cut_sub_process_group_wait          (CutSubProcessGroup *group);
cut_boolean         cut_sub_process_is_crashed          (CutSubProcess *sub_process);
cut_boolean         cut_sub_process_is_running          (CutSubProcess *sub_process);
cut_boolean         cut_sub_process_is_success          (CutSubProcess *sub_process);
cut_boolean         cut_sub_process_run                 (CutSubProcess *sub_process);
void                cut_sub_process_run_async           (CutSubProcess *sub_process);
void                cut_sub_process_set_exclude_directories
                                                        (CutSubProcess *sub_process,
                                                         const char **directories);
void                cut_sub_process_set_exclude_files   (CutSubProcess *sub_process,
                                                         const char **files);
void                cut_sub_process_set_fatal_failures  (CutSubProcess *sub_process,
                                                         cut_boolean fatal_failures);
void                cut_sub_process_set_max_threads     (CutSubProcess *sub_process,
                                                         int max_threads);
void                cut_sub_process_set_multi_thread    (CutSubProcess *sub_process,
                                                         cut_boolean multi_thread);
void                cut_sub_process_set_source_directory
                                                        (CutSubProcess *sub_process,
                                                         const char *source_directory);
void                cut_sub_process_set_target_test_case_names
                                                        (CutSubProcess *sub_process,
                                                         const char **names);
void                cut_sub_process_set_target_test_names
                                                        (CutSubProcess *sub_process,
                                                         const char **names);
void                cut_sub_process_set_test_directory  (CutSubProcess *sub_process,
                                                         const char *test_directory);
cut_boolean         cut_sub_process_wait                (CutSubProcess *sub_process);
CutSubProcess *     cut_take_new_sub_process            (const char *test_directory);
CutSubProcessGroup * cut_take_new_sub_process_group     (void);

説明

もしテスト対象のソフトウェアがマルチプロセスやマルチスレッドでの使用をサポートしているなら、それらの機能をテストする必要があります。そのようなテストために、CutSubProcessCutSubProcessGroupを使うことができます。

CutSubProcessはテストを別のプロセスで走らせ、その結果をメインプロセスに転送します。このため、別のプロセス上でのテスト結果もメインプロセス上でのテスト結果と同じように見えます。

CutSubProcessGroupはいくつかのCutSubProcessをまとめて実行するための便利オブジェクトです。

詳細

CutSubProcess

typedef struct _CutSubProcess CutSubProcess;

サブcutterプロセスを表現するオブジェクトです。サブcutterプロセスのパラメタとテスト結果を持っています。

例:

CutSubProcess *sub_process;

sub_process = cut_take_new_sub_process("test-dir");
cut_sub_process_set_multi_thread(sub_process, TRUE);
cut_assert_true(cut_sub_process_run(sub_process));

1.0.4から


CutSubProcessGroup

typedef struct _CutSubProcessGroup CutSubProcessGroup;

サブcutterプロセスを実行するオブジェクトです。このオブジェクトは便利にテストを書くために導入されています。

例:

CutSubProcess *sub_process1, *sub_process2, *sub_process3;
CutSubProcessGroup *group;

sub_process1 = cut_take_new_sub_process("test-dir1");
sub_process2 = cut_take_new_sub_process("test-dir2");
sub_process3 = cut_take_new_sub_process("test-dir3");

group = cut_take_new_sub_process_group();
cut_sub_process_group_add(group, sub_process1);
cut_sub_process_group_add(group, sub_process2);
cut_sub_process_group_add(group, sub_process3);
cut_assert_true(cut_sub_process_group_run(group));

1.0.4から


cut_sub_process_get_elapsed ()

double              cut_sub_process_get_elapsed         (CutSubProcess *sub_process);

sub_processを実行していた間の時間を取得します。

sub_process :

CutSubProcessオブジェクト。

戻り値 :

sub_processを実行していた間の時間。

1.0.4から


cut_sub_process_get_exclude_directories ()

const char **       cut_sub_process_get_exclude_directories
                                                        (CutSubProcess *sub_process);

テスト対象ディレクトリから除外されるディレクトリ名を返します。

sub_process :

CutSubProcessオブジェクト。

戻り値 :

テスト対象ディレクトリから除外されるディレクトリ名。

1.0.4から


cut_sub_process_get_exclude_files ()

const char **       cut_sub_process_get_exclude_files   (CutSubProcess *sub_process);

テスト対象ファイルから除外されるファイル名を返します。

sub_process :

CutSubProcessオブジェクト。

戻り値 :

テスト対象ファイルから除外されるファイル名。

1.0.4から


cut_sub_process_get_fatal_failures ()

cut_boolean         cut_sub_process_get_fatal_failures  (CutSubProcess *sub_process);

sub_processが「失敗は致命的」モードで動くかどうかを返します。「失敗は致命的」モードの詳細はcut_sub_process_set_fatal_failures()を見てください。

sub_process :

CutSubProcessオブジェクト。

戻り値 :

sub_processが「失敗は致命的」モードで実行されるならCUT_TRUE、そうでなければCUT_FALSE

1.0.4から


cut_sub_process_get_max_threads ()

int                 cut_sub_process_get_max_threads     (CutSubProcess *sub_process);

sub_process中で同時に動く最大スレッド数を返します。

sub_process :

CutSubProcessオブジェクト。

戻り値 :

sub_process中で同時に動く最大スレッド数。

1.0.5から


cut_sub_process_get_multi_thread ()

cut_boolean         cut_sub_process_get_multi_thread    (CutSubProcess *sub_process);

sub_processをマルチスレッドモードで実行するかどうかを返します。

sub_process :

CutSubProcessオブジェクト。

戻り値 :

sub_processがマルチスレッドモードで実行されるならCUT_TRUE、そうでなければCUT_FALSE

1.0.4から


cut_sub_process_get_source_directory ()

const char *        cut_sub_process_get_source_directory
                                                        (CutSubProcess *sub_process);

ソースファイルがあるディレクトリを返します。

sub_process :

CutSubProcessオブジェクト。

戻り値 :

ソースディレクトリ。

1.0.4から


cut_sub_process_get_target_test_case_names ()

const char **       cut_sub_process_get_target_test_case_names
                                                        (CutSubProcess *sub_process);

実行されるテストケース名を返します。

sub_process :

CutSubProcessオブジェクト。

戻り値 :

実行されるテストケース名。

1.0.4から


cut_sub_process_get_target_test_names ()

const char **       cut_sub_process_get_target_test_names
                                                        (CutSubProcess *sub_process);

実行されるテスト名を返します。

sub_process :

CutSubProcessオブジェクト。

戻り値 :

実行されるテスト名。

1.0.4から


cut_sub_process_get_test_directory ()

const char *        cut_sub_process_get_test_directory  (CutSubProcess *sub_process);

実行対象のテストがあるディレクトリを返します。

sub_process :

CutSubProcessオブジェクト。

戻り値 :

テストディレクトリ

1.0.4から


cut_sub_process_get_total_elapsed ()

double              cut_sub_process_get_total_elapsed   (CutSubProcess *sub_process);

各テストで使われた時間の合計を返します。

sub_process :

CutSubProcessオブジェクト。

戻り値 :

各テストで使われた時間の合計。

1.0.4から


cut_sub_process_group_add ()

void                cut_sub_process_group_add           (CutSubProcessGroup *group,
                                                         CutSubProcess *sub_process);

sub_processgroupに追加します。

group :

CutSubProcessGroupオブジェクト。

sub_process :

CutSubProcessオブジェクト。

1.0.4から


cut_sub_process_group_run ()

cut_boolean         cut_sub_process_group_run           (CutSubProcessGroup *group);

group内のすべてのサブcutterプロセスを実行し、その結果を返します。

group :

CutSubProcessGroupオブジェクト。

戻り値 :

group内のすべてのサブcutterプロセスが正常終了したらCUT_TRUE、そうでない場合はCUT_FALSE

1.0.4から


cut_sub_process_group_run_async ()

void                cut_sub_process_group_run_async     (CutSubProcessGroup *group);

group内のすべてのサブcutterプロセスを非同期で実行します。実行結果はcut_sub_process_group_wait()で取得できます。

group :

CutSubProcessGroupオブジェクト。

1.0.4から


cut_sub_process_group_wait ()

cut_boolean         cut_sub_process_group_wait          (CutSubProcessGroup *group);

group内の非同期で実行されたすべてのサブcutterプロセスの終了を待ち、終了結果を返します。

group :

CutSubProcessGroupオブジェクト。

戻り値 :

group内のすべてのサブcutterプロセスが正常終了したらCUT_TRUE、そうでない場合はCUT_FALSE

1.0.4から


cut_sub_process_is_crashed ()

cut_boolean         cut_sub_process_is_crashed          (CutSubProcess *sub_process);

sub_processが異常終了したかどうかを返します。

sub_process :

CutSubProcessオブジェクト。

戻り値 :

sub_processが異常終了したときはCUT_TRUE、そうでない場合はCUT_FALSE

1.0.4から


cut_sub_process_is_running ()

cut_boolean         cut_sub_process_is_running          (CutSubProcess *sub_process);

sub_processが実行中かどうかを返します。

sub_process :

CutSubProcessオブジェクト。

戻り値 :

sub_processが実行中の場合はCUT_TRUE、そうでない場合はCUT_FALSE

1.0.4から


cut_sub_process_is_success ()

cut_boolean         cut_sub_process_is_success          (CutSubProcess *sub_process);

sub_processが正常に終了したかどうかを返します。

sub_process :

CutSubProcessオブジェクト。

戻り値 :

もし、sub_processが正常に終了した場合はCUT_TRUE、そうでない場合はCUT_FALSE

1.0.4から


cut_sub_process_run ()

cut_boolean         cut_sub_process_run                 (CutSubProcess *sub_process);

サブcutterプロセスを実行します。

sub_process :

CutSubProcessオブジェクト。

戻り値 :

もし、sub_processが正常に終了した場合はCUT_TRUE、そうでない場合はCUT_FALSE

1.0.4から


cut_sub_process_run_async ()

void                cut_sub_process_run_async           (CutSubProcess *sub_process);

非同期でサブcutterコマンドを実行します。sub_processの結果はcut_sub_process_wait()で取得できます。

sub_process :

CutSubProcessオブジェクト。

1.0.4から


cut_sub_process_set_exclude_directories ()

void                cut_sub_process_set_exclude_directories
                                                        (CutSubProcess *sub_process,
                                                         const char **directories);

テスト対象ディレクトリから除外されるディレクトリ名を指定します。これは--exclude-directoryコマンドラインオプションと同じ意味を持ちます。

sub_process :

CutSubProcessオブジェクト。

directories :

テスト対象ディレクトリから除外されるディレクトリ名。

1.0.4から


cut_sub_process_set_exclude_files ()

void                cut_sub_process_set_exclude_files   (CutSubProcess *sub_process,
                                                         const char **files);

テスト対象から除外されるファイル名を指定します。これは--exclude-fileコマンドラインオプションと同じ意味を持ちます。

sub_process :

CutSubProcessオブジェクト。

files :

テスト対象ファイルから除外されるファイル名。

1.0.4から


cut_sub_process_set_fatal_failures ()

void                cut_sub_process_set_fatal_failures  (CutSubProcess *sub_process,
                                                         cut_boolean fatal_failures);

sub_processが「失敗は致命的」モードで実行されるかどうかを設定します。このモードではすべての失敗は致命的な問題として扱われます。つまり、失敗時にテストが異常終了します。いくつかの環境ではブレークポイントが設定されます。

--fatal-failuresコマンドラインオプションと同じ意味を持ちます。

sub_process :

CutSubProcessオブジェクト。

fatal_failures :

「失敗は致命的」モードで実行するならCUT_TRUE

1.0.4から


cut_sub_process_set_max_threads ()

void                cut_sub_process_set_max_threads     (CutSubProcess *sub_process,
                                                         int max_threads);

sub_process中で同時に動く最大スレッド数を設定します。-1は制限がないことを意味します。これは--max-threadsコマンドラインオプションと同じ意味を持ちます。

sub_process :

CutSubProcessオブジェクト。

max_threads :

同時に動く最大スレッド数。

1.0.5から


cut_sub_process_set_multi_thread ()

void                cut_sub_process_set_multi_thread    (CutSubProcess *sub_process,
                                                         cut_boolean multi_thread);

sub_processがマルチスレッドモードで実行されるかどうかを指定します。これは--multi-threadコマンドラインオプションと同じ意味を持ちます。

sub_process :

CutSubProcessオブジェクト。

multi_thread :

マルチスレッドモードで実行するならCUT_TRUE

1.0.4から


cut_sub_process_set_source_directory ()

void                cut_sub_process_set_source_directory
                                                        (CutSubProcess *sub_process,
                                                         const char *source_directory);

ソースファイルがあるディレクトリとしてsource_directoryを指定します。これは--source-directoryコマンドラインオプションと同じ意味を持ちます。

sub_process :

CutSubProcessオブジェクト。

source_directory :

ソースディレクトリ。

1.0.4から


cut_sub_process_set_target_test_case_names ()

void                cut_sub_process_set_target_test_case_names
                                                        (CutSubProcess *sub_process,
                                                         const char **names);

実行されるテストケース名を指定します。これは--test-caseコマンドラインオプションと同じ意味を持ちます。

sub_process :

CutSubProcessオブジェクト。

names :

実行されるテストケース名。

1.0.4から


cut_sub_process_set_target_test_names ()

void                cut_sub_process_set_target_test_names
                                                        (CutSubProcess *sub_process,
                                                         const char **names);

実行されるテスト名を指定します。これは--testコマンドラインオプションと同じ意味を持ちます。

sub_process :

CutSubProcessオブジェクト。

names :

実行されるテスト名。

1.0.4から


cut_sub_process_set_test_directory ()

void                cut_sub_process_set_test_directory  (CutSubProcess *sub_process,
                                                         const char *test_directory);

実行対象のテストがあるディレクトリとしてtest_directoryを指定します。これは必須のコマンドライン引数であるTEST_DIRECTORYと同じ意味を持ちます。

sub_process :

CutSubProcessオブジェクト。

test_directory :

テストディレクトリ

1.0.4から


cut_sub_process_wait ()

cut_boolean         cut_sub_process_wait                (CutSubProcess *sub_process);

非同期で実行されたサブcutterプロセスの終了を待ち、結果を返します。

sub_process :

CutSubProcessオブジェクト。

戻り値 :

もし、sub_processが正常に終了した場合はCUT_TRUE、そうでない場合はCUT_FALSE

1.0.4から


cut_take_new_sub_process ()

CutSubProcess *     cut_take_new_sub_process            (const char *test_directory);

test_directory以下のテストを実行するサブcutterプロセスを作り、それを返します。返されたサブcutterプロセスの所有者はCutterです。

test_directory :

サブcutterプロセスのテストがあるディレクトリ。

戻り値 :

CutSubProcessオブジェクト。

1.0.4から


cut_take_new_sub_process_group ()

CutSubProcessGroup * cut_take_new_sub_process_group     (void);

サブcuterプロセスのグループを作ります。作られたグループの所有者はCutterです。

戻り値 :

CutSubProcessGroupオブジェクト。

1.0.4から