Gearman

 view release on metacpan or  search on metacpan

t/01-object.t  view on Meta::CPAN

use strict;
use warnings;
use Test::More;
use Test::Exception;
use IO::Socket::SSL ();

my $mn = "Gearman::Objects";
use_ok($mn);

can_ok(
    $mn, qw/
        _js
        _js_str
        _property
        _sock_cache
        canonicalize_job_servers
        debug
        func job_servers prefix
        prefix_separator
        set_job_servers
        sock_nodelay
        socket
        /
);

subtest "job servers", sub {
    plan tests => 19;
    {
        # scalar
        my $host = "foo";
        my $c    = new_ok(
            $mn,
            [job_servers => $host],
            "Gearman::Objects->new(job_servers => $host)"
        );

        is(1, $c->{js_count}, "js_count=1");
        ok(my @js = $c->job_servers(), "job_servers");
        is(scalar(@js), 1, "job_servers count");
        is($js[0], join(':', $host, 4730), "$host:4730");
        is(@{ $c->canonicalize_job_servers($host) }[0],
            $js[0], "job_servers=$host");

        throws_ok {
            $c->job_servers(sub { });
        }
        qr/unsupported job server value of type/,
            "unsupported job server value";
    }

    {
        # hash reference
        my $j = { host => "foo", port => 123 };
        my $c = new_ok(
            $mn,
            [job_servers => $j],
            "Gearman::Objects->new(job_servers => hash reference)"
        );

        is($c->{js_count}, 1, "js_count=1");
        ok(my @js = $c->job_servers(), "job_servers");
        is(scalar(@js), 1, "job_servers count");
        is(@{ $c->canonicalize_job_servers($j) }[0], $js[0], "job_servers");
    }



( run in 2.568 seconds using v1.01-cache-2.11-cpan-f56aa216473 )