BOINC 開発者のためのテスト用フレームワーク(一般向けではありません) |
|
test/ というディレクトリに、
BOINCを端から端まで通しでテストすることを楽にする
Pythonモジュールのライブラリが納められています。
Pythonフレームワーク
をご覧ください。
cd boinc/test && ./test_uc.py
全テストの一式を実行:
cd boinc/test && make check
2,3分後に、"Passed Test"(テスト通過OK)の表示がでるはずです。
テスト実行中には、各種プログラムの状況表示もでます(状況表示の行が
一行に収まるように、ウィンドーの大きさを調節してください)。
BOINCの機能の多くは、複数のプロジェクト/複数のホストに関与しています。 物理的に複数台あるホストの上で、自動化されたテストを実行するのは、 法外に複雑なことになるでしょう。 うれしいことに、BOINCのアーキテクチャは、 複数のプロジェクトと(仮想)ホストを、一台の物理ホスト上に配置することを 可能にしています。 というわけで、このテスト実施フレームワークでは、 この配置[(つまり1台の物理ホストに全部配置する)]を使いました。
このフレームワークは、下記のどの属性でもテストに付加できます。
TODO: ディレクトリ構造
TODO: モジュール/クラス
TODO: スクリプトの例
apps/ ディレクトリには、次のテスト・アプリケーションが入って
います。
upper_case: ファイルの内容を大文字に変換します。
concat: 入力ファイルを連結します。
1sec: CPU時間を1秒使います。
test/ ディレクトリには、名前にプレフィクス test_を
つけた、種々のpython スクリプトがあります。 それぞれのスクリプトは、BOINCの
エンド・ツー・エンドのテストケースを一つずつ実行します。
(ここで、エンド・ツー・エンドのテストといっているのは、
プロジェクト用とホスト用のディレクトリ構造を生成し、
ウェブ・サーバとサーバデーモン、ホスト・クライアントを起動し、
出力が期待どおりであるかどうかを調べるテストである、ということです。 )
test_uc.py |
uppercase を使う基本テスト |
test_concat.py |
コマンド・ラインの引数とファイル名をテストします。 |
test_uc_slow.py |
チェックポイント/再開メカニズムのテスト |
test_prefs.py |
プレファレンス(好みの設定)のいくつかの側面をテスト |
test_water.py |
ウォーターマーク機能訳注1のいくつかの側面をテスト |
test_rsc.py |
スケジューリングサーバが、[クライアントにとって] 実行可能なワークユニットだけを送出するかどうかをテストします。 |
test_pers.py |
パーシステントファイル転送(ダウンロードとアップロード)のテスト。 転送の途中で[わざと] 中断を起こして、中断があってもファイルサイズが 減少しないことを確認します。 |
test_masterurl_failure.py |
マスターURLがアクセスできないときに、 クライアントでの指数バックオフ訳注2動作が 働くかどうかテストします。 このテストは自動化されていません。 テストを実行したら、(host ディレクトリの中にある) client.outファイルを [人間が] 見て、すべて上手くいっていることを確かめる必要があります。 |
test_sched_failure.py |
スケジューリングサーバが故障したときに、 クライアントでの指数バックオフ訳注2動作が 働くかどうかテストします。 このテストは自動化されていません。 テストを実行したら、(host ディレクトリの中にある) client.outファイルを [人間が] 見て、すべて上手くいっていることを確かめる必要があります。 |
BOINC_TEST_USER_NAME
データベース名を設定するときに使うユーザ名です。
設定しなければ、$USER がデフォルト値になります。
BOINC_TEST_VERBOSE
メッセージの饒舌さのレベルです。
0何も出力しません 1(デフォルト値)いくらか出力されます。 出力が tty のときは、出力行は上書きされます。 2全てを出力します
BOINC_TEST_DELETE
テストベッドをテスト終了後に消すかどうかを指定します。 BOINC_TEST_AUTO_SETUP=0 としたときだけ、意味があります。 指定可能な値は、以下のとおりです(大文字・小文字の区別はしません)。
No[消しません] If-Successful(デフォルト値)[テスト成功なら消します] Always[いつでも消します]
BOINC_TEST_INSTALL_METHOD
html/php および cgi のファイルをどんな方法で、 源になるディレクトリからテストベッドの場所へ インストールするかを指定します。copy(複写)する方法は、どの版のファイルが使われたかを、特定のテストに ついて残しておけるので有用です。 コンパイルされたcgi とスケジューラープログラムが、 平行してビルドを行っても中断されないという点では、ハードリンクを使うのが 最善です訳注3。
linkハードリンク(hardlink)します symlink(デフォルト値)シンボリックリンクを使います copy複写します
BOINC_TEST_AUTO_SETUP=0 (defaultは1です) BOINC_TEST_KEY_DIR BOINC_TEST_PROJECTS_DIR BOINC_TEST_CGI_URL BOINC_TEST_HTML_URL BOINC_TEST_CGI_DIR BOINC_TEST_HTML_DIR BOINC_TEST_HOSTS_DIR
QHOME=/disks/philmor/a/users/quarl/proj
TOP=$QHOME/test-boinc
URL=http://milhouse.ssl.berkeley.edu/quarl
export BOINC_TEST_PROJECTS_DIR=$TOP/projects
export BOINC_TEST_USER_NAME=quarl
export BOINC_TEST_SRC_DIR=$QHOME/boinc
export BOINC_TEST_CGI_DIR=$TOP/boinc_cgi
export BOINC_TEST_CGI_URL=$URL/boinc_cgi
export BOINC_TEST_HTML_DIR=$TOP/boinc_html
export BOINC_TEST_HTML_URL=$URL/boinc_html
export BOINC_TEST_SHMEM_KEY=0x1717f00f
export BOINC_TEST_KEY_DIR=$TOP/keys
export BOINC_TEST_HOSTS_DIR=$TOP/host
Apacheの設定例:
<Directory /disks/philmor/a/users/quarl/proj/test-boinc>
AllowOverride FileInfo AuthConfig Limit
Options Indexes SymLinksIfOwnerMatch IncludesNoExec ExecCGI
<Limit GET POST OPTIONS PROPFIND>
Order allow,deny
Allow from all
</Limit>
</Directory>
ScriptAlias /quarl/boinc_cgi/ "/disks/philmor/a/users/quarl/proj/test-boinc/boinc_cgi/"
Alias /quarl/ "/disks/philmor/a/users/quarl/proj/test-boinc/"
最終更新時刻 16:49:13, 2007年05月19日(JST)
Copyright © 2012 University of California.
Permission is granted to copy, distribute and/or modify this document
under the terms of the GNU Free Documentation License,
Version 1.2 or any later version published by the Free Software Foundation.
Copyright © 2012 Komori Hitoshi(je2bwm at jarl.com).
Japanese translation from English web pages on BOINC.
Permission is granted to copy, distribute and/or modify this document
under the terms of the GNU Free Documentation License,
Version 1.2 or any later version published by the Free Software Foundation.