The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.
#!perl

use Test::More;
use strict;
use warnings;
our ( $es, $instances );
my $r;

### NODES ###
isa_ok $r = $es->nodes, 'HASH', 'All nodes';

is $r->{cluster_name}, 'es_test', ' - has cluster_name';
isa_ok $r->{nodes},    'HASH',    ' - has nodes';

my @nodes = sort ( keys %{ $r->{nodes} } );
is @nodes, $instances, " - $instances nodes";

my $first = shift @nodes;
ok $r= $es->nodes( node => $first ), ' - request single node';
is keys %{ $r->{nodes} }, 1, ' - got one node';
ok $r->{nodes}{$first}, ' - got same node';

isa_ok $r = $es->nodes( node => \@nodes ), 'HASH', ' - nodes by name';
is keys %{ $r->{nodes} }, @nodes, ' - retrieved same number of nodes';
is_deeply [ sort keys %{ $r->{nodes} } ], \@nodes,
    ' - retrieved the same nodes';

ok !$es->nodes()->{nodes}{$first}{settings}, ' - without settings';

ok $r= $es->nodes(
    settings    => 1,
    http        => 1,
    jvm         => 1,
    network     => 1,
    os          => 1,
    process     => 1,
    thread_pool => 1,
    transport   => 1
    )->{nodes}{$first},
    ' - with flags';

ok $r->{settings}
    && $r->{http}
    && $r->{jvm}
    && $r->{network}
    && $r->{os}
    && $r->{process}
    && $r->{thread_pool}
    && $r->{transport}, ' - all info';

ok $r= $es->nodes_stats->{nodes}{$first}, ' - nodes_stats';

ok $r->{indices}, ' - has indices';
ok !$r->{jvm}, ' - no jvm';

ok $r = $es->nodes_stats( clear => 1, jvm => 1 )->{nodes}{$first},
    ' - nodes_stats jvm';
ok !$r->{indices}, ' - no indices';
ok $r->{jvm}, ' - has jvm';

ok $r= $es->nodes_stats(
    indices     => 1,
    clear       => 1,
    fs          => 1,
    http        => 1,
    indices     => 1,
    jvm         => 1,
    network     => 1,
    os          => 1,
    process     => 1,
    thread_pool => 1,
    transport   => 1,
)->{nodes}{$first}, ' - nodes_stats all flags';

ok $r->{fs}
    && $r->{http}
    && $r->{indices}
    && $r->{jvm}
    && $r->{network}
    && $r->{os}
    && $r->{process}
    && $r->{thread_pool}
    && $r->{transport}, ' - all stats';

ok $r= $es->nodes_stats( all => 1 )->{nodes}{$first},
    ' - nodes_stats all flag';

ok $r->{fs}
    && $r->{http}
    && $r->{indices}
    && $r->{jvm}
    && $r->{network}
    && $r->{os}
    && $r->{process}
    && $r->{thread_pool}
    && $r->{transport}, ' - all stats';

1