summaryrefslogtreecommitdiffstats
path: root/collectstats.pl
diff options
context:
space:
mode:
Diffstat (limited to 'collectstats.pl')
-rwxr-xr-xcollectstats.pl107
1 files changed, 107 insertions, 0 deletions
diff --git a/collectstats.pl b/collectstats.pl
new file mode 100755
index 000000000..e053155eb
--- /dev/null
+++ b/collectstats.pl
@@ -0,0 +1,107 @@
+#!/usr/bonsaitools/bin/perl -w
+# -*- Mode: perl; indent-tabs-mode: nil -*-
+#
+# The contents of this file are subject to the Mozilla Public License
+# Version 1.0 (the "License"); you may not use this file except in
+# compliance with the License. You may obtain a copy of the License at
+# http://www.mozilla.org/MPL/
+#
+# Software distributed under the License is distributed on an "AS IS"
+# basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See the
+# License for the specific language governing rights and limitations
+# under the License.
+#
+# The Original Code is the Bugzilla Bug Tracking System.
+#
+# The Initial Developer of the Original Code is Netscape Communications
+# Corporation. Portions created by Netscape are Copyright (C) 1998
+# Netscape Communications Corporation. All Rights Reserved.
+#
+# Contributor(s): Terry Weissman <terry@mozilla.org>,
+# Harrison Page <harrison@netscape.com>
+
+# Run me out of cron at midnight to collect Bugzilla statistics.
+
+use diagnostics;
+use strict;
+
+require "globals.pl";
+
+ConnectToDatabase();
+
+my @products = qw (Mozilla NGLayout);
+
+foreach (@products)
+ {
+ my $dir = "data/mining";
+ &check_data_dir ($dir);
+ &collect_stats ($dir, $_);
+ }
+
+sub check_data_dir
+ {
+ my $dir = shift;
+
+ if (! -d)
+ {
+ mkdir $dir, 0777;
+ chmod 0777, $dir;
+ }
+ }
+
+sub collect_stats
+ {
+ my $dir = shift;
+ my $product = shift;
+ my $when = localtime (time);
+
+ my $query = <<FIN;
+select count(bug_status) from bugs where
+(bug_status='NEW' or bug_status='ASSIGNED' or bug_status='REOPENED')
+and product='$product' group by bug_status
+FIN
+
+ my $file = join '/', $dir, $product;
+ my $exists = -f $file;
+
+ if (open DATA, ">>$file")
+ {
+ SendSQL ($query);
+
+ my %count;
+ push my @row, &today;
+
+ while (my @n = FetchSQLData())
+ {
+ push @row, @n;
+ }
+
+ if (! $exists)
+ {
+ print DATA <<FIN;
+# Bugzilla daily bug stats
+#
+# do not edit me! this file is generated.
+#
+# fields: date|new|assigned|reopened
+# product: $product
+# created: $when
+FIN
+ }
+
+ print DATA (join '|', @row) . "\n";
+ close DATA;
+ }
+ else
+ {
+ print "$0: $file, $!";
+ }
+ }
+
+sub today
+ {
+ my ($dom, $mon, $year) = (localtime(time))[3, 4, 5];
+ if ($year > 99) { $year += 2000; } else { $year += 1900; }
+ return sprintf "%04d%02d%02d", $year, ++$mon, $dom;
+ }
+