Changeset 679

Show
Ignore:
Timestamp:
12/13/07 03:27:36 (1 year ago)
Author:
hachi
Message:

More working tests, attempt at 64bit on 32bit perl.

Files:

Legend:

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

    r678 r679  
    1111use constant CMD_GET     => 0; 
    1212use constant CMD_SET     => 1; 
    13 # CMD_ADD = 2 
    14 # CMD_REPLACE = 3 
     13use constant CMD_ADD     => 2; 
     14use constant CMD_REPLACE => 3; 
    1515use constant CMD_DELETE  => 4; 
    1616use constant CMD_INCR    => 5; 
     
    3333# 
    3434# amount, initial value, expiration 
    35 use constant INCRDECR_PKT_FMT => "xxxxNxxxxNN"; 
     35use constant INCRDECR_PKT_FMT => "NNNNN"; 
    3636# 
    3737use constant REQ_MAGIC_BYTE => 0x0f; 
     
    6767$set->('x', 5, 19, "somevalue"); 
    6868 
     69my $empty = sub { 
     70        my $key = shift; 
     71        my $rv =()= eval { $mc->get($key) }; 
     72        is($rv, 0, "Didn't get a result from get"); 
     73        ok($@->not_found, "We got a not found error when we expected one"); 
     74 
     75}; 
     76 
    6977my $delete = sub { 
    7078        my ($key, $when) = @_; 
    7179        $mc->delete($key, $when); 
    72         my $rv =()= eval { $mc->get($key) }; 
    73         is($rv, 0, "Didn't get a result from get"); 
    74         ok($@->not_found, "We got a not found error when we expected one"); 
     80        $empty->($key); 
    7581}; 
    7682 
    7783diag "Delete"; 
    7884$delete->('x'); 
     85 
     86diag "Flush"; 
     87{ 
     88        $set->('x', 5, 19, "somevaluex"); 
     89        $set->('y', 5, 17, "somevaluey"); 
     90        $mc->flush; 
     91        $empty->('x'); 
     92        $empty->('y'); 
     93} 
    7994 
    8095diag "Test increment"; 
     
    91106        $set->('y', 5, 19, "someothervalue"); 
    92107        $delete->('y', 1); 
    93         $mc->add('y', 5, 19, "yetanothervalue"); 
     108        my $rv =()= eval { $mc->add('y', 5, 19, "yetanothervalue") }; 
     109        is($rv, 0, "Add didn't return anything"); 
     110        ok($@->exists, "We got an exists error like we expected"); 
    94111        sleep 2; 
    95112        $mc->add('y', 5, 19, "wibblevalue"); 
    96113} 
    97114 
    98  
    99115<<EOT; 
    100     def testIncr(self): 
    101         """Simple incr test.""" 
    102         val=self.mc.incr("x") 
    103         self.assertEquals(0, val) 
    104         val=self.mc.incr("x") 
    105         self.assertEquals(1, val) 
    106         val=self.mc.incr("x", 211) 
    107         self.assertEquals(212, val) 
    108         val=self.mc.incr("x", 2**33) 
    109         self.assertEquals(8589934804L, val) 
    110  
    111     def testDecr(self): 
    112         """Simple decr test.""" 
    113         val=self.mc.incr("x", init=5) 
    114         self.assertEquals(5, val) 
    115         val=self.mc.decr("x") 
    116         self.assertEquals(4, val) 
    117         val=self.mc.decr("x", 211) 
    118         self.assertEquals(0, val) 
    119  
    120     def testReservedDelete(self): 
    121         """Test a delete with a reservation timestamp.""" 
    122         self.mc.set("x", 5, 19, "somevalue") 
    123         self.assertEquals((19, "somevalue"), self.mc.get("x")) 
    124         self.mc.delete("x", 1) 
    125         self.assertNotExists("x") 
    126         try: 
    127             self.mc.add("x", 5, 19, "ex2") 
    128             self.fail("Expected failure to add during timed delete") 
    129         except MemcachedError, e: 
    130             self.assertEquals(memcacheConstants.ERR_EXISTS, e.status) 
    131         time.sleep(1.1) 
    132         self.mc.add("x", 5, 19, "ex2") 
    133  
    134     def testFlush(self): 
    135         """Test flushing.""" 
    136         self.mc.set("x", 5, 19, "somevaluex") 
    137         self.mc.set("y", 5, 17, "somevaluey") 
    138         self.assertEquals((19, "somevaluex"), self.mc.get("x")) 
    139         self.assertEquals((17, "somevaluey"), self.mc.get("y")) 
    140         self.mc.flush() 
    141         self.assertNotExists("x") 
    142         self.assertNotExists("y") 
    143  
    144116 
    145117    def testAdd(self): 
     
    362334        my $self = shift; 
    363335        my ($cmd, $key, $amt, $init, $exp) = @_; 
    364         return $self->_doCmd($cmd, $key, '', pack(::INCRDECR_PKT_FMT, $amt, $init, $exp)); 
     336        return $self->_doCmd($cmd, $key, '', pack(::INCRDECR_PKT_FMT, $amt >> 32, 0xFFFFFFFF & $amt, $init >> 32, 0xFFFFFFFF & $init, $exp)); 
    365337} 
    366338 
     
    385357} 
    386358 
     359sub add { 
     360        my $self = shift; 
     361        my ($key, $exp, $flags, $val) = @_; 
     362        return $self->_mutate(::CMD_ADD, $key, $exp, $flags, $val); 
     363} 
     364sub replace { 
     365        my $self = shift; 
     366        my ($key, $exp, $flags, $val) = @_; 
     367        return $self->_mutate(::CMD_REPLACE, $key, $exp, $flags, $val); 
     368} 
     369 
    387370<<EOT; 
    388     def incr(self, key, amt=1, init=0, exp=0): 
    389         """Increment or create the named counter.""" 
    390         return self.__incrdecr(memcacheConstants.CMD_INCR, key, amt, init, exp) 
    391  
    392     def decr(self, key, amt=1, init=0, exp=0): 
    393         """Decrement or create the named counter.""" 
    394         return self.__incrdecr(memcacheConstants.CMD_INCR, key, 0-amt, init, 
    395             exp) 
    396  
    397     def add(self, key, exp, flags, val): 
    398         """Add a value in the memcached server iff it doesn't already exist.""" 
    399         self._mutate(memcacheConstants.CMD_ADD, key, exp, flags, val) 
    400  
    401     def replace(self, key, exp, flags, val): 
    402         """Replace a value in the memcached server iff it already exists.""" 
    403         self._mutate(memcacheConstants.CMD_REPLACE, key, exp, flags, val) 
    404  
    405371    def gets(self, key): 
    406372        """Get with an identifier (for cas).""" 
     
    492458        return $self->[0] == ERR_NOT_FOUND; 
    493459} 
     460 
     461sub exists { 
     462        my $self = shift; 
     463 
     464        return $self->[0] == ERR_EXISTS; 
     465}