diff --git a/mozilla/webtools/graph/collect.cgi b/mozilla/webtools/graph/collect.cgi index 392cf0f374a..d167107723a 100755 --- a/mozilla/webtools/graph/collect.cgi +++ b/mozilla/webtools/graph/collect.cgi @@ -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 () { + $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 () { + 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") ||