~percona-toolkit-dev/percona-toolkit/pt-agent

« back to all changes in this revision

Viewing changes to lib/MockSth.pm

  • Committer: Daniel Nichter
  • Date: 2011-06-24 17:22:06 UTC
  • Revision ID: daniel@percona.com-20110624172206-c7q4s4ad6r260zz6
Add lib/, t/lib/, and sandbox/.  All modules are updated and passing on MySQL 5.1.

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
# This program is copyright 2011 Percona Inc.
 
2
# This program is copyright 2007-2009 Baron Schwartz.
 
3
# Feedback and improvements are welcome.
 
4
#
 
5
# THIS PROGRAM IS PROVIDED "AS IS" AND WITHOUT ANY EXPRESS OR IMPLIED
 
6
# WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF
 
7
# MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE.
 
8
#
 
9
# This program is free software; you can redistribute it and/or modify it under
 
10
# the terms of the GNU General Public License as published by the Free Software
 
11
# Foundation, version 2; OR the Perl Artistic License.  On UNIX and similar
 
12
# systems, you can issue `man perlgpl' or `man perlartistic' to read these
 
13
# licenses.
 
14
#
 
15
# You should have received a copy of the GNU General Public License along with
 
16
# this program; if not, write to the Free Software Foundation, Inc., 59 Temple
 
17
# Place, Suite 330, Boston, MA  02111-1307  USA.
 
18
# ###########################################################################
 
19
# MockSth package $Revision: 5266 $
 
20
# ###########################################################################
 
21
package MockSth;
 
22
 
 
23
use strict;
 
24
use warnings FATAL => 'all';
 
25
use English qw(-no_match_vars);
 
26
 
 
27
use constant MKDEBUG => $ENV{MKDEBUG} || 0;
 
28
 
 
29
sub new {
 
30
   my ( $class, @rows ) = @_;
 
31
   my $n_rows = scalar @rows;
 
32
   my $self = {
 
33
      cursor => 0,
 
34
      Active => $n_rows,
 
35
      rows   => \@rows,
 
36
      n_rows => $n_rows,
 
37
      NAME   => [],
 
38
   };
 
39
   return bless $self, $class;
 
40
}
 
41
 
 
42
sub reset {
 
43
   my ( $self ) = @_;
 
44
   $self->{cursor} = 0;
 
45
   $self->{Active} = $self->{n_rows};
 
46
   return;
 
47
}
 
48
 
 
49
sub fetchrow_hashref {
 
50
   my ( $self ) = @_;
 
51
   my $row;
 
52
   if ( $self->{cursor} < $self->{n_rows} ) {
 
53
      $row = $self->{rows}->[$self->{cursor}++];
 
54
   }
 
55
   $self->{Active} = $self->{cursor} < $self->{n_rows};
 
56
   return $row;
 
57
}
 
58
 
 
59
sub fetchall_arrayref {
 
60
   my ( $self ) = @_;
 
61
   my @rows;
 
62
   if ( $self->{cursor} < $self->{n_rows} ) {
 
63
      my @cols = @{$self->{NAME}};
 
64
      die "Cannot fetchall_arrayref() unless NAME is set" unless @cols;
 
65
      @rows =  map { [ @{$_}{@cols} ] }
 
66
         @{$self->{rows}}[ $self->{cursor}..($self->{n_rows} - 1) ];
 
67
      $self->{cursor} = $self->{n_rows};
 
68
   }
 
69
   $self->{Active} = $self->{cursor} < $self->{n_rows};
 
70
   return \@rows;
 
71
}
 
72
 
 
73
sub _d {
 
74
   my ($package, undef, $line) = caller 0;
 
75
   @_ = map { (my $temp = $_) =~ s/\n/\n# /g; $temp; }
 
76
        map { defined $_ ? $_ : 'undef' }
 
77
        @_;
 
78
   print STDERR "# $package:$line $PID ", join(' ', @_), "\n";
 
79
}
 
80
 
 
81
1;
 
82
 
 
83
# ###########################################################################
 
84
# End MockSth package
 
85
# ###########################################################################