2
0
mirror of https://github.com/xcat2/xcat-core.git synced 2026-09-05 04:27:55 +00:00
Files
xcat-core/xCAT-test/unit/blade_findme_dispatch.t
T
2026-08-25 19:46:04 -03:00

68 lines
2.3 KiB
Perl

#!/usr/bin/env perl
use strict;
use warnings;
use FindBin;
use File::Spec;
use Test::More;
use lib File::Spec->catdir( $FindBin::Bin, '..', '..',
'perl-xCAT' ),
File::Spec->catdir( $FindBin::Bin, '..', '..',
'xCAT-server', 'lib', 'perl' );
use xCAT::DiscoveryUtils;
sub entry_for {
my ($req) = @_;
return xCAT::DiscoveryUtils::findme_request_for_handler($req);
}
# This is the request a booting node sends: a command and its own details, and
# no node, because the node is what the request asks xCAT to find.
my $request = {
command => ['findme'],
arch => ['x86_64'],
uuid => ['00000000-0000-0000-0000-000000000000'],
};
my $got = entry_for($request);
is( ref $got, 'ARRAY', 'a findme request is handed on to the handler' );
# The request that comes back has to be the one that arrived, or the handler
# loses the client address that it matches the node by.
is( $got->[0], $request, 'the request that arrived is handed on unchanged' );
# A request that was already preprocessed elsewhere is still handed on.
$got = entry_for( { command => ['findme'], _xcatpreprocessed => [1] } );
is( ref $got, 'ARRAY', 'an already preprocessed findme request is handed on' );
# Every other command keeps the noderange requirement.
foreach my $command (qw(rpower rinv rvitals rbeacon)) {
is( entry_for( { command => [$command] } ), undef,
"a $command request is left for normal preprocessing" );
}
is( entry_for({}), undef, 'a request without a command is left alone' );
is( entry_for(undef), undef, 'an undefined request is left alone' );
ok( !xCAT::DiscoveryUtils::findme_request_is_claimed($request),
'a fresh findme request is available to a discovery handler' );
ok(
!xCAT::DiscoveryUtils::findme_request_is_claimed(
{ command => ['findme'], discoverymethod => ['undef'] }
),
'the discovery sentinel leaves a findme request available'
);
ok(
xCAT::DiscoveryUtils::findme_request_is_claimed(
{ command => ['findme'], discoverymethod => ['blade'] }
),
'a named discovery method claims the findme request'
);
ok(
!xCAT::DiscoveryUtils::findme_request_is_claimed(
{ command => ['rinv'], discoverymethod => ['blade'] }
),
'a discovery method does not turn another command into findme'
);
done_testing();