#!perl -wT
use strict;
use warnings;
use Test::More;
plan skip_all => "needs to be adapted";
my @devices = (
{
name => "apc-cc01.infra",
roles => [qw< PDU PDU::APC_RackPDU >],
methods => {
object_type => "PDU",
},
},
{
name => "apc-sg01.infra",
roles => [qw< PDU >],
methods => {
object_type => "PDU",
},
},
{
name => "rikers.dev",
roles => [qw< Server >],
methods => {
object_type => "Server",
},
},
{
name => "samus.infra",
roles => [qw< Switch Switch::Cisco_Catalyst >],
methods => {
object_type => "Switch",
},
},
{
name => "squeak.infra",
roles => [qw< Server Server::HP_ProLiant >],
methods => {
object_type => "Server",
},
},
);
#plan tests => 27;
plan "no_plan";
# load the test config
use_ok "RackMan::Config";
my $config_path = "t/files/rack.conf";
my $config = eval { RackMan::Config->new(-file => $config_path) };
is $@, "", "RackMan::Config->new(-file => $config_path)";
# instanciate the main RackMan object
use_ok "RackMan";
my $rackman = eval {
RackMan->new({ options => { scm => 0 }, config => $config })
};
is $@, "", "RackMan->new({ options => { scm => 0 }, config => \$config })";
# fetch the RackObject for some known devices
for my $dev (@devices) {
note "- " x 20;
my $rackobj = eval { $rackman->device($dev->{name}) };
is $@, "", "\$rackman->device('$dev->{name}')";
isa_ok $rackobj, "RackMan::Device", "{$dev->{name}}";
# XXX This has to be fixed at some point to make the test useful
TODO: { local $TODO = "fix the MySQL to SQLite conversion problem";
for my $role (@{ $dev->{roles} }) {
my $module = "RackMan::Device::$role";
ok $rackobj->DOES($module), "{$dev->{name}} isa $module";
}
}
for my $method (keys %{ $dev->{methods} }) {
is $rackobj->$method, $dev->{methods}{$method},
"{$dev->{name}}->$method = $dev->{methods}{$method}";
}
}