Removed /usr/local from CDPATH
[clearscm.git] / cc / stats
1 #!/usr/bin/perl
2 ################################################################################
3 #
4 # File:         $RCSfile: stats,v $
5 # Revision:     $Revision: 1.2 $
6 # Description:  Produce statistical reports about vobs and views at this site
7 #               For each vob create a log file that contains the following data:
8 #
9 #               date_time;site;VOB_name;size of database;size of source pool;size of devired object;size of cleartext;size of admin data;#elements;#branches;#versions
10 #
11 # Author:       Andrew@DeFaria.com
12 # Created:      Mon Jan  2 17:23:08 PST 2006
13 # Modified:     $Date: 2007/05/17 07:45:48 &
14 # Language:     Perl
15 #
16 # (c) Copyright 2006-2010, Andrew@ClearSCM.com, all rights reserved.
17 #
18 #################################################################################
19 use strict;
20 use warnings;
21
22 use File::Spec;
23 use FindBin;
24 use Getopt::Long;
25
26 use lib "$FindBin::Bin/../lib";
27
28 use OSDep;
29 use Logger;
30 use Display;
31 use DateUtils;
32 use Clearcase;
33 use Clearcase::Vobs;
34 use Clearcase::Vob;
35 use Clearcase::Views;
36
37 my $cc          = Clearcase->new;
38 my $site        = $cc->sitename;
39 my $logdir      = '.';
40 my $sitelog     = "$site.site";
41 my $voblog      = "$site.vob";
42
43 sub Usage {
44   my $msg = shift;
45
46   display "ERROR: $msg\n" if defined $msg;
47
48   display "Usage: $FindBin::Script\t[-u] [-v] [-d] [-vobs] [-site]
49
50 Where:
51
52   -u|sage:   Display usage
53   -ve|rbose: Turn on verbose mode
54   -d|ebug:   Turn on debug mode
55   -vo|bs:    Produce vob stats
56   -s|ite:    Produce site stats
57   -l|ogpath: Directory to put logs (Default '.')
58
59 Default is to report both the vobs and site statistics.
60 ";
61   exit 1;
62 } # Usage
63
64 my $do_vobs = 0;
65 my $do_site = 0;
66
67 GetOptions (
68   'usage'       => sub { Usage },
69   'verbose'     => sub { set_verbose },
70   'debug'       => sub { set_debug },
71   'vobs',       \$do_vobs,
72   'site',       \$do_site,
73   'logdir=s',   \$logdir,
74 ) or Usage 'Invalid parameter';
75
76 unless ($do_vobs or $do_site) {
77   $do_vobs = $do_site = 1;
78 } # if
79
80 my $datetime      = YMDHM;
81 my $vobs          = Clearcase::Vobs->new;
82 my $total_vobsize = 0;
83
84 if ($do_vobs) {
85   verbose 'Processing vobs...';
86
87   my $log  = Logger->new (
88     path   => $logdir,
89     name   => $voblog,
90     append => 1,
91   );
92
93   foreach ($vobs->vobs) {
94     verbose "Processing vob: $Clearcase::vobtag_prefix$_";
95     my $vob = Clearcase::Vob->new (tag => "$Clearcase::vobtag_prefix$_");
96
97     my $elements = $vob->elements;
98     my $branches = $vob->branches;
99     my $versions = $vob->versions;
100
101     $log->msg (
102       "$datetime;$site" . ';' .
103       $_                . ';' .
104       $vob->dbsize      . ';' .
105       $vob->srcsize     . ';' .
106       $vob->dosize      . ';' .
107       $vob->ctsize      . ';' .
108       $vob->admsize     . ';' .
109       $vob->size        . ';' .
110       $vob->elements    . ';' .
111       $vob->branches    . ';' .
112       $vob->versions
113     );
114
115     $total_vobsize += $vob->size;
116   } # foreach
117 } # if
118
119 if ($do_site) {
120   verbose 'Processing site stats...';
121
122   my $log  = Logger->new (
123     path        => $logdir,
124     name        => $sitelog,
125     append      => 1,
126   );
127
128   my $views      = Clearcase::Views->new;
129   my $nbr_views  = $views->views;
130
131   $datetime = YMDHM;
132
133   $log->msg (
134     "$datetime;$site"   . ';' .
135     $vobs->vobs         . ';' .
136     $total_vobsize      . ';' .
137     $views->dynamic     . ';' .
138     $views->snapshot    . ';' .
139     $views->ucm         . ';' .
140     $views->web
141   );
142 } # if