API-ISPManager

 view release on metacpan or  search on metacpan

t/02-files.t  view on Meta::CPAN


# Çàãðóçêà ôàéëà
$now = time;
open my $fh, '>', $now or die "Can't open $now for writing: $!";
print {$fh} 'hello world';
close $fh;

my $upload_result = API::ISPManager::file::upload( {
    %connection_params,
    plid => '',
    file => $now,
} );

@expected_file_list = @original_file_list;
push @expected_file_list, $now;
@real_file_list = get_file_list('', '');
ok(union_equal(\@expected_file_list, \@real_file_list), 'file upload');

API::ISPManager::file::delete( {
    %connection_params,
    elid => "$now",  
    plid => '',    
} );

# Ðàñïàêîâêà àðõèâà
`tar -czf $now.tar.gz $now`;
API::ISPManager::file::upload( {
    %connection_params,
    plid => '',
    file => "$now.tar.gz",
} );

my $extract_result = API::ISPManager::file::extract( {
    %connection_params,
    plid => '',
    elid => "$now.tar.gz",
} );

@expected_file_list = @original_file_list;
push @expected_file_list, $now;
push @expected_file_list, "$now.tar.gz";
@real_file_list = get_file_list('', '');
ok(union_equal(\@expected_file_list, \@real_file_list), 'file extract');

API::ISPManager::file::delete( {
    %connection_params,
    elid => "$now",  
    plid => '',    
} );

API::ISPManager::file::delete( {
    %connection_params,
    elid => "$now.tar.gz",  
    plid => '',    
} );

unlink $now;
unlink "$now.tar.gz";

# Ïîëó÷åíèå ñïèñêà ôàéëîâ â âèäå ìàññèâà
sub get_file_list {
    my ($plid, $elid) = @_;
    my $answer = API::ISPManager::file::list( { 
        %connection_params, 
        plid => $plid, 
        elid => $elid,
    } );
    my @result;
    if (ref($answer->{elem}) eq 'ARRAY') {
        foreach my $elem (@{$answer->{elem}}) {
            push @result, $elem->{name}->{content};
        }
    }
    else {
        push @result, $answer->{elem}->{name}->{content};
    }
    return @result;
}

# Ñðàâíåíèå äâóõ ìàññèâîâ êàê ìíîæåñòâ - ò.å. áåç ó÷åòà ïîðÿäêà ÷èñëà
# ýëåìåíòîâ è ÷èñëà èõ ïîâòîðåíèé
sub union_equal {
    my ($a, $b) = @_;
    return union_part_of($a, $b) && union_part_of($b, $a);
}

sub union_part_of {
    my ($a, $b) = @_;
    my $result = 1;
    for (my $i = 0; $i < scalar @{$a} && $result; $i++) {
        my $sub_result = 0;
        for (my $j = 0; $j < scalar @{$b} && !$sub_result; $j++) {
            $sub_result = $sub_result || ${$b}[$j] eq ${$a}[$i];
        }
        $result = $result && $sub_result;
    }
    
    return $result;
}



( run in 1.951 second using v1.01-cache-2.11-cpan-39bf76dae61 )