public long decr(String key, long delta, long initValue) { try { return memcachedClient.decr(key, delta, initValue); } catch (Exception e) { throw new IllegalStateException(e.getMessage(), e); } }
public void testDecr() throws Exception { assertEquals(0, memcachedClient.decr("a", 5)); assertTrue(memcachedClient.set("a", 0, "100")); assertEquals(50, memcachedClient.decr("a", 50)); assertEquals(46, memcachedClient.decr("a", 4)); // test decr with initValue memcachedClient.delete("a"); assertEquals(100, memcachedClient.decr("a", 5, 100)); assertEquals(50, memcachedClient.decr("a", 50)); assertEquals(46, memcachedClient.decr("a", 4)); // test decr with initValue and expire time memcachedClient.delete("a"); assertEquals(1, memcachedClient.decr("a", 5, 1, 1000, 1)); Thread.sleep(2000); assertNull(memcachedClient.get("a")); // blank key new BlankKeyChecker() { @Override public void call() throws Exception { memcachedClient.decr("", 0, 1); } }.check(); // null key new BlankKeyChecker() { @Override public void call() throws Exception { memcachedClient.decr((String) null, 0, 1); } }.check(); // invalid key new InValidKeyChecker() { @Override public void call() throws Exception { memcachedClient.decr("test\r\n", 0, 1); } }.check(); new InValidKeyChecker() { @Override public void call() throws Exception { memcachedClient.decr("test test2", 0, 1); } }.check(); // key is too long new TooLongKeyChecker(memcachedClient) { @Override public void call() throws Exception { int keyLength = memcachedClient.getProtocol() == Protocol.Text ? 256 : 65536; StringBuilder sb = new StringBuilder(); for (int i = 0; i < keyLength; i++) { sb.append(i); } memcachedClient.decr(sb.toString(), 0, 1); } }.check(); }