| 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 | | |
|---|
| 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)); |
|---|
| | 359 | sub add { |
|---|
| | 360 | my $self = shift; |
|---|
| | 361 | my ($key, $exp, $flags, $val) = @_; |
|---|
| | 362 | return $self->_mutate(::CMD_ADD, $key, $exp, $flags, $val); |
|---|
| | 363 | } |
|---|
| | 364 | sub replace { |
|---|
| | 365 | my $self = shift; |
|---|
| | 366 | my ($key, $exp, $flags, $val) = @_; |
|---|
| | 367 | return $self->_mutate(::CMD_REPLACE, $key, $exp, $flags, $val); |
|---|
| | 368 | } |
|---|
| | 369 | |
|---|
| 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 | | |
|---|