public void testCAS() throws Exception { memcachedClient.add("name", 0, "dennis"); GetsResponse<String> getsResponse = memcachedClient.gets("name"); assertEquals("dennis", getsResponse.getValue()); final CASOperation<String> operation = new CASOperation<String>() { public int getMaxTries() { return 1; } public String getNewValue(long currentCAS, String currentValue) { return "zhuang"; } }; assertTrue(memcachedClient.cas("name", getsResponse, operation)); assertEquals("zhuang", memcachedClient.get("name")); getsResponse = memcachedClient.gets("name"); memcachedClient.set("name", 0, "dennis"); // cas fail assertFalse(memcachedClient.cas("name", 0, "zhuang", getsResponse.getCas())); assertEquals("dennis", memcachedClient.get("name")); // blank key new BlankKeyChecker() { @Override public void call() throws Exception { memcachedClient.cas("", operation); } }.check(); // null key new BlankKeyChecker() { @Override public void call() throws Exception { memcachedClient.cas((String) null, operation); } }.check(); // invalid key new InValidKeyChecker() { @Override public void call() throws Exception { memcachedClient.cas("test\r\n", operation); } }.check(); new InValidKeyChecker() { @Override public void call() throws Exception { memcachedClient.cas("test test2", operation); } }.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.cas(sb.toString(), operation); } }.check(); }
public void testGets() throws Exception { memcachedClient.add("name", 0, "dennis"); GetsResponse<String> getsResponse = memcachedClient.gets("name"); GetsResponse<String> oldGetsResponse = getsResponse; assertEquals("dennis", getsResponse.getValue()); long oldCas = getsResponse.getCas(); getsResponse = memcachedClient.gets("name", 2000, new StringTranscoder()); assertEquals("dennis", getsResponse.getValue()); // check the same assertEquals(oldCas, getsResponse.getCas()); assertEquals(oldGetsResponse, getsResponse); memcachedClient.set("name", 0, "zhuang"); getsResponse = memcachedClient.gets("name", 2000); assertEquals("zhuang", getsResponse.getValue()); assertFalse(oldCas == getsResponse.getCas()); // blank key new BlankKeyChecker() { @Override public void call() throws Exception { memcachedClient.gets(""); } }.check(); // null key new BlankKeyChecker() { @Override public void call() throws Exception { memcachedClient.gets((String) null); } }.check(); // invalid key new InValidKeyChecker() { @Override public void call() throws Exception { memcachedClient.gets("test\r\n"); } }.check(); new InValidKeyChecker() { @Override public void call() throws Exception { memcachedClient.gets("test test2"); } }.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.gets(sb.toString()); } }.check(); // client is shutdown try { memcachedClient.shutdown(); memcachedClient.gets("name"); fail(); } catch (MemcachedException e) { assertEquals("Xmemcached is stopped", e.getMessage()); } }