1
# Copyright (C) 2008-2009 Sun Microsystems, Inc. All rights reserved.
2
# Use is subject to license terms.
4
# This program is free software; you can redistribute it and/or modify
5
# it under the terms of the GNU General Public License as published by
6
# the Free Software Foundation; version 2 of the License.
8
# This program is distributed in the hope that it will be useful, but
9
# WITHOUT ANY WARRANTY; without even the implied warranty of
10
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
11
# General Public License for more details.
13
# You should have received a copy of the GNU General Public License
14
# along with this program; if not, write to the Free Software
15
# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301
18
package GenTest::ReporterManager;
24
use GenTest::Constants;
25
use GenTest::Reporter;
27
use constant MANAGER_REPORTERS => 0;
32
my $manager = $class->SUPER::new({
33
reporters => MANAGER_REPORTERS
36
$manager->[MANAGER_REPORTERS] = [];
42
my ($manager, $desired_type) = @_;
44
my $max_result = STATUS_OK;
46
foreach my $reporter (@{$manager->reporters()}) {
47
if ($reporter->type() & $desired_type) {
48
my $reporter_result = $reporter->monitor();
49
$max_result = $reporter_result if $reporter_result > $max_result;
56
my ($manager, $desired_type) = @_;
58
my $max_result = STATUS_OK;
61
foreach my $reporter (@{$manager->reporters()}) {
62
if ($reporter->type() & $desired_type) {
63
my @reporter_results = $reporter->report();
64
my $reporter_result = shift @reporter_results;
65
push @incidents, @reporter_results if $#reporter_results > -1;
66
$max_result = $reporter_result if $reporter_result > $max_result;
69
return $max_result, @incidents;
73
my ($manager, $reporter, $params) = @_;
75
if (ref($reporter) eq '') {
76
my $module = "GenTest::Reporter::".$reporter;
77
eval "use $module" or print $@;
78
$reporter = $module->new(%$params);
79
return STATUS_ENVIRONMENT_FAILURE if not defined $reporter;
82
push @{$manager->[MANAGER_REPORTERS]}, $reporter;
87
return $_[0]->[MANAGER_REPORTERS];