netatalk.io

Netatalk 4.3.0

名前

afp_spectest — AFP仕様準拠テストスイート

概要

afp_spectest [-1234567aCilmVvX] [-h host] [-H host2] [-p port] [-s volume] [-c path to volume] [-S volume2] [-u user] [-d user2] [-w password] [-f test]

説明

afp_spectest は、数百のテストケースを含む包括的な AFP 仕様テストスイートである。 テスト対象となる AFP コマンドごと、またはテストの前提条件ごとに分類されたテストセットで構成されている。

利用可能なテストセットは、-l オプションで一覧表示できる。-f オプションを使用すると、単一のテストまたはテストセット全体を実行できる。

オプション

-1 : AFP 2.1プロトコルバージョンを使用する

-2 : AFP 2.2プロトコルバージョンを使用する

-3 : AFP 3.0プロトコルバージョンを使用する

-4 : AFP 3.1プロトコルバージョンを使用する

-5 : AFP 3.2プロトコルバージョンを使用する

-6 : AFP 3.3プロトコルバージョンを使用する

-7 : AFP 3.4プロトコルバージョンを使用する

-a : テスト対象のサーバーはファイルシステム拡張属性ではなく AppleDouble v2 メタデータを使用する

-c パズ : テストボリュームへのローカルファイルシステムのパス(Tier 2 テストに必須)

-C : 端末出力でANSIカラーをオフにする

-d user : 認証用の2番目のユーザー名

-f test : 実行するテストまたはテストセットを指定する

-h host : サーバーのホスト名またはIPアドレス(デフォルト: localhost)

-H ホスト : 2番目のホストのサーバーホスト名またはIPアドレス

-i : 対話型モード – 各テストの前にユーザーにプロンプトを表示します(デバッグに使用)

-l : 利用可能なすべてのテストセットを一覧表示して終了する

-m : Mac OS ネイティブ AFP サーバー互換モードでテストを実行する

-p port : サーバーポート番号(デフォルト: 548)

-s ボリューム名 : テスト用にマウントするボリューム名

-S ボリューム名 : テスト用にマウントする2番目のボリュームのボリューム名

-u ユーザー名 : 認証用のユーザー名(デフォルト: 現在のuid)

-v : 詳細出力

-V : 超詳細出力

-w パスワード文字列 : 認証用のパスワード

-X : ビッグエンディアンと互換性のないテストをスキップする

使用法

spectest スイートのテストは、一般的な使用パターンとパラメータは同じですが、特定のテストには追加の要件がある。AFP プロトコルバージョン (-1 から -7) を設定し、次にテスト対象ホスト (localhost も可) のアドレスと認証情報を設定する。一部のテストでは、2番目のユーザーと2番目のボリュームを定義する必要がある。

いわゆる tier 2 (T2) テストは localhost から実行し、テスト対象ボリュームへのローカルパスを -c で指定する必要がある。これは、テストの前提条件などを設定するために、システムコールを使用してファイルシステムを直接変更するためだ。

読み取り専用テストとスリープテストも別途実行する必要がある。

ファイル名拡張子マッピングのテスト

FPGetFileDirParms テストセット内のいくつかのテストでは、ファイル名拡張子とタイプ/クリエータのマッピングが有効になっていることが想定されている。netatalk バージョン 3 以降では、extmap.conf(5) を編集し、この設定ファイル内のすべてのコメント行をアンコメントすることで、この拡張子マッピングを明示的に有効にする必要がある。

スリープテスト

FPzzz テストセットには、AFP スリープモードとタイムアウトのテストが含まれている。これらのテストは必然的に実行に時間がかかるため、spectest スイートの実行時にはデフォルトでは実行されない。代わりに、-f パラメータを使用して明示的にテストセットを実行する必要がある。

afp_spectest -f FPzzz

読み取り専用テスト

名前が示すように、Readonly テストセットは、共有ボリュームが読み取り専用モードのときの netatalk の動作を検証する。

言うまでもなく、テストするボリュームは読み取り専用として設定されている必要がある。これは、例えば afp.conf で rolist を設定することで実現できる。

[test volume]
path = /my/path
volume name = test_volume
rolist = myuser

テストでは、読み取り専用の共有ボリュームに少なくとも2つのファイルと1つのディレクトリが存在することを想定している。

echo "testfile uno" > /my/path/first.txt
echo "testfile dos" > /my/path/second.txt
mkdir /my/path/third

最後に、Readonly テストセットを実行する。

afp_spectest -s test_volume -f Readonly

復帰コード

テストスイート内の各テストは、次のいずれかの戻りコードを返す。

なお、「NOT TESTED」の結果はテスト実行全体の失敗として扱われますが、「SKIPPED」はそうではない。

Spectest は、ネイティブ Mac OS AFP サーバーに対して実行した場合も Netatalk に対して実行した場合も同じ結果を返すが、前者の場合は、Mac との互換性を有効にするために -m パラメータを指定して Spectest を実行する必要がある。

Mac AFPサーバーのテスト

このツール群は、主に Netatalk AFP サーバーをテストするために設計されているが、古い Mac OS X または Classic Mac OS システムでホストされている Mac OS AFP サーバーをテストするためにも使用できる。

Mac AFP サーバーをテストする場合は、-m オプションを使用してテストランナーを起動する。Mac モードで実行すると、テストランナーは、Mac と Netatalk の間の既知の現在または過去の相違点を持つテストを報告する。

Mac と Netatalk が異なる場合、または Mac の結果がバージョン間で異なる場合:

header.dsi_code       -5000     AFPERR_ACCESS
MAC RESULT: -5019 AFPERR_PARAM    -5010 AFPERR_BUSY
Netatalk returns AFPERR_ACCESS when a Mac return AFPERR_PARAM or AFPERR_BUSY

Mac と Netatalk が以前は異なる結果を返していたが、現在は同じように動作する場合:

Warning MAC and Netatalk now same RESULT!

環境設定

以下は、AFP仕様テストを実行するためのサンプル設定です。現在、テストランナーでは ClearTxt とゲスト認証のみがサポートされている。

2つの空のディレクトリを用意する。テストディレクトリに残ったファイルがあると、いくつかのテストが失敗する。

drwxrwsr-x    5 user1   afpusers       176 avr 27 23:56 /tmp/afptest1
drwxrwsr-x    5 user1   afpusers       176 avr 27 23:56 /tmp/afptest2

afp.confオプションは次の通り。

[Global]
uam list = uams_clrtxt.so uams_guest.so

[testvol1]
ea = sys
path = /tmp/afptest1
valid users = @afpusers
volume name = testvol1

[testvol2]
ea = sys
path = /tmp/afptest2
valid users = @afpusers
volume name = testvol2

テストを実行する

afp_spectest の FPSetForkParms_test テストセットを AFP 3.4 で実行する。

% afp_spectest -h 10.0.0.10 -u user1 -d user2 -w passwd -s testvol1 -S testvol2 -c /srv/afptest1 -7 -f FPSetForkParms_test
===================
FPSetForkParms_test
-------------------
FPSetForkParms:test62: SetForkParams errors - PASSED
FPSetForkParms:test141: Setforkmode error - PASSED
FPSetForkParms:test217: Setfork size 64 bits - PASSED
FPSetForkParms:test306: set fork size, new size > old size - PASSED

関連項目

afp_logintest(1), afparg(1), afpd(8)