You are viewing a plain text version of this content. The canonical link for it is here.
Posted to axkit-dev@xml.apache.org by ma...@sergeant.org on 2006/08/13 18:21:26 UTC
[SVN] [82] Stats plugin
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);
+}
+
+