Revision: 82 Author: matt Date: 2006-08-13 16:21:07 +0000 (Sun, 13 Aug 2006)
Log Message: ----------- Stats plugin Added Paths: ----------- trunk/plugins/stats Added: trunk/plugins/stats =================================================================== --- trunk/plugins/stats 2006-08-13 16:15:08 UTC (rev 81) +++ trunk/plugins/stats 2006-08-13 16:21:07 UTC (rev 82) @@ -0,0 +1,65 @@ +#!/usr/bin/perl -w + +use Time::HiRes qw(time); + +our $START_TIME = time; +our $REQS = 0; +our $REQS_OK = 0; +our $ERRS = 0; + +sub get_stats { + my $class = shift; + my $uptime = $class->uptime; + my ($rate, $unit) = $class->delivery_rate; + return sprintf(" Uptime: %0.2f sec\n". + " Total Requests: % 10d\n". + " OK Requests: % 10d\n". + " Errors: % 10d\n". + " Delivery Rate: %0.2f reqs/%s\n\n", + $uptime, $REQS, $REQS_OK, $ERRS, $rate, $unit); +} + +sub hook_error { + my $self = shift; + $ERRS++; + return DECLINED; +} + +sub hook_response_sent { + my $self = shift; + my $code = shift; + + $REQS++; + if ($code == 200) { + $REQS_OK++; + } + return DECLINED; +} + +sub uptime { + return (time() - $START_TIME); +} + +sub delivery_rate { + my $class = shift; + my $unit = 'sec'; + my $per_sec = ($REQS / $class->uptime()); + if ($per_sec > 1) { + return ($per_sec, $unit); + } + $unit = 'min'; + my $per_min = $per_sec * 60; + if ($per_min > 1) { + return ($per_min, $unit); + } + $unit = 'hour'; + my $per_hour = $per_min * 60; + if ($per_hour > 1) { + return ($per_hour, $unit); + } + $unit = 'day'; + my $per_day = $per_hour * 24; + return ($per_day, $unit); +} + +