Changeset 768

Show
Ignore:
Timestamp:
03/28/08 04:26:59 (5 months ago)
Author:
dormando
Message:

Most tests pass now. MultiGet is still busted.

Files:

Legend:

Unmodified
Added
Removed
Modified
Copied
Moved
  • branches/binary/server/t/binary.t

    r767 r768  
    2222use constant CMD_VERSION => 11; 
    2323 
    24 use constant CMD_GETS    => 50; 
    25 use constant CMD_CAS     => 51; 
    26  
    2724# CAS, Flags, expiration 
    2825use constant SET_PKT_FMT => "NNNN"; 
     
    197194         
    198195        { 
    199                 my $rv =()= eval { $mc->cas("x", 5, 19, 0x7FFFFFFFFF, "bad value") }; 
     196                my $rv =()= eval { $mc->set("x", 5, 19, "bad value", 0x7FFFFFFFFF) }; 
    200197                is($rv, 0, "Empty return on expected failure"); 
    201198                ok($@->not_found, "Error was 'not found' as expected"); 
     
    204201        $mc->add("x", 5, 19, "original value"); 
    205202 
    206         my ($flags, $i, $val) = $mc->gets("x"); 
     203        my ($flags, $val, $i) = $mc->get("x"); 
    207204        is($val, "original value", "->gets returned proper value"); 
    208          
    209        
    210                 my $rv =()= eval { $mc->cas("x", 5, 19, $i+1, "broken value") }; 
     205 
     206   
     207                my $rv =()= eval { $mc->set("x", 5, 19, "broken value", $i+1) }; 
    211208                is($rv, 0, "Empty return on expected failure (1)"); 
    212209                ok($@->exists, "Expected error state of 'exists' (1)"); 
    213210        } 
    214211 
    215         $mc->cas("x", 5, 19, $i, "new value"); 
    216  
    217         my ($newflags, $newi, $newval) = $mc->gets("x"); 
     212        $mc->set("x", 5, 19, "new value", $i); 
     213 
     214        my ($newflags, $newval, $newi) = $mc->get("x"); 
    218215        is($newval, "new value", "CAS properly overwrote value"); 
    219216 
    220217        { 
    221                 my $rv =()= eval { $mc->cas("x", 5, 19, $i, "replay value") }; 
     218                my $rv =()= eval { $mc->set("x", 5, 19, "replay value", $i) }; 
    222219                is($rv, 0, "Empty return on expected failure (2)"); 
    223220                ok($@->exists, "Expected error state of 'exists' (2)"); 
    224221        } 
    225222 
    226         (undef, undef, my $newval2) = $mc->gets("x"); 
     223        (undef, my $newval2) = $mc->get("x"); 
    227224        is($newval2, "new value", "CAS replay didn't overwrite value"); 
    228225} 
     
    330327        my $self = shift; 
    331328        my $rv = shift; # currently contains 4 bytes of 'flag' followed by value 
    332     my $cas  = substr $rv, 0, 8, ''; # $cas contains CAS value, $rv has f, v. 
    333         my $flag = substr $rv, 0, 4, ''; # Now $flag contains flags, $rv contains value 
    334         return unpack("N", $flag), $rv; 
     329        my $header = substr $rv, 0, 12, ''; 
     330        my ($ident_hi, $ident_lo, $flags) = unpack "NNN", $header; 
     331        my $ident = ($ident_hi * 2 ** 32) + $ident_lo; 
     332 
     333        return $flags, $rv, $ident; 
    335334} 
    336335 
     
    344343sub _mutate { 
    345344        my $self = shift; 
    346         my ($cmd, $key, $exp, $flags, $val) = @_; 
    347  
    348         return $self->_doCmd($cmd, $key, $val, pack(::SET_PKT_FMT, 0, 0, $flags, $exp)); 
     345        my ($cmd, $key, $exp, $flags, $val, $ident) = @_; 
     346 
     347    my $ident_hi = 0; 
     348    my $ident_lo = 0; 
     349    if ($ident) { 
     350        $ident_hi = int($ident / 2 ** 32); 
     351        $ident_lo = int($ident % 2 ** 32); 
     352    } 
     353 
     354        return $self->_doCmd($cmd, $key, $val, pack(::SET_PKT_FMT, $ident_hi, $ident_lo, $flags, $exp)); 
    349355} 
    350356 
    351357sub set { 
    352358        my $self = shift; 
    353         my ($key, $exp, $flags, $val) = @_; 
    354  
    355         return $self->_mutate(::CMD_SET, $key, $exp, $flags, $val); 
     359        my ($key, $exp, $flags, $val, $ident) = @_; 
     360 
     361        return $self->_mutate(::CMD_SET, $key, $exp, $flags, $val, $ident); 
    356362} 
    357363 
     
    427433} 
    428434 
    429 sub gets { 
     435sub old_gets { 
    430436        my $self = shift; 
    431437        my $key = shift; 
    432438 
    433         my $data = $self->_doCmd(::CMD_GETS, $key, ''); 
     439        my $data = $self->_doCmd(::CMD_GET, $key, ''); 
    434440        my $header = substr $data, 0, 12, ''; 
    435441        my ($flags, $ident_hi, $ident_lo) = unpack "NNN", $header; 
     
    437443 
    438444        return $flags, $ident, $data; 
    439 } 
    440  
    441 sub cas { 
    442         my $self = shift; 
    443         my ($key, $exp, $flags, $oldVal, $val) = @_; 
    444  
    445         my $oldVal_hi = int($oldVal / 2 ** 32); 
    446         my $oldVal_lo = int($oldVal % 2 ** 32); 
    447  
    448         return $self->_doCmd(::CMD_CAS, $key, $val, pack(::CAS_PKT_FMT, $flags, $exp, $oldVal_hi, $oldVal_lo)); 
    449445} 
    450446