AnyEvent-Memcached

 view release on metacpan or  search on metacpan

t/check.pl  view on Meta::CPAN

use common::sense;
runtest {
	my ($host,$port,%args) = @_;
	my $cv;$cv = AE::cv;
	diag "testing $host:$port";
	require Test::NoWarnings;Test::NoWarnings->import;
	plan tests => 52+1;

	my $memd = AnyEvent::Memcached->new(
		servers   => [ "$host:$port" ],
		cv        => $cv,
		debug     => 0,
		%args,
		namespace => "AE::Memd::t/$$/" . (time() % 100) . "/",
	);

	isa_ok($memd, 'AnyEvent::Memcached');
	$cv->begin;
	$memd->set('cas2','val2',cb => sub { ok(shift,"set cas2 as val1") or diag "  Error: @_"; });
	$memd->set('cas1','val1',cb => sub {
		ok(shift,"set cas as val1") or diag "  Error: @_";
		$memd->gets('cas1',cb => sub {
			my $value = shift;
			if ($value) {
			ok $value, 'got result' or diag "  Error: @_";
			is ref $value,'ARRAY', 'retval is array';
			is $value->[1], 'val1', 'value correct';
			# Now, break the value
			$memd->set('cas1','val2',cb => sub {
				ok(shift,"set cas as val2") or diag "  Error: @_";
				$memd->cas('cas1', $value->[0], 'val3',cb => sub {
					ok(!shift,"try cas as val3");
					ok(!@_, 'cas have no errors') or diag "  Error: @_";
					$memd->gets('cas1',cb => sub {
						ok my $value = shift, 'gets again';
						$memd->cas('cas1', $value->[0], 'val4',cb => sub {
							ok(shift,"set cas as val4");
							ok(!@_, 'cas have no errors') or diag "  Error: @_";
							
							#Now, test 2 keys at once
							$memd->gets(['cas1','cas2'], cb => sub {
								ok my $values = shift, 'got gets* result' or diag "  Error: @_";
								is ref $values, 'HASH', 'retval is hash';
								ok exists $values->{cas1}, 'have cas1';
								ok exists $values->{cas2}, 'have cas2';
								is ref $values->{cas1}, 'ARRAY', 'value 1 correct';
								is ref $values->{cas2}, 'ARRAY', 'value 2 correct';
								$memd->cas('cas1', $values->{cas1}[0], 'val5',cb => sub {
									ok(shift,"set cas1 as val5");
									ok(!@_, 'cas1 have no errors') or diag "  Error: @_";
								});
								$memd->cas('cas2', $values->{cas2}[0], 'val5',cb => sub {
									ok(shift,"set cas2 as val5");
									ok(!@_, 'cas2 have no errors') or diag "  Error: @_";
								});
								
							});
							
						});
					});
				});
				
			});
			} else {
				my $error = shift;
				SKIP: {
					if ($error =~ /not enabled/) {
						skip "gets not enabled",19;
					} else {
						fail "gets failed";
						diag "$error";
						skip "gets failed",18;



( run in 0.855 second using v1.01-cache-2.11-cpan-39bf76dae61 )