#!/usr/bin/perl 
# 
# Copyright Martin J. Bligh (mbligh@mbligh.org), 2006

$bin = `realpath $0 | xargs dirname`; chomp $bin;
require "$bin/abat_parse.pm";

$plotgraph = "$bin/plotgraph";

$perfdir = shift(@ARGV);
die unless (-d $perfdir);

opendir PERFDIR, $perfdir;
my @data_files = grep /^plotdata\.[\w-]+\.[\w-]+$/, readdir PERFDIR;
closedir PERFDIR;
chdir ($perfdir);

%axis_labels = (    'kernbench'    => 'Elapsed time (seconds)',
            'dbench'    => 'Throughput (MB/s)',
            'tbench'    => 'Throughput (MB/s)',
            'reaim'        => 'Max Jobs per Minute',
        );

%plot_cols = (        'kernbench'    => '1:4:8',
            'dbench'    => '1:4:5',
            'tbench'    => '1:4:5',
            'reaim'        => '1:4:5',
        );
            
foreach $data_file (@data_files) {
    $data_file =~ /^plotdata\.([\w-]+)\.([\w-]+)$/;
    ($test, $machine) = ($1, $2);
    print " === Analysing data file: $data_file $test $machine\n";
    push @machines, $machine;
    open DATAFILE, $data_file || die "Cannot open $data_file";
    while ($data = <DATAFILE>) {
        print "X " . $data;
        chomp $data;
        $data =~ s/^\d+\s+//; #  get rid of count
        @data = split (/ /, $data);
        $version = $data[0];
        print "$test $version = $data\n";
        $results{$test}{$machine}{$version} = $data;
        push @versions, $version;
    }
}

@machines = list_uniq (@machines);
@versions = sort version list_uniq (@versions);

@relevant = relevant_versions(@versions);

foreach $machine (@machines) {
    foreach $test (keys(%axis_labels)) {
        graph_plot($machine, "${test}.full.${machine}",
                $test, @versions);
        graph_plot($machine, "${test}.${machine}",
                $test, @relevant);
    }
}

sub graph_plot
{
    my ($machine, $filename, $test, @plot_versions) = @_;
    my $count = 0;

    print " ----- test: $test machine: $machine $#plot_versions\n";
    open (DATA, "> $filename") || die "Cannot open data file $filename";
    foreach $version (@plot_versions) {
        my $results = $results{$test}{$machine}{$version};
        next unless ($results =~ /\S/);
        $count++;
        print "$count $version $results\n";
        print DATA "$count $results\n";
    }
    close (DATA);
    print " ----- \n";
    print `$plotgraph $filename '$axis_labels{$test}' '$plot_cols{$test}'`;
}