#!/usr/bin/env perl
use 5.012;
use warnings;
use lib 't/lib';
use MyTest;

XS::Loader::load('MyTest');
$SIG{PIPE} = 'IGNORE';

my $conns = shift(@ARGV) || 1;
my $len  = shift(@ARGV) || 10;
my $smp;
$smp = 1 if $conns =~ s/^\@//;
my $per_smp;
$per_smp = $1 if $conns =~ s/:(\d+)$//;
$per_smp ||= 1;

my $l = UE::Loop->default;
my $port = 51645;

if (my $pid = fork()) {
    say "starting server $$";
    MyTest::BenchTcp::start_server($port, $len);
} else {
    say "starting clients $$";
    $0 = "$0 (client)";
    select undef, undef, undef, 0.1;
    
    if ($smp) {
        for (1..$conns) {
            next if fork();
            MyTest::BenchTcp::start_client($port, "x" x $len) for 1..$per_smp;
            last;
        }
    } else {
        MyTest::BenchTcp::start_client($port, "x" x $len) for 1..$conns;
    }
}

$l->run;

say "END $$";