Changeset 655

Show
Ignore:
Timestamp:
12/02/07 05:49:39 (1 year ago)
Author:
dormando
Message:

More cas tests by Chris Goffinet and Tomash Brechko

Files:

Legend:

Unmodified
Added
Removed
Modified
Copied
Moved
  • trunk/server/t/cas.t

    r639 r655  
    22 
    33use strict; 
    4 use Test::More tests => 10
     4use Test::More tests => 31
    55use FindBin qw($Bin); 
    66use lib "$Bin/lib"; 
     
    1010my $server = new_memcached(); 
    1111my $sock = $server->sock; 
     12my $sock2 = $server->new_sock; 
     13 
    1214my @result; 
     15my @result2; 
     16 
     17ok($sock != $sock2, "have two different connections open"); 
    1318 
    1419# gets foo (should not exist) 
     
    5156print $sock "cas foo 0 0 6 \r\nbarva2\r\n"; 
    5257is(scalar <$sock>, "ERROR\r\n", "cas empty, throw error"); 
     58# cant parse barval2\r\n 
     59is(scalar <$sock>, "ERROR\r\n", "error out on barval2 parsing"); 
    5360 
     61# set foo1 
     62print $sock "set foo1 0 0 1\r\n1\r\n"; 
     63is(scalar <$sock>, "STORED\r\n", "set foo1"); 
     64# set foo2 
     65print $sock "set foo2 0 0 1\r\n2\r\n"; 
     66is(scalar <$sock>, "STORED\r\n", "set foo2"); 
     67 
     68# gets foo1 check 
     69print $sock "gets foo1\r\n"; 
     70ok(scalar <$sock> =~ /VALUE foo1 0 1 (\d+)\r\n/, "gets foo1 regexp success"); 
     71my $foo1_cas = $1; 
     72is(scalar <$sock>, "1\r\n","gets foo1 data is 1"); 
     73is(scalar <$sock>, "END\r\n","gets foo1 END"); 
     74 
     75# gets foo2 check 
     76print $sock "gets foo2\r\n"; 
     77ok(scalar <$sock> =~ /VALUE foo2 0 1 (\d+)\r\n/,"gets foo2 regexp success"); 
     78my $foo2_cas = $1; 
     79is(scalar <$sock>, "2\r\n","gets foo2 data is 2"); 
     80is(scalar <$sock>, "END\r\n","gets foo2 END"); 
     81 
     82# validate foo1 != foo2 
     83ok($foo1_cas != $foo2_cas,"foo1 != foo2 single-gets success"); 
     84 
     85# multi-gets 
     86print $sock "gets foo1 foo2\r\n"; 
     87ok(scalar <$sock> =~ /VALUE foo1 0 1 (\d+)\r\n/, "validating first set of data is foo1"); 
     88$foo1_cas = $1; 
     89is(scalar <$sock>, "1\r\n",, "validating foo1 set of data is 1"); 
     90ok(scalar <$sock> =~ /VALUE foo2 0 1 (\d+)\r\n/, "validating second set of data is foo2"); 
     91$foo2_cas = $1; 
     92is(scalar <$sock>, "2\r\n", "validating foo2 set of data is 2"); 
     93is(scalar <$sock>, "END\r\n","validating foo1,foo2 gets is over - END"); 
     94 
     95# validate foo1 != foo2 
     96ok($foo1_cas != $foo2_cas, "foo1 != foo2 multi-gets success"); 
     97 
     98### simulate race condition with cas 
     99 
     100# gets foo1 - success 
     101@result = mem_gets($sock, "foo1"); 
     102ok($result[0] != "", "sock - gets foo1 is not empty"); 
     103 
     104# gets foo2 - success 
     105@result2 = mem_gets($sock2, "foo1"); 
     106ok($result2[0] != "","sock2 - gets foo1 is not empty"); 
     107 
     108print $sock "cas foo1 0 0 6 $result[0]\r\nbarva2\r\n"; 
     109print $sock2 "cas foo1 0 0 5 $result2[0]\r\napple\r\n"; 
     110 
     111is(scalar <$sock>, "STORED\r\n", "cas success, set foo1"); 
     112is(scalar <$sock2>, "EXISTS\r\n", "cas failed for foo1");