source: gs2-extensions/parallel-building/trunk/src/bin/script/logreportinator.pl@ 30354

Last change on this file since 30354 was 29158, checked in by jmt12, 10 years ago
Initial checkin of script to convert a number of Greenstone
logs into a single CSV file
  • Property svn:executable set to *
File size: 1.7 KB
Line 
1#!/usr/bin/perl
2
3use strict;
4use warnings;
5
6print "===== LogReportinator =====\n";
7print "Converts timing information from a number of Greenstone|| logs into a\n";
8print "nice CSV format.\n";
9print "===========================\n";
10
11use Cwd;
12
13my $results = {};
14my $dir = getcwd();
15
16opendir(DH, $dir);
17my @files = readdir(DH);
18closedir(DH);
19
20print " * Reading log files...\n";
21my $log_file_count = 0;
22my $log_failed_count = 0;
23foreach my $file (@files)
24{
25 if ($file =~ /([a-z]+)-([a-z\.]+)-W(\d+)-(\d+)\.log/i)
26 {
27 my $digital_library = $1;
28 my $host_machine = $2;
29 my $number_of_workers = $3;
30 my $test_run = $4;
31 print ' - parsing: ' . $file . '... ';
32 my $path = $dir . '/' . $file;
33 my $grep_command = 'grep "Elapsed Time:" "' . $path . '"';
34 my $grep_result = `$grep_command`;
35 if ($grep_result =~ /Elapsed Time: (\d+\.\d\d\d\d\d\d)/)
36 {
37 my $duration = $1;
38 if (!defined $results->{$number_of_workers})
39 {
40 $results->{$number_of_workers} = [$duration];
41 }
42 else
43 {
44 push(@{$results->{$number_of_workers}}, $duration);
45 }
46 $log_file_count++;
47 print "success.\n";
48 }
49 else
50 {
51 print "failed!\n";
52 $log_failed_count++;
53 }
54 }
55}
56
57print ' * Writing results.csv...';
58open(FOUT, '>:utf8', $dir . '/results.csv') or die('Failed to open file for writing.');
59foreach my $number_of_workers (sort keys %{$results})
60{
61 print FOUT $number_of_workers . ',' . join(',', @{$results->{$number_of_workers}}) . "\n";
62}
63close(FOUT);
64print "written!\n";
65
66print "========== Results ========\n";
67print sprintf(' Parsed log file: %4d', $log_file_count) . "\n";
68print sprintf(' Failed to parse: %4d', $log_failed_count) . "\n";
69print "======== Complete! ========\n\n";
70exit;
Note: See TracBrowser for help on using the repository browser.