#! /tools/bin/perl  -w

use DBI;
use strict;
my $test_id=shift;

use vars qw ($dbh $sth $machine);
require '/usr/www/push/sqlcommon20.pl';
require '/usr/www/push/common20.pl';
my $dbh=&ConnectToDatabase("push20");
my $source_file="/o/prod/current/stress_testing/stats.txt";
my $dest_file="/usr/www/push/scripts";
my $file="./stats.txt";
my $scp="/tools/bin/scp -C";
my $machine="stage1";

&get_file();
&parse_file($dbh,$file,$test_id);

sub get_file
{
my $cmd="$scp bd\@$machine:$source_file $dest_file";
print "$cmd\n";
system($cmd);
} # End of get_file

sub parse_file
{
my $dbh=shift;
my $file=shift;
my $test_id=shift;
my $line;

open(FILE,$file);
my @file=<FILE>;
close(FILE);
foreach $line (@file){
        chomp $line;
        print "$line\n";
	my ($entity_name,$total_calls,$total_sec,$avg_sec,$max_sec,$min_sec,$first_sec,$avg_edb_size,$min_edb_size,$max_edb_size,$avg_xml_size,$min_xml_size,$max_xml_size,$edb_total_time,$edb_first_time,$edb_avg_time,$edb_total_calls)=split(/\|/,$line);
	if ($entity_name) {
		my $name_id=&get_entity_id($dbh,$entity_name);
		&insert_stats($dbh,$name_id,$test_id,$total_calls,$total_sec,$avg_sec,$max_sec,$min_sec,$first_sec,$avg_edb_size,$min_edb_size,$max_edb_size,$avg_xml_size,$min_xml_size,$max_xml_size,$edb_total_time,$edb_first_time,$edb_avg_time,$edb_total_calls);
	} # End of if
} # End of foreach
} # End of parse_file

sub get_entity_id
{
my $dbh=shift;
my $name=shift;
my $sth;

my $query="select id from entity_name where name='$name'";
print "QUERY-$query\n";
$sth= $dbh->prepare(qq{ $query } ) || &choke($sth->errstr);
$sth->execute() || &choke ($sth->errstr);
my $id= $sth->fetchrow_array() ;
$sth->finish;
if (! $id) {
	my $insert="insert into entity_name values (NULL,'$name')";
        $sth= $dbh->prepare (qq { $insert } ) || & leave ($DBI::errstr);
        $sth->execute() || &leave ($DBI::errstr);
        $sth->finish;
        return $sth->{insertid} ;
} else {
        return ($id) ;
} # End of if
} # End of get_entity_id

sub insert_stats
{
my $handle=shift;
my $name_id=shift;
my $test_id=shift;
my $total_calls=shift;
my $total_sec=shift;
my $avg_sec=shift;
my $max_sec=shift;
my $min_sec=shift;
my $first_sec=shift;
my $avg_edb_size=shift;
my $min_edb_size=shift;
my $max_edb_size=shift;
my $avg_xml_size=shift;
my $min_xml_size=shift;
my $max_xml_size=shift;
my $edb_total_time=shift;
my $edb_first_time=shift;
my $edb_avg_time=shift;
my $edb_total_calls=shift;
my $sth;

my $insert="insert into entity_times values ('$name_id','$test_id','$total_calls','$total_sec','$avg_sec','$max_sec','$min_sec','$first_sec','$avg_edb_size','$min_edb_size','$max_edb_size','$avg_xml_size','$min_xml_size','$max_xml_size','$edb_total_time','$edb_first_time','$edb_avg_time','$edb_total_calls')";
print "INSERT-$insert\n";
$sth= $handle->prepare(qq{ $insert } ) || &choke($sth->errstr);
$sth->execute() || &choke ($sth->errstr);
$sth->finish(); #cleanup
} # End of insert_stats

sub ConnectToDatabase {
    my $database = shift ;
    my ($dsn)="DBI:mysql:$database:keefer.epinions.com";
 DBI->trace(1, "load20.out");
        $dbh = DBI->connect($dsn, "root", "push")
            || die "$DBI::errstr - Can't connect to database server: .";
} # End of ConnectToDatabase

sub choke
{
my $reason=shift;
print "Failing because: $reason !!!!\n";
exit 1;
} # End of choke
