Test::UNIXSock(3pm)

Test::UNIXSock3pm

Testing unix domain socket program

Usage

    use Test::UNIXSock;
    my $server = Test::UNIXSock->new(
        code => sub {
            my $path = shift;
            ...
        },
    );
    my $client = MyClient->new( sock => $server->path );
    undef $server; # kill child process on DESTROY

Using memcached:

    use Test::UNIXSock;
    my $memcached = Test::UNIXSock->new(
        code => sub {
            my $path = shift;
            exec $bin, '-s' => $path;
            die "cannot execute $bin: $!";
        },
    );
    my $memd = Cache::Memcached->new({servers => [$memcached->path]});
    ...

And functional interface is available:

    use Test::UNIXSock;
    test_unix_sock(
        client => sub {
            my ($path, $server_pid) = @_;
            # send request to the server
        },
        server => sub {
            my $path = shift;
            # run server
        },
    );

Overview

Test::UNIXSock is a test utility to test UNIX domain socket server programs.

This is based on Test::TCP.

Methods

test_unixsock

Functional interface.

    test_unixsock(
        client => sub {
            my $path = shift;
            # send request to the server
        },
        server => sub {
            my $path = shift;
            # run server
        },
        # optional
        path => "/tmp/mytest.sock", # if not specified, create a sock in tmpdir
        max_wait => 3, # seconds
    );
wait_unix_sock
    wait_unix_sock({ path => $path });

Waits for a particular path is available for connect.

Object Oriented interface interface

my $server = Test::UNIXSock->new(%args);

Create new instance of Test::UNIXSock.

Arguments are following:

$args{auto_start}: Boolean

Call "$server->start()" after create instance.

Default: true

$args{code}: CodeRef

The callback function. Argument for callback function is: "$code->($pid)".

This parameter is required.

$args{max_wait} : Number

Will wait for at most $max_wait seconds before checking port.

See also Net::EmptyPort.

Default: 10

$server->start()

Start the server process. Normally, you don't need to call this method.

$server->stop()

Stop the server process.

my $pid = $server->pid();

Get the pid of child process.

my $port = $server->port();

Get the port number of child process.

Faq

See also Test::TCP FAQ section.

Releases

4 releases since Debian 10 (Buster); the text changed 2 times.

  1. 10
  2. 11
  3. 12–13

Author

Fujiwara Shunichiro <[email protected]>

License

This library is free software; you can redistribute it and/or modify it under the same terms as Perl itself.

This module is based on Test::TCP. copyright (c) 2013 by Tokuhiro Matsuno <[email protected]>.

From libtest-unixsock-perl 0.4-2 in Debian 13 (Trixie). Parsed by carta from the page's man source.