GlusterFS-GFAPI-FFI

 view release on metacpan or  search on metacpan

t/lib/TestVolume.pm  view on Meta::CPAN

    };

    ${GlusterFS::GFAPI::FFI::}{glfs_set_logging} = $mock_set_log;

    throws_ok {
        $v->set_logging('/dev/null', 7);
    } qr/glfs_set_logging\(undef, 7\) failed/;

    ok($mock_info{call_count} == 1
        && $mock_info{args}->[0][0] eq $v->fs
        && !defined($mock_info{args}->[0][1])
        && $mock_info{args}->[0][2] == 7
        , "glfs_fini() called once with [${\$self->_mock_glfs_new()}]");

    ${GlusterFS::GFAPI::FFI::}{glfs_set_logging} = $glfs_set_log;
}

sub test_chmod_success : Test(1)
{
    my $self = shift;

    my $mock_chmod = sub
    {
        return 0;
    };

    my $glfs_chmod = \&GlusterFS::GFAPI::FFI::glfs_chmod;

    no warnings 'redefine';

    ${GlusterFS::GFAPI::FFI::}{glfs_chmod} = $mock_chmod;

    ok($self->{vol}->chmod(path => 'file.txt', mode => 0600) == 0
        , '$vol->chmod has returned with 0');

    ${GlusterFS::GFAPI::FFI::}{glfs_chmod} = $glfs_chmod;
}

sub test_chmod_fail_exception : Test(1)
{
    my $self = shift;

    my $mock_chmod = sub
    {
        return -1;
    };

    my $glfs_chmod = \&GlusterFS::GFAPI::FFI::glfs_chmod;

    no warnings 'redefine';

    ${GlusterFS::GFAPI::FFI::}{glfs_chmod} = $mock_chmod;

    throws_ok {
        $self->{vol}->chmod(path => 'file.txt', mode => 0600);
    } qr/glfs_chmod\(${\$self->_mock_glfs_new()}, file.txt, 0600\) failed/;

    ${GlusterFS::GFAPI::FFI::}{glfs_chmod} = $glfs_chmod;
}

sub test_chown_success : Test
{
    my $self = shift;

    my $mock_chown = sub
    {
        return 0;
    };

    my $glfs_chown = \&GlusterFS::GFAPI::FFI::glfs_chown;

    no warnings 'redefine';

    ${GlusterFS::GFAPI::FFI::}{glfs_chown} = $mock_chown;

    ok($self->{vol}->chown(path => 'file.txt', uid => 9, gid => 11) == 0
        , '$vol->chown has returned with 0');

    ${GlusterFS::GFAPI::FFI::}{glfs_chown} = $glfs_chown;
}

sub test_chown_fail_exception : Test
{
    my $self = shift;

    my $mock_chown = sub
    {
        return -1;
    };

    my $glfs_chown = \&GlusterFS::GFAPI::FFI::glfs_chown;

    no warnings 'redefine';

    ${GlusterFS::GFAPI::FFI::}{glfs_chown} = $mock_chown;

    throws_ok {
        $self->{vol}->chown(path => 'file.txt', uid => 9, gid => 11);
    } qr/glfs_chown\(${\$self->_mock_glfs_new()}, file\.txt, 9, 11\) failed/;

    ${GlusterFS::GFAPI::FFI::}{glfs_chown} = $glfs_chown;
}

sub test_creat_success : Test(2)
{
    my $self = shift;

    my %mock_info = (
        call_count => 0,
        args       => [],
    );

    no warnings 'redefine';

    my $glfs_creat = \&GlusterFS::GFAPI::FFI::glfs_creat;

    try
    {
        my $mock_creat = sub
        {
            $mock_info{call_count}++;
            push(@{$mock_info{args}}, [@_]);

            return 2;
        };

        ${GlusterFS::GFAPI::FFI::}{glfs_creat} = $mock_creat;

        my $f = GlusterFS::GFAPI::FFI::File->new(
                    fd => $self->{vol}->open(
                            path  => 'file.txt',
                            flags => &POSIX::O_CREAT,
                            mode  => 0644));

        isa_ok($f, 'GlusterFS::GFAPI::FFI::File'
            , '$f is a instance of GlusterFS::GFAPI::FFI::File');

        ok($mock_info{call_count} == 1
                && $mock_info{args}->[0][0] eq ${\$self->_mock_glfs_new()}
                && $mock_info{args}->[0][1] eq 'file.txt'
                && $mock_info{args}->[0][2] == &POSIX::O_CREAT
                && $mock_info{args}->[0][3] == 0644
            , sprintf("glfs_creat() called once with [%s, %s, %s, %s]"
                , $self->_mock_glfs_new()
                , 'file.txt'
                , 'O_CREAT'
                , '0644'));
    }
    finally
    {
        ${GlusterFS::GFAPI::FFI::}{glfs_creat} = $glfs_creat;
    };
}

sub test_exists_true : Test
{
    my $self = shift;

    my $mock_stat = sub
    {
        return 0;



( run in 0.907 second using v1.01-cache-2.11-cpan-71847e10f99 )