mirror of
https://github.com/duncs/clusterssh.git
synced 2025-04-23 09:52:24 +00:00
439 lines
16 KiB
Perl
439 lines
16 KiB
Perl
use strict;
|
|
use warnings;
|
|
|
|
use FindBin qw($Bin);
|
|
use lib "$Bin/../lib";
|
|
|
|
use Test::More;
|
|
use Test::Trap;
|
|
|
|
BEGIN { use_ok("App::ClusterSSH::Host") }
|
|
|
|
my $host;
|
|
|
|
eval { $host = App::ClusterSSH::Host->new(); };
|
|
isa_ok( $@, 'App::ClusterSSH::Exception', 'Caught exception object OK' );
|
|
like(
|
|
$@,
|
|
qr/hostname is undefined/,
|
|
'eval error - hostname is undefined (method)'
|
|
);
|
|
|
|
diag('Checking IPv4 type addresses') if ( $ENV{TEST_VERBOSE} );
|
|
$host = App::ClusterSSH::Host->new( hostname => 'hostname' );
|
|
is( $host, 'hostname', 'stringify works' );
|
|
is( $host->get_hostname, 'hostname', 'hostname set' );
|
|
is( $host->get_port, q{}, 'checking set works' );
|
|
is( $host->get_username, q{}, 'username is unset' );
|
|
is( $host->get_realname, 'hostname', 'realname set' );
|
|
|
|
$host->set_port(2323);
|
|
|
|
is( $host, 'hostname', 'stringify works' );
|
|
is( $host->get_hostname, 'hostname', 'checking set works' );
|
|
is( $host->get_port, 2323, 'checking set works' );
|
|
is( $host->get_username, q{}, 'username is unset' );
|
|
is( $host->get_realname, 'hostname', 'realname set' );
|
|
|
|
$host->set_username('username');
|
|
|
|
is( $host->get_hostname, 'hostname', 'checking set works' );
|
|
is( $host->get_port, 2323, 'checking set works' );
|
|
is( $host->get_username, 'username', 'username is unset' );
|
|
is( $host->get_realname, 'hostname', 'realname set' );
|
|
|
|
$host = undef;
|
|
is( $host, undef, 'starting afresh' );
|
|
|
|
$host = App::ClusterSSH::Host->new( hostname => 'hostname' );
|
|
isa_ok( $host, "App::ClusterSSH::Host" );
|
|
|
|
is( $host, 'hostname', 'stringify works' );
|
|
is( $host->get_hostname, 'hostname', 'hostname set' );
|
|
is( $host->get_port, q{}, 'checking set works' );
|
|
is( $host->get_username, q{}, 'username is unset' );
|
|
is( $host->get_realname, 'hostname', 'realname set' );
|
|
|
|
$host->set_port(2323);
|
|
|
|
is( $host, 'hostname', 'stringify works' );
|
|
is( $host->get_hostname, 'hostname', 'checking set works' );
|
|
is( $host->get_port, 2323, 'checking set works' );
|
|
is( $host->get_username, q{}, 'username is unset' );
|
|
is( $host->get_realname, 'hostname', 'realname set' );
|
|
|
|
$host->set_username('username');
|
|
|
|
is( $host->get_hostname, 'hostname', 'checking set works' );
|
|
is( $host->get_port, 2323, 'checking set works' );
|
|
is( $host->get_username, 'username', 'username is unset' );
|
|
is( $host->get_realname, 'hostname', 'realname set' );
|
|
|
|
$host = undef;
|
|
is( $host, undef, 'starting afresh' );
|
|
|
|
$host = App::ClusterSSH::Host->new(
|
|
hostname => 'hostname',
|
|
port => 2323,
|
|
);
|
|
isa_ok( $host, "App::ClusterSSH::Host" );
|
|
|
|
is( $host, 'hostname', 'stringify works' );
|
|
is( $host->get_hostname, 'hostname', 'hostname set' );
|
|
is( $host->get_port, 2323, 'checking set works' );
|
|
is( $host->get_username, q{}, 'username is unset' );
|
|
is( $host->get_realname, 'hostname', 'realname set' );
|
|
|
|
$host->set_username('username');
|
|
|
|
is( $host->get_hostname, 'hostname', 'checking set works' );
|
|
is( $host->get_port, 2323, 'checking set works' );
|
|
is( $host->get_username, 'username', 'username is unset' );
|
|
is( $host->get_realname, 'hostname', 'realname set' );
|
|
|
|
$host = undef;
|
|
is( $host, undef, 'starting afresh' );
|
|
|
|
$host = App::ClusterSSH::Host->new(
|
|
hostname => 'hostname',
|
|
username => 'username',
|
|
);
|
|
isa_ok( $host, "App::ClusterSSH::Host" );
|
|
|
|
is( $host, 'hostname', 'stringify works' );
|
|
is( $host->get_hostname, 'hostname', 'hostname set' );
|
|
is( $host->get_port, q{}, 'checking set works' );
|
|
is( $host->get_username, 'username', 'username is set' );
|
|
is( $host->get_realname, 'hostname', 'realname set' );
|
|
|
|
$host->set_port(2323);
|
|
|
|
is( $host->get_hostname, 'hostname', 'checking set works' );
|
|
is( $host->get_port, 2323, 'checking set works' );
|
|
is( $host->get_username, 'username', 'username is set' );
|
|
is( $host->get_realname, 'hostname', 'realname set' );
|
|
|
|
$host = undef;
|
|
is( $host, undef, 'starting afresh' );
|
|
|
|
$host = App::ClusterSSH::Host->new(
|
|
hostname => 'hostname',
|
|
username => 'username',
|
|
port => 2323,
|
|
|
|
);
|
|
isa_ok( $host, "App::ClusterSSH::Host" );
|
|
|
|
is( $host, 'hostname', 'stringify works' );
|
|
is( $host->get_hostname, 'hostname', 'checking set works' );
|
|
is( $host->get_port, 2323, 'checking set works' );
|
|
is( $host->get_username, 'username', 'username is set' );
|
|
is( $host->get_realname, 'hostname', 'realname set' );
|
|
|
|
$host = undef;
|
|
is( $host, undef, 'starting afresh' );
|
|
|
|
diag('Parsing IPv4 hostname') if ( $ENV{TEST_VERBOSE} );
|
|
|
|
$host = App::ClusterSSH::Host->parse_host_string('hostname');
|
|
isa_ok( $host, "App::ClusterSSH::Host" );
|
|
is( $host, 'hostname', 'stringify works' );
|
|
is( $host->get_hostname, 'hostname', 'checking set works' );
|
|
is( $host->get_port, q{}, 'checking set works' );
|
|
is( $host->get_username, q{}, 'username is unset' );
|
|
is( $host->get_realname, 'hostname', 'realname set' );
|
|
|
|
$host = App::ClusterSSH::Host->parse_host_string('host%name');
|
|
isa_ok( $host, "App::ClusterSSH::Host" );
|
|
is( $host, 'host%name', 'stringify works' );
|
|
is( $host->get_hostname, 'host%name', 'checking set works' );
|
|
is( $host->get_port, q{}, 'checking set works' );
|
|
is( $host->get_username, q{}, 'username is unset' );
|
|
is( $host->get_realname, 'host%name', 'realname set' );
|
|
|
|
$host = undef;
|
|
is( $host, undef, 'starting afresh' );
|
|
|
|
$host = App::ClusterSSH::Host->parse_host_string('hostname:2323');
|
|
isa_ok( $host, "App::ClusterSSH::Host" );
|
|
is( $host, 'hostname', 'stringify works' );
|
|
is( $host->get_hostname, 'hostname', 'checking set works' );
|
|
is( $host->get_port, 2323, 'checking set works' );
|
|
is( $host->get_username, q{}, 'username is unset' );
|
|
is( $host->get_realname, 'hostname', 'realname set' );
|
|
|
|
$host = App::ClusterSSH::Host->parse_host_string('host%name:2323');
|
|
isa_ok( $host, "App::ClusterSSH::Host" );
|
|
is( $host, 'host%name', 'stringify works' );
|
|
is( $host->get_hostname, 'host%name', 'checking set works' );
|
|
is( $host->get_port, 2323, 'checking set works' );
|
|
is( $host->get_username, q{}, 'username is unset' );
|
|
is( $host->get_realname, 'host%name', 'realname set' );
|
|
|
|
$host = undef;
|
|
is( $host, undef, 'starting afresh' );
|
|
|
|
$host = App::ClusterSSH::Host->parse_host_string('username@hostname:2323');
|
|
isa_ok( $host, "App::ClusterSSH::Host" );
|
|
is( $host, 'hostname', 'stringify works' );
|
|
is( $host->get_hostname, 'hostname', 'checking set works' );
|
|
is( $host->get_port, 2323, 'checking set works' );
|
|
is( $host->get_username, 'username', 'username is set' );
|
|
is( $host->get_realname, 'hostname', 'realname set' );
|
|
|
|
$host = App::ClusterSSH::Host->parse_host_string('username@host%name:2323');
|
|
isa_ok( $host, "App::ClusterSSH::Host" );
|
|
is( $host, 'host%name', 'stringify works' );
|
|
is( $host->get_hostname, 'host%name', 'checking set works' );
|
|
is( $host->get_port, 2323, 'checking set works' );
|
|
is( $host->get_username, 'username', 'username is set' );
|
|
is( $host->get_realname, 'host%name', 'realname set' );
|
|
|
|
$host = undef;
|
|
is( $host, undef, 'starting afresh' );
|
|
|
|
$host = App::ClusterSSH::Host->parse_host_string('username@hostname');
|
|
isa_ok( $host, "App::ClusterSSH::Host" );
|
|
is( $host, 'hostname', 'stringify works' );
|
|
is( $host->get_hostname, 'hostname', 'checking set works' );
|
|
is( $host->get_port, q{}, 'checking set works' );
|
|
is( $host->get_username, 'username', 'username is set' );
|
|
is( $host->get_realname, 'hostname', 'realname set' );
|
|
|
|
$host = App::ClusterSSH::Host->parse_host_string('username@host%name');
|
|
isa_ok( $host, "App::ClusterSSH::Host" );
|
|
is( $host, 'host%name', 'stringify works' );
|
|
is( $host->get_hostname, 'host%name', 'checking set works' );
|
|
is( $host->get_port, q{}, 'checking set works' );
|
|
is( $host->get_username, 'username', 'username is set' );
|
|
is( $host->get_realname, 'host%name', 'realname set' );
|
|
|
|
diag('Parsing IPv4 IP address') if ( $ENV{TEST_VERBOSE} );
|
|
|
|
$host = App::ClusterSSH::Host->parse_host_string('127.0.0.1');
|
|
isa_ok( $host, "App::ClusterSSH::Host" );
|
|
is( $host, '127.0.0.1', 'stringify works' );
|
|
is( $host->get_hostname, '127.0.0.1', 'checking set works' );
|
|
is( $host->get_port, q{}, 'checking set works' );
|
|
is( $host->get_username, q{}, 'username is unset' );
|
|
is( $host->get_realname, '127.0.0.1', 'realname set' );
|
|
|
|
$host = undef;
|
|
is( $host, undef, 'starting afresh' );
|
|
|
|
$host = App::ClusterSSH::Host->parse_host_string('127.0.0.1:2323');
|
|
isa_ok( $host, "App::ClusterSSH::Host" );
|
|
|
|
is( $host, '127.0.0.1', 'stringify works' );
|
|
is( $host->get_hostname, '127.0.0.1', 'checking set works' );
|
|
is( $host->get_port, 2323, 'checking set works' );
|
|
is( $host->get_username, q{}, 'username is unset' );
|
|
is( $host->get_realname, '127.0.0.1', 'realname set' );
|
|
|
|
$host = undef;
|
|
is( $host, undef, 'starting afresh' );
|
|
|
|
$host = App::ClusterSSH::Host->parse_host_string('username@127.0.0.1:2323');
|
|
isa_ok( $host, "App::ClusterSSH::Host" );
|
|
is( $host, '127.0.0.1', 'stringify works' );
|
|
is( $host->get_hostname, '127.0.0.1', 'checking set works' );
|
|
is( $host->get_port, 2323, 'checking set works' );
|
|
is( $host->get_username, 'username', 'username is set' );
|
|
is( $host->get_realname, '127.0.0.1', 'realname set' );
|
|
|
|
$host = undef;
|
|
is( $host, undef, 'starting afresh' );
|
|
|
|
$host = App::ClusterSSH::Host->parse_host_string('username@127.0.0.1');
|
|
isa_ok( $host, "App::ClusterSSH::Host" );
|
|
|
|
is( $host, '127.0.0.1', 'stringify works' );
|
|
is( $host->get_hostname, '127.0.0.1', 'checking set works' );
|
|
is( $host->get_port, q{}, 'checking set works' );
|
|
is( $host->get_username, 'username', 'username is set' );
|
|
is( $host->get_realname, '127.0.0.1', 'realname set' );
|
|
|
|
diag('Checking IPv6 type addresses') if ( $ENV{TEST_VERBOSE} );
|
|
|
|
$host = undef;
|
|
is( $host, undef, 'starting afresh' );
|
|
|
|
$host = App::ClusterSSH::Host->parse_host_string('::1');
|
|
isa_ok( $host, "App::ClusterSSH::Host" );
|
|
is( $host, '::1', 'stringify works' );
|
|
is( $host->get_hostname, '::1', 'checking set works' );
|
|
is( $host->get_port, q{}, 'port is unset' );
|
|
is( $host->get_username, q{}, 'username is unset' );
|
|
is( $host->get_realname, '::1', 'realname set' );
|
|
|
|
$host = undef;
|
|
is( $host, undef, 'starting afresh' );
|
|
|
|
$host = App::ClusterSSH::Host->parse_host_string('username@::1');
|
|
isa_ok( $host, "App::ClusterSSH::Host" );
|
|
is( $host, '::1', 'stringify works' );
|
|
is( $host->get_hostname, '::1', 'checking set works' );
|
|
is( $host->get_port, q{}, 'port is unset' );
|
|
is( $host->get_username, 'username', 'username is set' );
|
|
is( $host->get_realname, '::1', 'realname set' );
|
|
|
|
$host = undef;
|
|
is( $host, undef, 'starting afresh' );
|
|
|
|
$host = App::ClusterSSH::Host->parse_host_string('[::1]');
|
|
isa_ok( $host, "App::ClusterSSH::Host" );
|
|
is( $host, '::1', 'stringify works' );
|
|
is( $host->get_hostname, '::1', 'checking set works' );
|
|
is( $host->get_port, q{}, 'port is unset' );
|
|
is( $host->get_username, q{}, 'username is unset' );
|
|
is( $host->get_realname, '::1', 'realname set' );
|
|
|
|
$host = undef;
|
|
is( $host, undef, 'starting afresh' );
|
|
|
|
$host = App::ClusterSSH::Host->parse_host_string('username@[::1]');
|
|
isa_ok( $host, "App::ClusterSSH::Host" );
|
|
is( $host, '::1', 'stringify works' );
|
|
is( $host->get_hostname, '::1', 'checking set works' );
|
|
is( $host->get_port, q{}, 'port is unset' );
|
|
is( $host->get_username, 'username', 'username is set' );
|
|
is( $host->get_realname, '::1', 'realname set' );
|
|
|
|
$host = undef;
|
|
is( $host, undef, 'starting afresh' );
|
|
|
|
$host = App::ClusterSSH::Host->parse_host_string('[::1]:22');
|
|
isa_ok( $host, "App::ClusterSSH::Host" );
|
|
is( $host, '::1', 'stringify works' );
|
|
is( $host->get_hostname, '::1', 'checking set works' );
|
|
is( $host->get_port, 22, 'checking port set' );
|
|
is( $host->get_username, q{}, 'username is unset' );
|
|
is( $host->get_realname, '::1', 'realname set' );
|
|
|
|
$host = undef;
|
|
is( $host, undef, 'starting afresh' );
|
|
|
|
$host = App::ClusterSSH::Host->parse_host_string('username@[::1]:22');
|
|
isa_ok( $host, "App::ClusterSSH::Host" );
|
|
is( $host, '::1', 'stringify works' );
|
|
is( $host->get_hostname, '::1', 'checking set works' );
|
|
is( $host->get_port, 22, 'checking port set' );
|
|
is( $host->get_username, 'username', 'username is set' );
|
|
is( $host->get_realname, '::1', 'realname set' );
|
|
|
|
$host = undef;
|
|
is( $host, undef, 'starting afresh' );
|
|
|
|
$host = App::ClusterSSH::Host->parse_host_string(
|
|
'2001:0db8:85a3:0000:0000:8a2e:0370:7334');
|
|
isa_ok( $host, "App::ClusterSSH::Host" );
|
|
is( $host, '2001:0db8:85a3:0000:0000:8a2e:0370:7334', 'stringify works' );
|
|
is( $host->get_hostname,
|
|
'2001:0db8:85a3:0000:0000:8a2e:0370:7334',
|
|
'checking set works'
|
|
);
|
|
is( $host->get_port, q{}, 'port is unset' );
|
|
is( $host->get_username, q{}, 'username is unset' );
|
|
is( $host->get_realname, '2001:0db8:85a3:0000:0000:8a2e:0370:7334',
|
|
'realname set' );
|
|
|
|
$host = undef;
|
|
is( $host, undef, 'starting afresh' );
|
|
|
|
trap {
|
|
$host = App::ClusterSSH::Host->parse_host_string(
|
|
'2001:0db8:85a3::8a2e:0370:7334');
|
|
};
|
|
is( $trap->leaveby, 'return', 'returned ok' );
|
|
is( $trap->die, undef, 'returned ok' );
|
|
isa_ok( $host, "App::ClusterSSH::Host" );
|
|
is( $host, '2001:0db8:85a3::8a2e:0370:7334', 'stringify works' );
|
|
|
|
is( $trap->stdout, q{}, 'Expecting no STDOUT' );
|
|
is( $trap->stderr =~ tr/\n//, 2, 'got correct number of print lines' );
|
|
like(
|
|
$trap->stderr,
|
|
qr/^Ambiguous host string: "2001:0db8:85a3::8a2e:0370:7334/,
|
|
'checking warning output'
|
|
);
|
|
like(
|
|
$trap->stderr,
|
|
qr/Assuming you meant "\[2001:0db8:85a3::8a2e:0370:7334\]"?/,
|
|
'checking warning output'
|
|
);
|
|
|
|
is( $host->get_hostname,
|
|
'2001:0db8:85a3::8a2e:0370:7334',
|
|
'checking set works'
|
|
);
|
|
is( $host->get_port, q{}, 'port is unset' );
|
|
is( $host->get_username, q{}, 'username is unset' );
|
|
is( $host->get_realname, '2001:0db8:85a3::8a2e:0370:7334', 'realname set' );
|
|
|
|
$host = undef;
|
|
is( $host, undef, 'starting afresh' );
|
|
|
|
trap {
|
|
$host = App::ClusterSSH::Host->new(
|
|
hostname => 'ssh_test',
|
|
ssh_config => $Bin . '/10host_ssh_config',
|
|
);
|
|
};
|
|
is( $trap->leaveby, 'return', 'returned ok' );
|
|
is( $trap->die, undef, 'returned ok' );
|
|
isa_ok( $host, "App::ClusterSSH::Host" );
|
|
is( $host, 'ssh_test', 'stringify works' );
|
|
is( $host->check_ssh_hostname, 0, 'check_ssh_hostname ok for ssh_test', );
|
|
|
|
for my $hostname (
|
|
'server1', 'server2',
|
|
'server3', 'server4',
|
|
'server-5', 'server5.domain.name',
|
|
'server-6.domain.name'
|
|
)
|
|
{
|
|
|
|
$host = undef;
|
|
is( $host, undef, 'starting afresh for ssh hostname checks' );
|
|
|
|
trap {
|
|
$host = App::ClusterSSH::Host->new(
|
|
hostname => $hostname,
|
|
ssh_config => $Bin . '/10host_ssh_config',
|
|
);
|
|
};
|
|
is( $trap->leaveby, 'return', 'returned ok' );
|
|
is( $trap->die, undef, 'returned ok' );
|
|
isa_ok( $host, "App::ClusterSSH::Host" );
|
|
is( $host, $hostname, 'stringify works' );
|
|
is( $host->check_ssh_hostname, 1,
|
|
'check_ssh_hostname ok for ' . $hostname );
|
|
is( $host->get_realname, $hostname, 'realname set' );
|
|
|
|
}
|
|
|
|
#$host = undef;
|
|
#is( $host, undef, ' starting afresh for ssh hostname checks ' );
|
|
#
|
|
#trap {
|
|
# $host = App::ClusterSSH::Host->new( hostname => ' ssh_text ', ssh_config => $Bin . ' / 10 host_ssh_config ' );
|
|
#};
|
|
#is( $trap->leaveby, ' return ', ' returned ok ' );
|
|
#is( $trap->die, undef, ' returned ok ' );
|
|
#isa_ok( $host, "App::ClusterSSH::Host" );
|
|
#is( $host, ' ssh_text ', ' stringify works ' );
|
|
#is( $host->check_ssh_hostname, 0, ' check_ssh_hostname ok ');
|
|
#
|
|
#$host = undef;
|
|
#is( $host, undef, ' starting afresh for ssh hostname checks ' );
|
|
#
|
|
#trap {
|
|
# $host = App::ClusterSSH::Host->new( hostname => ' ssh_text ', ssh_config => $Bin . ' / 10 host_ssh_config ' );
|
|
#};
|
|
#is( $trap->leaveby, ' return ', ' returned ok ' );
|
|
#is( $trap->die, undef, ' returned ok ' );
|
|
#isa_ok( $host, "App::ClusterSSH::Host" );
|
|
#is( $host, ' ssh_text ', ' stringify works ' );
|
|
#is( $host->check_ssh_hostname, 0, ' check_ssh_hostname ok ');
|
|
|
|
done_testing();
|