use strict;
use warnings;
use Test::More;
use ShardedKV;
use ShardedKV::Continuum::Ketama;
use ShardedKV::Storage::MySQL;
use ShardedKV::Storage::Redis::String;
use ShardedKV::Storage::Redis::Hash;
use lib qw(t/lib);
use ShardedKV::Test;
subtest "memory storage" => sub {
simple_test_one_server_ketama(sub {ShardedKV::Storage::Memory->new()});
simple_test_multiple_servers_ketama(sub {ShardedKV::Storage::Memory->new()});
};
subtest "mysql storage" => sub {
my @conn_args = get_mysql_conf();
if (not @conn_args) {
plan skip_all => 'No MySQL connection info, skipping mysql tests';
}
else {
pass("Got MySQL connection details");
}
simple_test_one_server_ketama(\&mysql_storage);
simple_test_multiple_servers_ketama(\&mysql_storage);
};
my $got_redis_conn = get_redis_conf();
subtest "redis string storage" => sub {
plan skip_all => 'No Redis connection info, skipping Redis tests'
if not $got_redis_conn;
simple_test_one_server_ketama(\&redis_string_storage);
simple_test_multiple_servers_ketama(\&redis_string_storage);
};
subtest "redis hash storage" => sub {
plan skip_all => 'No Redis connection info, skipping Redis tests'
if not $got_redis_conn;
simple_test_one_server_ketama(\&redis_hash_storage);
simple_test_multiple_servers_ketama(\&redis_hash_storage);
};
done_testing();