The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.
use 5.006;
use strict;
use warnings FATAL => 'all';
use Test::More;


use Thrift::API::HiveClient2;

my $HIVEHOST = $ENV{HIVEHOST};
my $HIVEPORT = $ENV{HIVEPORT} || 10_000;

plan skip_all => "Set up HiveServer2 host with \$ENV{HIVEHOST}" 
    if !$HIVEHOST;
plan tests => 6;

my $obj;

ok( ref( $obj = Thrift::API::HiveClient2->new( host => $HIVEHOST, port => $HIVEPORT ) ) =~ /Thrift/,
    "Default client" );

SKIP: {
    skip "connect: set HIVEHOST (and optionally HIVEPORT) environment variable(s)", 1
        if !$HIVEHOST;
    ok( eval { $obj->connect }, "Connecting to server");
}

ok( ref( $obj = Thrift::API::HiveClient2->new( host => $HIVEHOST, port => $HIVEPORT, use_xs => 0 ) )
        !~ /XS/,
    "Client with XS disabled"
);

SKIP: {
    skip "connection test", 1 if !$HIVEHOST;
    ok( eval { $obj->connect }, "Connecting to server");
}

SKIP: {
    skip "Thrift::XS::BinaryProtocol non functional with BufferedTransport", 2;
    skip "Thrift::XS::BinaryProtocol not installed", 2
        if !eval { require Thrift::XS::BinaryProtocol };
    ok( $obj = ref(Thrift::API::HiveClient2->new(
                host   => $HIVEHOST,
                port   => $HIVEPORT,
                use_xs => 1
            )
            ) =~ /XS/,
        "Client with XS enabled"
    );
    ok( eval { $obj->connect }, "Connecting to server");
}

__END__

use Data::Dumper;
my $client = Thrift::API::HiveClient2->new( host => $HIVEHOST, port => $HIVEPORT );
$client->connect;
my $handle = $client->execute('SHOW TABLES');
print Dumper($client->fetch($handle, 10));