[freeside-commits] branch master updated. 73641bbccaf310777a01dcfc17d7f60e2757e73a

Ivan ivan at 420.am
Sat Jul 26 15:19:13 PDT 2014


The branch, master has been updated
       via  73641bbccaf310777a01dcfc17d7f60e2757e73a (commit)
       via  7caec8842cb8959515204b45aef368f243e87e33 (commit)
       via  02bf58c3c5db507d4652d24b1788208ca6c4d759 (commit)
      from  c742495b5cd4a044397a0edce8c66a1a12c5db55 (commit)

Those revisions listed above that are new to this repository have
not appeared on any other notification email; so we list those
revisions in full, below.

- Log -----------------------------------------------------------------
commit 73641bbccaf310777a01dcfc17d7f60e2757e73a
Merge: 7caec88 c742495
Author: Ivan Kohler <ivan at freeside.biz>
Date:   Sat Jul 26 15:19:06 2014 -0700

    Merge branch 'master' of git.freeside.biz:/home/git/freeside


commit 7caec8842cb8959515204b45aef368f243e87e33
Author: Ivan Kohler <ivan at freeside.biz>
Date:   Sat Jul 26 15:18:33 2014 -0700

    queue statistics, RT#30238

diff --git a/FS/FS.pm b/FS/FS.pm
index 67e1272..d6b68c2 100644
--- a/FS/FS.pm
+++ b/FS/FS.pm
@@ -472,6 +472,8 @@ L<FS::queue_arg> - Job arguments
 
 L<FS::queue_depend> - Job dependencies
 
+L<FS::queue_stat> - Job statistics
+
 L<FS::msg_template> - Message templates (customer notices)
 
 L<FS::msgcat> - Message catalogs (error messages)
diff --git a/FS/FS/queue_stat.pm b/FS/FS/queue_stat.pm
new file mode 100644
index 0000000..c8e7791
--- /dev/null
+++ b/FS/FS/queue_stat.pm
@@ -0,0 +1,129 @@
+package FS::queue_stat;
+use base qw( FS::Record );
+
+use strict;
+#use FS::Record qw( qsearch qsearchs );
+
+=head1 NAME
+
+FS::queue_stat - Object methods for queue_stat records
+
+=head1 SYNOPSIS
+
+  use FS::queue_stat;
+
+  $record = new FS::queue_stat \%hash;
+  $record = new FS::queue_stat { 'column' => 'value' };
+
+  $error = $record->insert;
+
+  $error = $new_record->replace($old_record);
+
+  $error = $record->delete;
+
+  $error = $record->check;
+
+=head1 DESCRIPTION
+
+An FS::queue_stat object represents statistcs about a completed (queued) job.
+FS::queue_stat inherits from FS::Record.  The following fields are currently
+supported:
+
+=over 4
+
+=item statnum
+
+primary key
+
+=item jobnum
+
+jobnum
+
+=item job
+
+job
+
+=item custnum
+
+custnum
+
+=item insert_date
+
+insert_date
+
+=item start_date
+
+start_date
+
+=item end_date
+
+end_date
+
+=back
+
+=head1 METHODS
+
+=over 4
+
+=item new HASHREF
+
+Creates a new record.  To add the record to the database, see L<"insert">.
+
+Note that this stores the hash reference, not a distinct copy of the hash it
+points to.  You can ask the object for a copy with the I<hash> method.
+
+=cut
+
+sub table { 'queue_stat'; }
+
+=item insert
+
+Adds this record to the database.  If there is an error, returns the error,
+otherwise returns false.
+
+=item delete
+
+Delete this record from the database.
+
+=item replace OLD_RECORD
+
+Replaces the OLD_RECORD with this one in the database.  If there is an error,
+returns the error, otherwise returns false.
+
+=item check
+
+Checks all fields to make sure this is a valid record.  If there is
+an error, returns the error, otherwise returns false.  Called by the insert
+and replace methods.
+
+=cut
+
+sub check {
+  my $self = shift;
+
+  my $error = 
+    $self->ut_numbern('statnum')
+    || $self->ut_number('jobnum')
+    || $self->ut_text('job')
+    || $self->ut_numbern('custnum')
+    || $self->ut_number('insert_date')
+    || $self->ut_number('start_date')
+    || $self->ut_number('end_date')
+  ;
+  return $error if $error;
+
+  $self->SUPER::check;
+}
+
+=back
+
+=head1 BUGS
+
+=head1 SEE ALSO
+
+L<FS::Record>
+
+=cut
+
+1;
+
diff --git a/FS/MANIFEST b/FS/MANIFEST
index ef9fb44..693904d 100644
--- a/FS/MANIFEST
+++ b/FS/MANIFEST
@@ -810,3 +810,5 @@ FS/state.pm
 t/state.t
 FS/state.pm
 t/state.t
