List:Commits« Previous MessageNext Message »
From:Ingo Struewing Date:March 10 2009 11:30am
Subject:bzr commit into mysql-6.0-backup branch (ingo.struewing:2784)
View as plain text  
#At file:///home2/mydev/bzrroot/mysql-6.0-lcov/ based on revid:hema@stripped

 2784 Ingo Struewing	2009-03-10
      LCOV script
      
      This script runs a lcov analysis on a tree that has been built
      for coverage testing. It generates an HTML report.
      
      For more information run mysql-test/mysql-test-lcov.pl --help
     @ .bzrignore
        LCOV script
        Added result directory
     @ mysql-test/mysql-test-lcov.pl
        LCOV script
        New script to run the lcov analysis.

    added:
      mysql-test/mysql-test-lcov.pl
    modified:
      .bzrignore
=== modified file '.bzrignore'
--- a/.bzrignore	2009-02-26 13:07:12 +0000
+++ b/.bzrignore	2009-03-10 11:30:19 +0000
@@ -2017,3 +2017,4 @@ libmysqld/sql_join_cache.cc
 storage/maria/maria_non_trans_log
 libmysqld/examples/mysqltest.cc
 libmysqld/bml.cc
+mysql-test/mysql-test-lcov

=== added file 'mysql-test/mysql-test-lcov.pl'
--- a/mysql-test/mysql-test-lcov.pl	1970-01-01 00:00:00 +0000
+++ b/mysql-test/mysql-test-lcov.pl	2009-03-10 11:30:19 +0000
@@ -0,0 +1,209 @@
+#! /usr/bin/perl
+
+# Copyright (C) 2008 Sun Microsystems, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; version 2 of the License.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+
+#
+# Run lcov and genhtml to create a test coverage report.
+#
+
+use strict;
+use warnings;
+use Getopt::Long;
+
+#
+# Constants.
+#
+# Directory for results. Intermediate files and HTML result.
+my $RESULT_DIR= "mysql-test/mysql-test-lcov";
+#
+# Files to ignore. E.g. files renamed after compilation.
+my @EXCLUDE_FILES= qw{
+storage/innobase/pars0grm
+storage/innobase/lexyy
+};
+
+#
+# Usage.
+#
+sub usage
+{
+  print <<"END";
+Usage: $0 [options]
+
+This program runs lcov for code coverage analysis, and genhtml to create
+an HTML report in $RESULT_DIR/index.html.
+
+Options:
+
+  -h    --help        This help.
+  -q    --quiet       Do not show commands run.
+  -p    --purge       Delete all test coverage information, to prepare for a
+                      new coverage test.
+
+Prior to running this tool, MySQL should be compiled with
+BUILD/compile-pentium-gcov, and the testsuite should be run.
+
+Also you need to install the lcov package, which contains the
+utilities lcov and genhtml.
+END
+
+  exit 1;
+}
+
+#
+# Get command line options.
+#
+my $opt_quiet;
+my $opt_help;
+my $opt_purge;
+my $result= GetOptions
+  (
+   "quiet"       => \$opt_quiet,
+   "help"        => \$opt_help,
+   "purge"       => \$opt_purge,
+  );
+
+usage() if $opt_help;
+
+#
+# Global variables.
+#
+my $cmd;
+my $res;
+
+#
+# Hide EXCLUDE_FILES
+#
+sub hide_exclude_files()
+{
+  print STDERR "Hiding excluded files\n" if !$opt_quiet;
+  foreach my $file ( @EXCLUDE_FILES )
+  {
+    unlink "$file.gcno.no-source";
+    rename "$file.gcno", "$file.gcno.no-source";
+    rename "$file.gcda", "$file.gcda.no-source";
+  }
+}
+
+#
+# Recover EXCLUDE_FILES
+#
+sub recover_exclude_files()
+{
+  print STDERR "Recovering excluded files\n" if !$opt_quiet;
+  foreach my $file ( @EXCLUDE_FILES )
+  {
+    rename "$file.gcno.no-source", "$file.gcno";
+    rename "$file.gcda.no-source", "$file.gcda";
+  }
+}
+
+#
+# In verbose mode we output to STDERR as well as to STDOUT.
+# Avoid misplaced output due to buffering.
+#
+if (!$opt_quiet)
+{
+  select STDERR; $| = 1;      # make unbuffered
+  select STDOUT; $| = 1;      # make unbuffered
+}
+
+#
+# We need to change to the root directory of the source tree
+# so that we find all sources, object files, and gcov files from ".".
+#
+my $troot= `bzr root`;
+chomp $troot;
+if (!$troot || !chdir $troot)
+{
+  die "Failed to find tree root. " .
+      "(this tool must be run within a bzr work tree).\n";
+}
+
+#
+# Purge counters from old test runs.
+#
+if($opt_purge)
+{
+  # One cannot create a file with empty name. But empty argument with -f
+  # makes 'rm' silent when there is no file to remove.
+  $cmd= "find . -name '*.da' -o -name '*.gcda' -o -name '*.gcov' |
+         grep -v 'README\.gcov' |
+         xargs rm -f ''";
+  print STDERR "Running: $cmd\n" if !$opt_quiet;
+  $res= system($cmd);
+  exit($res ? ($? >> 8) : 0);
+}
+
+#
+# Create result directory.
+#
+if (-d $RESULT_DIR)
+{
+  print STDERR "Recreating result directory: $RESULT_DIR\n" if !$opt_quiet;
+  $res= system("rm -rf $RESULT_DIR");
+  if ($res)
+  {
+    exit($res ? ($? >> 8) : 0);
+  }
+}
+else
+{
+  print STDERR "Creating result directory: $RESULT_DIR\n" if !$opt_quiet;
+}
+$res= system("mkdir $RESULT_DIR");
+if ($res)
+{
+  exit($res ? ($? >> 8) : 0);
+}
+
+#
+# Hide EXCLUDE_FILES
+#
+hide_exclude_files();
+
+#
+# LCOV
+#
+$cmd= "lcov -q -c -f -d . -o $RESULT_DIR/lcov.info";
+print STDERR "Running: $cmd\n" if !$opt_quiet;
+$res= system($cmd);
+if ($res)
+{
+  recover_exclude_files();
+  exit($res ? ($? >> 8) : 0);
+}
+
+#
+# GENHTML
+#
+$cmd= "genhtml -q --prefix=`pwd` -o $RESULT_DIR " .
+               "$RESULT_DIR/lcov.info";
+print STDERR "Running: $cmd\n" if !$opt_quiet;
+$res= system($cmd);
+if ($res)
+{
+  recover_exclude_files();
+  exit($res ? ($? >> 8) : 0);
+}
+
+#
+# Recover EXCLUDE_FILES
+#
+recover_exclude_files();
+
+print "Result is in $RESULT_DIR/index.html\n";
+


Attachment: [text/bzr-bundle] bzr/ingo.struewing@sun.com-20090310113019-1yrqopbel8807g1c.bundle
Thread
bzr commit into mysql-6.0-backup branch (ingo.struewing:2784)Ingo Struewing10 Mar
  • Re: bzr commit into mysql-6.0-backup branch (ingo.struewing:2784)Rafal Somla17 Mar
    • Re: bzr commit into mysql-6.0-backup branch (ingo.struewing:2784)Ingo Strüwing17 Mar
      • Re: bzr commit into mysql-6.0-backup branch (ingo.struewing:2784)Rafal Somla17 Mar