by Hippo2000(2001/1/8)
Net::Daemon::Logなのです。
作者はJochen Wiedmannさんです。それにしても、この方は色々なものを作っています。
なお内容等が間違っていたら修正します。ご連絡ください。
Net::Daemon::Test - Net::Daemonサーバーをテストするためのサポート関数
# これはファイル"servertask"に格納されているサーバーです・
#
# Net::Daemon::Testのサブクラスを作成し、それがさらに
# Net::Daemonのサブクラスになります。
use Net::Daemon::Test ();
package MyDaemon;
@MyDaemon::ISA = qw(Net::Daemon::Test);
sub Run {
# これやその他のメソッドを好きなように書きかえて下さい
}
my $self = Net::Daemon->new(\%attr, \@options);
eval { $self->Bind() };
if ($@) {
die "Server cannot bind: $!";
}
eval { $self->Run() };
if ($@) {
die "Unexpected server termination: $@";
}
# これがクライアント、本当のテスト・スクリプトです。以下で"servertask"ファイルを
# 呼んでいることに注意してください:
#
# 子プロセスを起動するためにChildメソッドを呼びます。timeoutオプションを
# 使うのを忘れないで下さい。
use Net::Daemon::Test ();
my($handle, $port) = eval {
Net::Daemon::Test->Child(5, # Number of subtests
'servertask', '--timeout', '20')
};
if ($@) {
print "not ok 1 $@\n";
exit 0;
}
print "ok 1\n";
# 以下に本当のテスト
...
# サーバーを終了させる
$handle->Terminate();
このモジュールは、Test::Harnessを使うよりも、Net::Daemonサーバー・パッケージのテスト・スクリプトを作成するためのフレームです。しかしそれはあなたの選択です。
テストは2つの部分からなります。クライアント部分はとサーバー部分です。テストはクライアント部分が、子プロセスを起動し、外部のPerlスクリプトを呼び出すことによりサーバー部分を呼び出すことにより実行されます。(もちろんfork()では外部ファイルを必要としませんが、テスト・スクリプトにスレッドを必要とすることなくテスト・スクリプトをWindowsへ移植できるようにするにはこれが一番可能性があります。)
サーバー部分は通常のNet::Daemonアプリケーションで、例えばdbiproxyのようなスクリプトです。Net::Daemon::Testからの派生で、Net::Daemonからではないことです。主な違いはBindメソッドが自動的にポートを占有しようとすることです。一度ポートが占有されると、その番号はファイル"ndtest.prt"に格納されます。
サーバー・プロセスが起動された後、子プロセスはndtest.prtが作成されるまで10秒待ちます(これで十分だとよいのですが)。
sub Run ($) { my $self = shift; $self->Run();
}
このメソッドはプロセス・ハンドルとポート番号を返します。プロセス・ハンドルはメソッドTerminate を提供します。これはサーバー・プロセスを停止させるのに使うことができます。
Net::Daemon is Copyright (C) 1998, Jochen Wiedmann
Am Eisteich 9
72555 Metzingen
Germany
Phone: +49 7123 14887
Email: joe@ispsoft.de
All rights reserved.
You may distribute under the terms of either the GNU General Public License or the Artistic License, as specified in the Perl README file.
Net::Daemon(3), Test::Harness(3)
ご意見、ご質問はこちらの掲示板で受け付けています。
またメールは河馬屋(Nifty)にお願いします。