Test::TCP+Devel::NYTProfでWAFのパフォーマンスチューニング

HTTP::Engineから拝借したんですが、Test::TCP + Devel::NYTProfの組み合わせで、WAFのprofilingが簡単にできます。

#!/usr/bin/env perl
use strict;
use HTTP::Engine;
use LWP::UserAgent;

my $module = shift || 'ServerSimple';
my $port = shift || empty_port();
my $loop = shift || 100;

test_tcp(
    client => sub {
        my $port = shift;
        my $ua   = LWP::UserAgent->new;
        for ( 0 .. $loop ) {
            $ua->get("http://localhost:$port/");
        }
    },
    server => sub {
        my $port = shift;
        if ( !$ENV{NO_NYTPROF} ) {
            require Devel::NYTProf;
            $ENV{NYTPROF} = 'start=no';
            Devel::NYTProf->import;
            DB::enable_profile();
            $SIG{TERM} = sub { DB::_finish(); exit; };
        }
        my $engine = TestApp::Web->new(
            server => $module,
            port   => $port,
        );
        $engine->setup;
        $engine->run;

    },
);

tokuhiromさんのTest::TCPは素晴らしいですね。これで大分チューニングがしやすくなりました。

# 上記のスクリプトは以下の場所にいれてあります。
http://github.com/dann/angelos/tree/master/tools