зеркало из https://github.com/mozilla/pjs.git
Compute moving average for last 10 points and write to foo_avg file for foo machine name
This commit is contained in:
Родитель
38935c13da
Коммит
a782b57b46
|
@ -1,4 +1,5 @@
|
|||
#!/usr/bin/perl
|
||||
# -*- Mode: perl; indent-tabs-mode: nil -*-
|
||||
use CGI::Carp qw(fatalsToBrowser);
|
||||
use CGI::Request;
|
||||
use POSIX qw(strftime);
|
||||
|
@ -19,13 +20,14 @@ $ua = $req->cgi->var("HTTP_USER_AGENT");
|
|||
$ip = $req->cgi->var("REMOTE_ADDR");
|
||||
$time = strftime "%Y:%m:%d:%H:%M:%S", localtime;
|
||||
|
||||
#$value = "1234"; # $req->param('value');
|
||||
#$data = "1:2:3:4"; #$req->param('data');
|
||||
#$tbox = "coffee"; #$tbox =~ tr/A-Z/a-z/;
|
||||
#$testname = "startup"; #$req->param('testname');
|
||||
#$ua = "ua"; #$req->cgi->var("HTTP_USER_AGENT");
|
||||
#$ip = "1.2.3.4"; #$req->cgi->var("REMOTE_ADDR");
|
||||
#$time = "now"; #strftime "%Y:%m:%d:%H:%M:%S", localtime;
|
||||
# Testing, please leave this here.
|
||||
# $value = "1234"; #$req->param('value');
|
||||
# $data = "1:2:3:4"; #$req->param('data');
|
||||
# $tbox = "lespaul"; #$tbox =~ tr/A-Z/a-z/;
|
||||
# $testname = "startup"; #$req->param('testname');
|
||||
# $ua = "ua"; #$req->cgi->var("HTTP_USER_AGENT");
|
||||
# $ip = "1.2.3.4"; #$req->cgi->var("REMOTE_ADDR");
|
||||
# $time = "now"; #strftime "%Y:%m:%d:%H:%M:%S", localtime;
|
||||
|
||||
|
||||
print "Content-type: text/plain\n\n";
|
||||
|
@ -47,13 +49,13 @@ for (qw{value data tbox testname ua ip time}) {
|
|||
# unless $ip eq $nametable{$tbox} or $ip eq '208.12.39.125';
|
||||
#die "No 'real' browsers allowed: $ua"
|
||||
# unless $ua =~ /^(libwww-perl|PERL_CGI_BASE)/;
|
||||
die "No 'value' parameter supplied"
|
||||
die "No 'value' parameter supplied"
|
||||
unless $value;
|
||||
die "No 'testname' parameter supplied"
|
||||
die "No 'testname' parameter supplied"
|
||||
unless $testname;
|
||||
die "No 'tbox' parameter supplied"
|
||||
die "No 'tbox' parameter supplied"
|
||||
unless $tbox;
|
||||
die "No 'data' parameter supplied"
|
||||
die "No 'data' parameter supplied"
|
||||
unless $data;
|
||||
|
||||
|
||||
|
@ -68,22 +70,64 @@ unless (-d "db/$testname") {
|
|||
}
|
||||
|
||||
# If file doesn't exist, try creating empty file.
|
||||
unless (-f "db/$testname/$tbox") {
|
||||
open(FILE, "> db/$testname/$tbox") || die "Can't create new file db/$testname/$tbox: $!";
|
||||
my $datafile = "db/$testname/$tbox";
|
||||
unless (-f $datafile) {
|
||||
open(FILE, "> $datafile") || die "Can't create new file $datafile: $!";
|
||||
close(FILE);
|
||||
}
|
||||
|
||||
# record data
|
||||
open(FILE, ">> db/$testname/$tbox") ||
|
||||
die "Can't open db/$tbox: $!";
|
||||
print FILE "$time\t$value\t$data\t$ip\t$tbox\t$ua\n";
|
||||
# Record data.
|
||||
open(FILE, ">> $datafile") ||
|
||||
die "Can't open $datafile: $!";
|
||||
print FILE "$time\t$value\t$data\t$ip\t$tbox\t$ua\n";
|
||||
close(FILE);
|
||||
|
||||
# Compute and record moving average.
|
||||
# Use last 10 points, including the data we are recieving here.
|
||||
my $num_pts = 10;
|
||||
|
||||
# Run through the data file, count data points.
|
||||
my $total_pts = 0;
|
||||
open(FILE, "db/$testname/$tbox");
|
||||
while (<FILE>) {
|
||||
$total_pts++;
|
||||
}
|
||||
close(FILE);
|
||||
|
||||
# Don't compute average unless we have enough points.
|
||||
if($total_pts >= $num_pts) {
|
||||
# Add up last 10 data points, get the average.
|
||||
my $i = 0;
|
||||
my @line_array;
|
||||
my $sum = 0;
|
||||
open(FILE, "db/$testname/$tbox");
|
||||
while (<FILE>) {
|
||||
if($i >= ($total_pts - $num_pts)) {
|
||||
@line_array = split("\t","$_");
|
||||
$sum += $line_array[1];
|
||||
}
|
||||
$i++;
|
||||
}
|
||||
|
||||
my $avg = $sum/$num_pts;
|
||||
close(FILE);
|
||||
|
||||
# If average datafile doesn't exist, try creating empty file.
|
||||
my $datafile_avg = $datafile . "_avg";
|
||||
unless (-f $datafile_avg) {
|
||||
open(FILE, "> $datafile_avg") || die "Can't create new file $datafile_avg: $!";
|
||||
close(FILE);
|
||||
}
|
||||
|
||||
# Write the data.
|
||||
open(FILE, ">> $datafile_avg") ||
|
||||
die "Can't open $datafile_avg: $!";
|
||||
print FILE "$time\t$avg\n";
|
||||
close(FILE);
|
||||
}
|
||||
|
||||
exit 0;
|
||||
|
||||
#
|
||||
#
|
||||
#
|
||||
#sub read_config() {
|
||||
# my %nametable;
|
||||
# open(CONFIG, "< db/config.txt") ||
|
||||
|
|
Загрузка…
Ссылка в новой задаче