Property changes on: trunk
___________________________________________________________________
Modified: svn:mergeinfo
- /branches/DEV-capside/release-3.9.0:6365-6370
/branches/DEV-extra-notification-data:6734-6746
/branches/DEV-odw-calculations:9016-9160
/branches/DEV-restapi-monitoringservers:9778
/branches/DEV-snmp-multi:7324-7376
/branches/US187:9403-9479
/branches/US198b:8875-8994
/branches/US310:9851-9873
/branches/enterprise/BRAN-3.14:6874,6882,6956
/branches/enterprise/DEV-professional:6494-8475,8477-8478,8486,8490,8492,8494,8499-8500,8515,8518-8519,8524,8527-8529,8531-8532,8536,8538,8540-8544,8547-8552,8554,8557,8600-8601,8637,8749,8772,8897,8917,8944-8945,8947,8950-8952,8967,8969,8979,8982,8987,8998,9006,9008,9011,9013,9026,9033-9036,9038,9040,9042,9044,9048,9050-9053,9062,9064-9065,9069,9078,9081,9088,9096,9099-9101,9103,9105,9115,9118,9347,9353-9354,9411,9432,9445,9486,9538-9550,9569-9571,9620,9635,9637-9638,9645-9647,9693,9699,9721,9814,9825,9857,9879,9881,9939,10002,10029,10038-10041,10070
/branches/nagvis-iframe:9764-9786
/branches/us168:8759,8762-8763,8766-8768,8770,8774-8777,8794,8798-8799,8801-8803,8821-8822,8834,8837-8838,8932,8937,8947,8969,8977,8981,9004,9007,9009-9010,9012,9024,9049
/commercial/branches/US306-slaves:9804-9823
/commercial/branches/US307-network-map:9685-9837
+ /branches/DEV-capside/release-3.9.0:6365-6370
/branches/DEV-extra-notification-data:6734-6746
/branches/DEV-odw-calculations:9016-9160
/branches/DEV-restapi-monitoringservers:9778
/branches/DEV-snmp-multi:7324-7376
/branches/US187:9403-9479
/branches/US198b:8875-8994
/branches/US310:9851-9873
/branches/enterprise/BRAN-3.14:6874,6882,6956
/branches/enterprise/DEV-professional:6494-8475,8477-8478,8486,8490,8492,8494,8499-8500,8515,8518-8519,8524,8527-8529,8531-8532,8536,8538,8540-8544,8547-8552,8554,8557,8600-8601,8637,8749,8772,8897,8917,8944-8945,8947,8950-8952,8967,8969,8979,8982,8987,8998,9006,9008,9011,9013,9026,9033-9036,9038,9040,9042,9044,9048,9050-9053,9062,9064-9065,9069,9078,9081,9088,9096,9099-9101,9103,9105,9115,9118,9347,9353-9354,9411,9432,9445,9486,9538-9550,9569-9571,9620,9635,9637-9638,9645-9647,9693,9699,9721,9814,9825,9857,9879,9881,9939,10002,10029,10038-10041,10070,10086
/branches/nagvis-iframe:9764-9786
/branches/us168:8759,8762-8763,8766-8768,8770,8774-8777,8794,8798-8799,8801-8803,8821-8822,8834,8837-8838,8932,8937,8947,8969,8977,8981,9004,9007,9009-9010,9012,9024,9049
/commercial/branches/US306-slaves:9804-9823
/commercial/branches/US307-network-map:9685-9837
Modified: trunk/opsview-core/lib/Runtime/ResultSet/OpsviewTopologyMap.pm
===================================================================
--- trunk/opsview-core/lib/Runtime/ResultSet/OpsviewTopologyMap.pm 2012-09-18 16:32:17 UTC (rev 10086)
+++ trunk/opsview-core/lib/Runtime/ResultSet/OpsviewTopologyMap.pm 2012-09-18 16:34:49 UTC (rev 10087)
@@ -117,46 +117,76 @@
my ( $self, $filters, $args ) = @_;
$args ||= {};
- my $opts = { result_class => "DBIx::Class::ResultClass::HashRefInflator", };
- $opts->{select} =
- [qw( opsview_host_id name parent_id parent_name child_id child_name )];
- $opts->{as} =
- [qw( opsview_host_id name parent_id parent_name child_id child_name )];
- $opts->{order_by} = ["me.id"];
+ # all accessible by current contact hosts
+ my $total = $self->search(
+ {},
+ {
+ columns => ['opsview_host_id'],
+ group_by => 'opsview_host_id'
+ }
+ )->count;
+ my $opts = {
+ result_class => "DBIx::Class::ResultClass::HashRefInflator",
+ columns => [
+ qw( opsview_host_id name parent_id parent_name child_id child_name )
+ ],
+ order_by => ["me.id"],
+ };
$self = $self->search( {}, $opts, );
+ # filter objects (hostgrups/monitored by etc.)
$self = $self->filter_objects( $filters, $args );
- my $allrows = $self->count;
my @list = ();
- my $object = {};
my $last_object_id = 0;
+ my $req_limit = $filters->{limit} ? $filters->{limit} - 1 : 0;
+ my $limit_reached = -1;
+ my %host_ids = ();
+
while ( my $row = $self->next ) {
+ ++$host_ids{ $row->{opsview_host_id} };
+
+ next if $limit_reached > 0;
+
if ( $last_object_id != $row->{opsview_host_id} ) {
- push @list, $object if $last_object_id;
- $last_object_id = $row->{opsview_host_id};
- $object = {
+ # loaded all host parents and children - now just count allrows
+ if ( $limit_reached == 0 ) {
+ $limit_reached = 1;
+ next;
+
+ # reached last host - now load parents and children
+ }
+ elsif ( $req_limit && scalar @list >= $req_limit ) {
+ $limit_reached = 0;
+ }
+
+ push @list,
+ {
name => $row->{name},
parents => [],
children => [],
- };
+ };
+
+ $last_object_id = $row->{opsview_host_id};
}
if ( $row->{parent_id} ) {
- push @{ $object->{parents} },
+ push @{ $list[-1]->{parents} },
$row->{parent_visible} ? $row->{parent_name} : undef;
}
if ( $row->{child_id} ) {
- push @{ $object->{children} },
+ push @{ $list[-1]->{children} },
$row->{child_visible} ? $row->{child_name} : undef;
}
}
- if ($last_object_id) {
- push @list, $object;
- }
- return \@list;
+ return {
+ list => \@list,
+ rows => scalar @list,
+ allrows => scalar keys %host_ids,
+ total => $total,
+ };
}
1;
Modified: trunk/opsview-web/lib/Opsview/Web/Controller/REST/Runtime/Network.pm
===================================================================
--- trunk/opsview-web/lib/Opsview/Web/Controller/REST/Runtime/Network.pm 2012-09-18 16:32:17 UTC (rev 10086)
+++ trunk/opsview-web/lib/Opsview/Web/Controller/REST/Runtime/Network.pm 2012-09-18 16:34:49 UTC (rev 10087)
@@ -35,6 +35,7 @@
{ restricted_contactid => $c->stash->{restricted_contactid} }
);
+ $c->stash->{_skip_dt_formatting} = 1;
$c->stash( "rest" => $result );
}
Modified: trunk/opsview-web/lib/Opsview/Web/ControllerBase/REST.pm
===================================================================
--- trunk/opsview-web/lib/Opsview/Web/ControllerBase/REST.pm 2012-09-18 16:32:17 UTC (rev 10086)
+++ trunk/opsview-web/lib/Opsview/Web/ControllerBase/REST.pm 2012-09-18 16:34:49 UTC (rev 10087)
@@ -90,8 +90,8 @@
. $c->res->status . "): "
. $c->req->method . " "
. $c->uri_for( "/", $c->req->path, $c->req->query_params )
- ->path_query
- . " Data:"
+ ->path_query
+ . " Data:"
. Data::Dump::dump($data)
);
}
@@ -101,8 +101,8 @@
"REST response (OK): "
. $c->req->method . " "
. $c->uri_for( "/", $c->req->path, $c->req->query_params )
- ->path_query
- . " Data:"
+ ->path_query
+ . " Data:"
. Data::Dump::dump($data)
);
}
@@ -113,21 +113,24 @@
$dt_formatter = $c->stash->{dt_formatter};
}
- # Convert all values into strings - this is so JSON returns back as string values, rather than "last used" type
- try {
- $c->stash->{rest} =
- Opsview::Utils->convert_all_values_to_string( $data,
- $dt_formatter );
+ unless ( delete $c->stash->{_skip_dt_formatting} ) {
+
+ # Convert all values into strings - this is so JSON returns back as string values, rather than "last used" type
+ try {
+ $c->stash->{rest} =
+ Opsview::Utils->convert_all_values_to_string( $data,
+ $dt_formatter );
+ }
+ catch {
+ $c->res->status(400);
+ $c->stash(
+ "rest" => {
+ message => "Error converting values to string",
+ detail => $_
+ }
+ );
+ }
}
- catch {
- $c->res->status(400);
- $c->stash(
- "rest" => {
- message => "Error converting values to string",
- detail => $_
- }
- );
- }
}
# If alwaysReturn200 is set, then wrap status in the json response
Modified: trunk/opsview-web/t/tests/Test/Opsview/Web/REST/Runtime.pm
===================================================================
--- trunk/opsview-web/t/tests/Test/Opsview/Web/REST/Runtime.pm 2012-09-18 16:32:17 UTC (rev 10086)
+++ trunk/opsview-web/t/tests/Test/Opsview/Web/REST/Runtime.pm 2012-09-18 16:34:49 UTC (rev 10087)
@@ -4,7 +4,8 @@
use warnings;
use Data::Dumper;
use FindBin '$Bin';
-use Test::Most;
+use Test::More;
+use Test::Deep qw( cmp_deeply );
use Time::HiRes 'gettimeofday';
use lib '/usr/local/opsview-web/t/tests';
@@ -30,111 +31,118 @@
subtest 'Get whole network' => sub {
plan tests => 2;
- $expected = [
- {
- 'name' => 'opsview',
- 'children' => [
- 'opsviewdev1', 'host_locally_monitored',
- 'resolved_services', 'cisco',
- 'cisco1', 'cisco3',
- 'toclone', 'host_locally_monitored_v3',
- 'doesnt_exist_1', 'doesnt_exist_2',
- 'singlehostgroup', 'opsviewdev46',
- 'monitored_by_cluster', 'PassiveNode'
- ],
- 'parents' => []
- },
- {
- 'name' => 'opsviewdev1',
- 'children' => [],
- 'parents' => ['opsview']
- },
- {
- 'name' => 'host_locally_monitored',
- 'children' => [],
- 'parents' => ['opsview']
- },
- {
- 'name' => 'monitored_by_slave',
- 'children' => [],
- 'parents' => [ 'cisco', 'cisco3' ]
- },
- {
- 'name' => 'resolved_services',
- 'children' => [],
- 'parents' => ['opsview']
- },
- {
- 'name' => 'cisco',
- 'children' => [ 'monitored_by_slave', 'cisco4' ],
- 'parents' => ['opsview']
- },
- {
- 'name' => 'cisco1',
- 'children' => [],
- 'parents' => ['opsview']
- },
- {
- 'name' => 'cisco3',
- 'children' => ['monitored_by_slave'],
- 'parents' => ['opsview']
- },
- {
- 'name' => 'cisco4',
- 'children' => ['fake_ipv6'],
- 'parents' => ['cisco']
- },
- {
- 'name' => 'toclone',
- 'children' => [],
- 'parents' => ['opsview']
- },
- {
- 'name' => 'host_locally_monitored_v3',
- 'children' => [],
- 'parents' => ['opsview']
- },
- {
- 'name' => 'doesnt_exist_1',
- 'children' => [],
- 'parents' => ['opsview']
- },
- {
- 'name' => 'doesnt_exist_2',
- 'children' => [],
- 'parents' => ['opsview']
- },
- {
- 'name' => 'singlehostgroup',
- 'children' => [],
- 'parents' => ['opsview']
- },
- {
- 'name' => 'fake_ipv6',
- 'children' => [],
- 'parents' => ['cisco4']
- },
- {
- 'name' => 'opsviewdev46',
- 'children' => [],
- 'parents' => ['opsview']
- },
- {
- 'name' => 'monitored_by_cluster',
- 'children' => [],
- 'parents' => ['opsview']
- },
- {
- 'name' => 'PassiveNode',
- 'children' => [],
- 'parents' => ['opsview']
- }
- ];
+ $url = ""
- $mech->get_ok($path);
+ $expected = {
+ rows => 18,
+ total => 18,
+ allrows => 18,
+ list => [
+ {
+ 'name' => 'opsview',
+ 'children' => [
+ 'opsviewdev1', 'host_locally_monitored',
+ 'resolved_services', 'cisco',
+ 'cisco1', 'cisco3',
+ 'toclone', 'host_locally_monitored_v3',
+ 'doesnt_exist_1', 'doesnt_exist_2',
+ 'singlehostgroup', 'opsviewdev46',
+ 'monitored_by_cluster', 'PassiveNode'
+ ],
+ 'parents' => []
+ },
+ {
+ 'name' => 'opsviewdev1',
+ 'children' => [],
+ 'parents' => ['opsview']
+ },
+ {
+ 'name' => 'host_locally_monitored',
+ 'children' => [],
+ 'parents' => ['opsview']
+ },
+ {
+ 'name' => 'monitored_by_slave',
+ 'children' => [],
+ 'parents' => [ 'cisco', 'cisco3' ]
+ },
+ {
+ 'name' => 'resolved_services',
+ 'children' => [],
+ 'parents' => ['opsview']
+ },
+ {
+ 'name' => 'cisco',
+ 'children' => [ 'monitored_by_slave', 'cisco4' ],
+ 'parents' => ['opsview']
+ },
+ {
+ 'name' => 'cisco1',
+ 'children' => [],
+ 'parents' => ['opsview']
+ },
+ {
+ 'name' => 'cisco3',
+ 'children' => ['monitored_by_slave'],
+ 'parents' => ['opsview']
+ },
+ {
+ 'name' => 'cisco4',
+ 'children' => ['fake_ipv6'],
+ 'parents' => ['cisco']
+ },
+ {
+ 'name' => 'toclone',
+ 'children' => [],
+ 'parents' => ['opsview']
+ },
+ {
+ 'name' => 'host_locally_monitored_v3',
+ 'children' => [],
+ 'parents' => ['opsview']
+ },
+ {
+ 'name' => 'doesnt_exist_1',
+ 'children' => [],
+ 'parents' => ['opsview']
+ },
+ {
+ 'name' => 'doesnt_exist_2',
+ 'children' => [],
+ 'parents' => ['opsview']
+ },
+ {
+ 'name' => 'singlehostgroup',
+ 'children' => [],
+ 'parents' => ['opsview']
+ },
+ {
+ 'name' => 'fake_ipv6',
+ 'children' => [],
+ 'parents' => ['cisco4']
+ },
+ {
+ 'name' => 'opsviewdev46',
+ 'children' => [],
+ 'parents' => ['opsview']
+ },
+ {
+ 'name' => 'monitored_by_cluster',
+ 'children' => [],
+ 'parents' => ['opsview']
+ },
+ {
+ 'name' => 'PassiveNode',
+ 'children' => [],
+ 'parents' => ['opsview']
+ }
+ ]
+ };
+
+ $mech->get_ok($url);
eval { $got = $json->decode( $mech->content ) };
die "Bad expected JSON: $@" if $@;
- cmp_bag( $got, $expected, "Correct response for $path" )
+ cmp_deeply( $got, $expected, "Correct response for $path" )
or diag( Data::Dumper->Dump( [$got], ['got'] ) );
};
@@ -143,41 +151,46 @@
plan tests => 2;
$url = ""
- $expected = [
- {
- 'name' => 'opsview',
- 'children' => [
- 'opsviewdev1', 'host_locally_monitored',
- 'resolved_services', 'cisco',
- 'cisco1', 'cisco3',
- 'toclone', 'host_locally_monitored_v3',
- 'doesnt_exist_1', 'doesnt_exist_2',
- 'singlehostgroup', 'opsviewdev46',
- 'monitored_by_cluster', 'PassiveNode'
- ],
- 'parents' => []
- },
- {
- 'name' => 'cisco',
- 'children' => [ 'monitored_by_slave', 'cisco4' ],
- 'parents' => ['opsview']
- },
- {
- 'name' => 'cisco3',
- 'children' => ['monitored_by_slave'],
- 'parents' => ['opsview']
- },
- {
- 'name' => 'cisco4',
- 'children' => ['fake_ipv6'],
- 'parents' => ['cisco']
- },
- ];
+ $expected = {
+ rows => 4,
+ total => 18,
+ allrows => 4,
+ list => [
+ {
+ 'name' => 'opsview',
+ 'children' => [
+ 'opsviewdev1', 'host_locally_monitored',
+ 'resolved_services', 'cisco',
+ 'cisco1', 'cisco3',
+ 'toclone', 'host_locally_monitored_v3',
+ 'doesnt_exist_1', 'doesnt_exist_2',
+ 'singlehostgroup', 'opsviewdev46',
+ 'monitored_by_cluster', 'PassiveNode'
+ ],
+ 'parents' => []
+ },
+ {
+ 'name' => 'cisco',
+ 'children' => [ 'monitored_by_slave', 'cisco4' ],
+ 'parents' => ['opsview']
+ },
+ {
+ 'name' => 'cisco3',
+ 'children' => ['monitored_by_slave'],
+ 'parents' => ['opsview']
+ },
+ {
+ 'name' => 'cisco4',
+ 'children' => ['fake_ipv6'],
+ 'parents' => ['cisco']
+ },
+ ]
+ };
$mech->get_ok($url);
eval { $got = $json->decode( $mech->content ) };
die "Bad expected JSON: $@" if $@;
- cmp_bag( $got, $expected, "Correct response for $url" )
+ cmp_deeply( $got, $expected, "Correct response for $url" )
or diag( Data::Dumper->Dump( [$got], ['got'] ) );
};
@@ -186,58 +199,63 @@
plan tests => 2;
$url = ""
- $expected = [
- {
- 'name' => 'host_locally_monitored',
- 'children' => [],
- 'parents' => ['opsview']
- },
- {
- 'name' => 'cisco',
- 'children' => [ 'monitored_by_slave', 'cisco4' ],
- 'parents' => ['opsview']
- },
- {
- 'name' => 'cisco1',
- 'children' => [],
- 'parents' => ['opsview']
- },
- {
- 'name' => 'cisco3',
- 'children' => ['monitored_by_slave'],
- 'parents' => ['opsview']
- },
- {
- 'name' => 'cisco4',
- 'children' => ['fake_ipv6'],
- 'parents' => ['cisco']
- },
- {
- 'name' => 'host_locally_monitored_v3',
- 'children' => [],
- 'parents' => ['opsview']
- },
- {
- 'name' => 'doesnt_exist_1',
- 'children' => [],
- 'parents' => ['opsview']
- },
- {
- 'name' => 'doesnt_exist_2',
- 'children' => [],
- 'parents' => ['opsview']
- },
- {
- 'name' => 'fake_ipv6',
- 'children' => [],
- 'parents' => ['cisco4']
- }
- ];
+ $expected = {
+ rows => 9,
+ total => 18,
+ allrows => 9,
+ list => [
+ {
+ 'name' => 'host_locally_monitored',
+ 'children' => [],
+ 'parents' => ['opsview']
+ },
+ {
+ 'name' => 'cisco',
+ 'children' => [ 'monitored_by_slave', 'cisco4' ],
+ 'parents' => ['opsview']
+ },
+ {
+ 'name' => 'cisco1',
+ 'children' => [],
+ 'parents' => ['opsview']
+ },
+ {
+ 'name' => 'cisco3',
+ 'children' => ['monitored_by_slave'],
+ 'parents' => ['opsview']
+ },
+ {
+ 'name' => 'cisco4',
+ 'children' => ['fake_ipv6'],
+ 'parents' => ['cisco']
+ },
+ {
+ 'name' => 'host_locally_monitored_v3',
+ 'children' => [],
+ 'parents' => ['opsview']
+ },
+ {
+ 'name' => 'doesnt_exist_1',
+ 'children' => [],
+ 'parents' => ['opsview']
+ },
+ {
+ 'name' => 'doesnt_exist_2',
+ 'children' => [],
+ 'parents' => ['opsview']
+ },
+ {
+ 'name' => 'fake_ipv6',
+ 'children' => [],
+ 'parents' => ['cisco4']
+ }
+ ]
+ };
$mech->get_ok($url);
eval { $got = $json->decode( $mech->content ) };
die "Bad expected JSON: $@" if $@;
- cmp_bag( $got, $expected, "Correct response for $url" )
+ cmp_deeply( $got, $expected, "Correct response for $url" )
or diag( Data::Dumper->Dump( [$got], ['got'] ) );
};
@@ -246,28 +264,33 @@
plan tests => 2;
$url = ""
- $expected = [
- {
- 'name' => 'cisco',
- 'children' => [ 'monitored_by_slave', 'cisco4' ],
- 'parents' => ['opsview']
- },
- {
- 'name' => 'cisco3',
- 'children' => ['monitored_by_slave'],
- 'parents' => ['opsview']
- },
- {
- 'name' => 'cisco4',
- 'children' => ['fake_ipv6'],
- 'parents' => ['cisco']
- },
- ];
+ $expected = {
+ rows => 3,
+ total => 18,
+ allrows => 3,
+ list => [
+ {
+ 'name' => 'cisco',
+ 'children' => [ 'monitored_by_slave', 'cisco4' ],
+ 'parents' => ['opsview']
+ },
+ {
+ 'name' => 'cisco3',
+ 'children' => ['monitored_by_slave'],
+ 'parents' => ['opsview']
+ },
+ {
+ 'name' => 'cisco4',
+ 'children' => ['fake_ipv6'],
+ 'parents' => ['cisco']
+ },
+ ]
+ };
$mech->get_ok($url);
eval { $got = $json->decode( $mech->content ) };
die "Bad expected JSON: $@" if $@;
- cmp_bag( $got, $expected, "Correct response for $url" )
+ cmp_deeply( $got, $expected, "Correct response for $url" )
or diag( Data::Dumper->Dump( [$got], ['got'] ) );
};
@@ -276,111 +299,169 @@
plan tests => 2;
$url = ""
- $expected = [
- {
- 'name' => 'opsview',
- 'children' => [
- 'opsviewdev1', 'host_locally_monitored',
- 'resolved_services', 'cisco',
- 'cisco1', 'cisco3',
- 'toclone', 'host_locally_monitored_v3',
- 'doesnt_exist_1', 'doesnt_exist_2',
- 'singlehostgroup', 'opsviewdev46',
- 'monitored_by_cluster', 'PassiveNode'
- ],
- 'parents' => []
- },
- {
- 'name' => 'opsviewdev1',
- 'children' => [],
- 'parents' => ['opsview']
- },
- {
- 'name' => 'host_locally_monitored',
- 'children' => [],
- 'parents' => ['opsview']
- },
- {
- 'name' => 'cisco',
- 'children' => [ 'monitored_by_slave', 'cisco4' ],
- 'parents' => ['opsview']
- },
- {
- 'name' => 'cisco1',
- 'children' => [],
- 'parents' => ['opsview']
- },
- {
- 'name' => 'cisco3',
- 'children' => ['monitored_by_slave'],
- 'parents' => ['opsview']
- },
- {
- 'name' => 'cisco4',
- 'children' => ['fake_ipv6'],
- 'parents' => ['cisco']
- },
- {
- 'name' => 'host_locally_monitored_v3',
- 'children' => [],
- 'parents' => ['opsview']
- },
- {
- 'name' => 'doesnt_exist_1',
- 'children' => [],
- 'parents' => ['opsview']
- },
- {
- 'name' => 'doesnt_exist_2',
- 'children' => [],
- 'parents' => ['opsview']
- },
- {
- 'name' => 'fake_ipv6',
- 'children' => [],
- 'parents' => ['cisco4']
- },
- {
- 'name' => 'opsviewdev46',
- 'children' => [],
- 'parents' => ['opsview']
- }
- ];
+ $expected = {
+ rows => 12,
+ total => 18,
+ allrows => 12,
+ list => [
+ {
+ 'name' => 'opsview',
+ 'children' => [
+ 'opsviewdev1', 'host_locally_monitored',
+ 'resolved_services', 'cisco',
+ 'cisco1', 'cisco3',
+ 'toclone', 'host_locally_monitored_v3',
+ 'doesnt_exist_1', 'doesnt_exist_2',
+ 'singlehostgroup', 'opsviewdev46',
+ 'monitored_by_cluster', 'PassiveNode'
+ ],
+ 'parents' => []
+ },
+ {
+ 'name' => 'opsviewdev1',
+ 'children' => [],
+ 'parents' => ['opsview']
+ },
+ {
+ 'name' => 'host_locally_monitored',
+ 'children' => [],
+ 'parents' => ['opsview']
+ },
+ {
+ 'name' => 'cisco',
+ 'children' => [ 'monitored_by_slave', 'cisco4' ],
+ 'parents' => ['opsview']
+ },
+ {
+ 'name' => 'cisco1',
+ 'children' => [],
+ 'parents' => ['opsview']
+ },
+ {
+ 'name' => 'cisco3',
+ 'children' => ['monitored_by_slave'],
+ 'parents' => ['opsview']
+ },
+ {
+ 'name' => 'cisco4',
+ 'children' => ['fake_ipv6'],
+ 'parents' => ['cisco']
+ },
+ {
+ 'name' => 'host_locally_monitored_v3',
+ 'children' => [],
+ 'parents' => ['opsview']
+ },
+ {
+ 'name' => 'doesnt_exist_1',
+ 'children' => [],
+ 'parents' => ['opsview']
+ },
+ {
+ 'name' => 'doesnt_exist_2',
+ 'children' => [],
+ 'parents' => ['opsview']
+ },
+ {
+ 'name' => 'fake_ipv6',
+ 'children' => [],
+ 'parents' => ['cisco4']
+ },
+ {
+ 'name' => 'opsviewdev46',
+ 'children' => [],
+ 'parents' => ['opsview']
+ }
+ ]
+ };
$mech->get_ok($url);
eval { $got = $json->decode( $mech->content ) };
die "Bad expected JSON: $@" if $@;
- cmp_bag( $got, $expected, "Correct response for $url" )
+ cmp_deeply( $got, $expected, "Correct response for $url" )
or diag( Data::Dumper->Dump( [$got], ['got'] ) );
};
+ subtest 'Filter by parent host group (with limit)' => sub {
+ plan tests => 2;
+
+ $url = ""
+ $expected = {
+ rows => 4,
+ total => 18,
+ allrows => 12,
+ list => [
+ {
+ 'name' => 'opsview',
+ 'children' => [
+ 'opsviewdev1', 'host_locally_monitored',
+ 'resolved_services', 'cisco',
+ 'cisco1', 'cisco3',
+ 'toclone', 'host_locally_monitored_v3',
+ 'doesnt_exist_1', 'doesnt_exist_2',
+ 'singlehostgroup', 'opsviewdev46',
+ 'monitored_by_cluster', 'PassiveNode'
+ ],
+ 'parents' => []
+ },
+ {
+ 'name' => 'opsviewdev1',
+ 'children' => [],
+ 'parents' => ['opsview']
+ },
+ {
+ 'name' => 'host_locally_monitored',
+ 'children' => [],
+ 'parents' => ['opsview']
+ },
+ {
+ 'name' => 'cisco',
+ 'children' => [ 'monitored_by_slave', 'cisco4' ],
+ 'parents' => ['opsview']
+ },
+ ]
+ };
+
+ $mech->get_ok($url);
+ eval { $got = $json->decode( $mech->content ) };
+ die "Bad expected JSON: $@" if $@;
+ cmp_deeply( $got, $expected, "Correct response for $url" )
+ or diag( Data::Dumper->Dump( [$got], ['got'] ) );
+
+ };
+
subtest 'Filter by monitored_by' => sub {
plan tests => 2;
$url = ""
- $expected = [
- {
- 'name' => 'opsviewdev1',
- 'children' => [],
- 'parents' => ['opsview']
- },
- {
- 'name' => 'host_locally_monitored',
- 'children' => [],
- 'parents' => ['opsview']
- },
- {
- 'name' => 'cisco',
- 'children' => ['monitored_by_slave'],
- 'parents' => []
- }
- ];
+ $expected = {
+ rows => 3,
+ total => 18,
+ allrows => 3,
+ list => [
+ {
+ 'name' => 'opsviewdev1',
+ 'children' => [],
+ 'parents' => ['opsview']
+ },
+ {
+ 'name' => 'host_locally_monitored',
+ 'children' => [],
+ 'parents' => ['opsview']
+ },
+ {
+ 'name' => 'cisco',
+ 'children' => ['monitored_by_slave'],
+ 'parents' => []
+ }
+ ]
+ };
$mech->get_ok($url);
eval { $got = $json->decode( $mech->content ) };
die "Bad expected JSON: $@" if $@;
- cmp_bag( $got, $expected, "Correct response for $url" )
+ cmp_deeply( $got, $expected, "Correct response for $url" )
or diag( Data::Dumper->Dump( [$got], ['got'] ) );
};
@@ -388,36 +469,75 @@
subtest 'Log in as viewkeywords' => sub {
plan tests => 3;
- $expected = [
- {
- 'name' => 'cisco',
- 'children' => [ undef, 'cisco4' ],
- 'parents' => [undef]
- },
- {
- 'name' => 'cisco1',
- 'children' => [],
- 'parents' => [undef]
- },
- {
- 'name' => 'cisco3',
- 'children' => [undef],
- 'parents' => [undef]
- },
- {
- 'name' => 'cisco4',
- 'children' => [undef],
- 'parents' => ['cisco']
- }
- ];
+ $url = ""
+ $expected = {
+ rows => 4,
+ total => 4,
+ allrows => 4,
+ list => [
+ {
+ 'name' => 'cisco',
+ 'children' => [ undef, 'cisco4' ],
+ 'parents' => [undef]
+ },
+ {
+ 'name' => 'cisco1',
+ 'children' => [],
+ 'parents' => [undef]
+ },
+ {
+ 'name' => 'cisco3',
+ 'children' => [undef],
+ 'parents' => [undef]
+ },
+ {
+ 'name' => 'cisco4',
+ 'children' => [undef],
+ 'parents' => ['cisco']
+ }
+ ]
+ };
+
$self->mech_rest_api_login( 'viewkeywords', 'viewkeywords' );
- $mech->get_ok($path);
+ $mech->get_ok($url);
eval { $got = $json->decode( $mech->content ) };
die "Bad expected JSON: $@" if $@;
+ cmp_deeply( $got, $expected, "Correct response for $path" )
+ or diag( Data::Dumper->Dump( [$got], ['got'] ) );
- cmp_bag( $got, $expected, "Correct response for $path" )
+ };
+
+ subtest 'Log in as viewkeywords (with limit)' => sub {
+ plan tests => 3;
+
+ $url = ""
+
+ $expected = {
+ rows => 2,
+ total => 4,
+ allrows => 4,
+ list => [
+ {
+ 'name' => 'cisco',
+ 'children' => [ undef, 'cisco4' ],
+ 'parents' => [undef]
+ },
+ {
+ 'name' => 'cisco1',
+ 'children' => [],
+ 'parents' => [undef]
+ },
+ ]
+ };
+
+ $self->mech_rest_api_login( 'viewkeywords', 'viewkeywords' );
+
+ $mech->get_ok($url);
+ eval { $got = $json->decode( $mech->content ) };
+ die "Bad expected JSON: $@" if $@;
+ cmp_deeply( $got, $expected, "Correct response for $path" )
or diag( Data::Dumper->Dump( [$got], ['got'] ) );
};
@@ -431,6 +551,8 @@
$self->setup_db( 'runtime.big_topology_test.db' );
$self->mech_rest_api_login; # Log back in as admin
+ $url = ""
+
$expected = do {
local ( @ARGV, $/ ) =
"$Bin/var/api-non-testcases/runtime_network_topology_map.json";
@@ -438,7 +560,7 @@
};
my $start = gettimeofday();
- $mech->get_ok($path);
+ $mech->get_ok($url);
$mech->save_content( '/tmp/z.json' );
note( "Request took " . ( gettimeofday() - $start ) . " seconds" );
is( $mech->content, $expected );
Modified: trunk/opsview-web/t/var/api-non-testcases/runtime_network_topology_map.json
===================================================================
--- trunk/opsview-web/t/var/api-non-testcases/runtime_network_topology_map.json 2012-09-18 16:32:17 UTC (rev 10086)
+++ trunk/opsview-web/t/var/api-non-testcases/runtime_network_topology_map.json 2012-09-18 16:34:49 UTC (rev 10087)
@@ -1 +1 @@
@@ Diff output truncated at 102400 characters. @@