Compute moving average for last 10 points and write to foo_avg file for foo machine name

This commit is contained in:
mcafee%netscape.com 2001-12-31 04:52:15 +00:00
Родитель 38935c13da
Коммит a782b57b46
1 изменённых файлов: 64 добавлений и 20 удалений

Просмотреть файл

@ -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") ||