1use strict; 2use warnings; 3 4use Test::More tests => 97; 5 6use Rex -feature => '0.31'; 7use Rex::Group; 8use Symbol; 9 10delete $ENV{REX_USER}; 11 12user("root3"); 13password("pass3"); 14private_key("priv.key3"); 15public_key("pub.key3"); 16 17no warnings; 18$::FORCE_SERVER = "server1 foo[01..10]"; 19use warnings; 20 21group( "forcetest1", "bla1", "blah2", "bla1" ); 22 23task( "tasktest3", "group", "forcetest1", sub { } ); 24 25my @servers = Rex::Group->get_group("forcetest1"); 26is( $servers[0], "bla1", "forceserver - 1" ); 27ok( !defined $servers[2], "group - servername uniq" ); 28 29my $task = Rex::TaskList->create()->get_task("tasktest3"); 30my @all_server = @{ $task->server }; 31 32is( $all_server[0], "server1", "forceserver - task - 0" ); 33is( $all_server[1], "foo01", "forceserver - task - 1" ); 34is( $all_server[5], "foo05", "forceserver - task - 5" ); 35is( $all_server[10], "foo10", "forceserver - task - 10" ); 36 37for my $server (@all_server) { 38 my $auth = $task->merge_auth($server); 39 is( $auth->{user}, "root3", "merge_auth - user" ); 40 is( $auth->{password}, "pass3", "merge_auth - pass" ); 41 is( $auth->{public_key}, "pub.key3", "merge_auth - pub" ); 42 is( $auth->{private_key}, "priv.key3", "merge_auth - priv" ); 43} 44 45auth( for => "tasktest3", user => "jan", password => "foo" ); 46for my $server (@all_server) { 47 my $auth = $task->merge_auth($server); 48 is( $auth->{user}, "jan", "merge_auth - user" ); 49 is( $auth->{password}, "foo", "merge_auth - pass" ); 50 is( $auth->{public_key}, "pub.key3", "merge_auth - pub" ); 51 is( $auth->{private_key}, "priv.key3", "merge_auth - priv" ); 52} 53 54group( "duplicated_by_list", "s[1..3,2..4]" ); 55my @cleaned_servers = Rex::Group->get_group("duplicated_by_list"); 56is_deeply [ $cleaned_servers[0]->get_servers ], [ 57 qw/ 58 s1 s2 s3 s4 59 / 60 ], 61 "duplicated_by_list"; 62 63# test custom functions 64 65my $server = $servers[0]; 66 67my $function_name = 'dummy'; 68my $function_result = $function_name . ' result'; 69 70ok( $server->function( $function_name, sub { return $function_result } ), 71 'registering custom function' ); 72 73my $function_ref = qualify_to_ref( $function_name, $server ); 74is( *{$function_ref}->(), $function_result, 'calling custom function' ); 75