The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.
package t::Util;
use strict;
use warnings;
use base qw/Exporter/;
use Test::More;
use Test::Requires qw/Test::TCP File::Which/;

our @EXPORT = qw/test_kt/;

sub test_kt {
    my $cb = shift;
    my $server_cb = shift;

    my $ktserver = scalar(which 'ktserver');
    plan skip_all => 'This test requires "ktserver"' unless $ktserver;

    test_tcp(
        client => $cb,
        port => Test::TCP::empty_port(10000), # kt cannot use 50000+ number as a port number
        server => $server_cb ? sub { $server_cb->(shift, $ktserver) } : sub {
            my $port = shift;
            exec $ktserver, '-port', $port;
            die "cannot exec ktserver";
        },
    );
}

1;