+FS/queue_stat.pm
+t/queue_stat.t
diff --git a/FS/bin/freeside-queued b/FS/bin/freeside-queued
index f1a87ca..70d8534 100644
--- a/FS/bin/freeside-queued
+++ b/FS/bin/freeside-queued
@@ -11,6 +11,7 @@ use FS::Conf;
 use FS::Record qw(qsearch);
 use FS::queue;
 use FS::queue_depend;
+use FS::queue_stat;
 use FS::Log;
 use FS::Cron::expire_user_pref qw( expire_user_pref );
 
@@ -140,6 +141,8 @@ while (1) {
 
   foreach my $job ( @jobs ) {
 
+    my $start_date = time;
+
     $log->debug('locking queue job', object => $job);
 
     my %hash = $job->hash;
@@ -236,6 +239,20 @@ while (1) {
         dbh->commit; # for the job itself
       }
 
+      if ( $ljob->job eq 'FS::cust_main::queued_bill' ) {
+        my $queue_stat = new FS::queue_stat {
+          'jobnum'      => $ljob->jobnum,
+          'job'         => $ljob->job,
+          'custnum'     => $ljob->custnum,
+          'insert_date' => $ljob->_date,
+          'start_date'  => $start_date,
+          'end_date'    => time,
+        };
+        my $error = $queue_stat->insert;
+        die $error if $error;
+        dbh->commit; #for the stat
+      }
+
       if ( UNIVERSAL::can(dbh, 'sprintProfile') ) {
         open(PROFILE,">%%%FREESIDE_LOG%%%/queueprofile.$$.".time)
           or die "can't open profile file: $!";
diff --git a/FS/t/queue_stat.t b/FS/t/queue_stat.t
new file mode 100644
index 0000000..7ba0cfe
--- /dev/null
+++ b/FS/t/queue_stat.t
@@ -0,0 +1,5 @@
+BEGIN { $| = 1; print "1..1\n" }
+END {print "not ok 1\n" unless $loaded;}
+use FS::queue_stat;
+$loaded=1;
+print "ok 1\n";

commit 02bf58c3c5db507d4652d24b1788208ca6c4d759
Author: Ivan Kohler <ivan at freeside.biz>
Date:   Sat Jul 26 14:48:08 2014 -0700

    queue statistics, RT#30238

diff --git a/FS/FS/Schema.pm b/FS/FS/Schema.pm
index 40248dd..6486eed 100644
--- a/FS/FS/Schema.pm
+++ b/FS/FS/Schema.pm
@@ -200,7 +200,7 @@ sub dbdef_dist {
     grep {    ! /^(clientapi|access_user)_session/
            && ! /^h_/
            && ! /^log(_context)?$/
-           && ( ! /^queue(_arg)?$/ || ! $opt->{'queue-no_history'} )
+           && ( ! /^queue(_arg|_depend|_stat)?$/ || ! $opt->{'queue-no_history'} )
            && ! $tables_hashref_torrus->{$_}
          }
       $dbdef->tables
@@ -4175,6 +4175,21 @@ sub tables_hashref {
                         ],
     },
 
+    'queue_stat' => {
+      'columns' => [
+        'statnum', 'bigserial',     '',  '', '', '',
+        'jobnum',     'bigint',     '',  '', '', '',
+        'job',       'varchar',     '', 512, '', '', 
+        'custnum',       'int', 'NULL',  '', '', '',
+        'insert_date', @date_type, '', '',
+        'start_date',  @date_type, '', '', 
+        'end_date',    @date_type, '', '', 
+      ],
+      'primary_key'  => 'statnum',
+      'unique'       => [], #[ ['jobnum'] ],
+      'index'        => [],
+    },
+
     'export_svc' => {
       'columns' => [
         'exportsvcnum' => 'serial', '', '', '', '', 

-----------------------------------------------------------------------

Summary of changes:
 FS/FS.pm                                     |    2 +
 FS/FS/Schema.pm                              |   17 ++++++++-
 FS/FS/{extension_device.pm => queue_stat.pm} |   53 +++++++++++++++++---------
 FS/MANIFEST                                  |    2 +
 FS/bin/freeside-queued                       |   17 +++++++++
 FS/t/{ConfItem.t => queue_stat.t}            |    2 +-
 6 files changed, 74 insertions(+), 19 deletions(-)
 copy FS/FS/{extension_device.pm => queue_stat.pm} (61%)
 copy FS/t/{ConfItem.t => queue_stat.t} (83%)




More information about the freeside-commits mailing list