The London Perl and Raku Workshop takes place on 26th Oct 2024. If your company depends on Perl, please consider sponsoring and/or attending.
#!/usr/bin/env perl

use strict;
use warnings;

use lib 'lib';
use OpenResty::Config;

my $reason;
BEGIN {
    OpenResty::Config->init({root_path => '.'});
    if ($OpenResty::Config{'backend.type'} ne 'PgFarm') {
        $reason = 'backend.type in the config files is not PgFarm.';
    }
    elsif ($OpenResty::Config{'test_suite.use_http'}) {
        $reason = 'test_suite.use_http is on in the config file.';
    }
}
use Test::More $reason ? (skip_all => $reason) : 'no_plan';

use OpenResty::Backend::PgFarm;

use Data::Dumper;
use subs 'dump';

use constant {
    NODE_COUNT => 4,
    USER_COUNT => 10,
};

OpenResty::Config->init({root_path => '.'});
my $backend = OpenResty::Backend::PgFarm->new({ RaiseError => 0 });
ok $backend, "database handle okay";

=pod

if ($backend->has_user("agentz")) {
    #    $backend->do("drop table test cascade");
    $backend->drop_user("agentz");
}

=cut

my @userdb;
my %cnt;
my $res;
for (my $i = 0 ; $i < USER_COUNT; $i ++) {
    my $name = "t_" . rand_str(15);

=pod

    eval {
        $backend->drop_user($name);
    };

=cut

    my $res = $backend->has_user($name);
    if ($res) {
        $backend->drop_user($name);
    }
    $backend->add_user($name, 'blahblahblah');
    my $machine = $backend->has_user($name);
    $res = $backend->drop_user($name);
    $cnt{$machine}++;
    print STDERR "$name\@$machine  ";
    push @userdb, $name;
}

#warn dump(\%cnt);
is scalar(keys %cnt), NODE_COUNT, 'all nodes been visited';

sub dump {
    my $var = shift;
    my $s = Dumper($var);
    $s =~ s/^\$VAR1\s*=\s*//;
    $s
}

sub rand_str {
    my $len = shift;
    my $s;
    for (1..$len) {
        $s .= chr(ord('a')+rand(25));
    }
    $s;
}