/*
|
* Copyright 2009 Joubin Mohammad Houshyar
|
*
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
* you may not use this file except in compliance with the License.
|
* You may obtain a copy of the License at
|
*
|
* http://www.apache.org/licenses/LICENSE-2.0
|
*
|
* Unless required by applicable law or agreed to in writing, software
|
* distributed under the License is distributed on an "AS IS" BASIS,
|
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
* See the License for the specific language governing permissions and
|
* limitations under the License.
|
*/ |
|
package org.jredis.ri.alphazero; |
|
import java.io.Serializable; |
import java.util.ArrayList; |
import java.util.HashSet; |
import java.util.List; |
import java.util.Map; |
import java.util.Random; |
import java.util.Set; |
|
import org.jredis.JRedis; |
import org.jredis.RedisException; |
import org.jredis.RedisInfo; |
import org.jredis.RedisType; |
import org.jredis.ri.alphazero.JRedisClient; |
import org.jredis.ri.alphazero.support.Encode; |
import org.jredis.ri.alphazero.support.Log; |
|
import junit.framework.TestCase; |
|
|
publicclassJRedisClientTestextendsTestCase{ |
|
// ------------------------------------------------------------------------ |
// TEST SETUP Consts |
// ------------------------------------------------------------------------ |
// we'll use some unlikely numbers just in case someone runs this and |
// their data gets hosed! .. |
// TODO: note this in the docs! |
/** One of the databases we'll use -- this is #10 */ |
staticint DB1 =10; |
/** One of the databases we'll use -- this is #13 */ |
staticint DB2 =13; |
|
staticint SMALL_DATA = 128; |
staticint MEDIUM_DATA =1024*2; |
staticint LARGE_DATA = 1024*512; |
|
// ------------------------------------------------------------------------ |
// TEST KEYS AND DATA |
// ------------------------------------------------------------------------ |
privateJRedis redis; |
privateString password; |
|
finalRandom random =newRandom(System.currentTimeMillis()); |
|
// we'll uses these for values |
finalList<byte[]> dataList =newArrayList<byte[]>(); |
finalList<TestBean> objectList =newArrayList<TestBean>(); |
finalList<String> stringList =newArrayList<String>(); |
finalList<String> patternList =newArrayList<String>(); |
finalList<Integer> intList =newArrayList<Integer>(); |
finalList<Long> longList=newArrayList<Long>(); |
|
finalSet<String> uniqueSet =newHashSet<String>(); |
finalSet<String> commonSet =newHashSet<String>(); |
finalSet<String> set1 =newHashSet<String>(); |
finalSet<String> set2 =newHashSet<String>(); |
|
finalint smallcnt =10; |
finalint mediumcnt =1000; |
finalint largecnt =100000; |
|
finalString patternA ="_AAA_"; |
int cnt; |
|
finalbyte[] smallData = getRandomBytes(SMALL_DATA); |
finalbyte[] mediumData = getRandomBytes(MEDIUM_DATA); |
finalbyte[] largeData = getRandomBytes(LARGE_DATA); |
|
finalList<String> keys =newArrayList<String>(); |
|
String key =null; |
byte bytevalue; |
String stringvalue; |
int intValue; |
long longValue; |
TestBean objectvalue; |
|
// ------------------------------------------------------------------------ |
// JUNIT |
// ------------------------------------------------------------------------ |
protectedvoid setUp()throwsException{ |
super.setUp(); |
|
Log.log("TEST: generating random test data ..."); |
|
/** setup data */ |
cnt = mediumcnt; |
for(int i=0; i<cnt; i++){ |
keys.add(getRandomString (48)); |
patternList.add(getRandomString(random.nextInt(10)+2)+ patternA + getRandomString(random.nextInt(10)+2)); |
uniqueSet.add(getRandomString(48)); |
commonSet.add(getRandomString(48)); |
set1.add("set_1"+ getRandomString(20)); |
set2.add("set_2"+ getRandomString(20)); |
dataList.add(getRandomBytes (128)); |
stringList.add(getRandomString (128)); |
objectList.add(newTestBean("testbean."+ i)); |
intList.add(random.nextInt()); |
longList.add(random.nextLong()); |
} |
for(String m : commonSet){ |
set1.add(m); |
set2.add(m); |
} |
|
password ="jredis"; |
|
/** create client, connect and authorize with Redis + a ping */ |
Log.log("TEST: creating and authorizing with localhost server (using password %s) ...", password); |
try{ |
redis =newJRedisClient().auth(password).ping(); |
} |
catch(RedisException e){ |
Log.error("Test setup create - connect - authorize: "+ e.getLocalizedMessage()); |
throw e; |
} |
|
/** flush our two dbs */ |
Log.log("TEST: Flushing the test dbs (using %d and %d) ...", DB1, DB2); |
try{ |
redis.select(DB1).flushdb(); |
redis.select(DB2).flushdb(); |
} |
catch(RedisException e){ |
Log.error("Test setup create - flushing DBs: "+ e.getLocalizedMessage()); |
throw e; |
} |
} |
|
protectedvoid tearDown()throwsException{ |
super.tearDown(); |
/** just need to quit so connection is closed - a test on its own*/ |
try{ |
redis.quit(); |
} |
catch(Exception e){ |
Log.error("Test tearDown failure: "+ e.getLocalizedMessage()); |
throw e; |
} |
} |
|
// ------------------------------------------------------------------------ |
// *** TESTS *** |
// EXPIRE |
// ------------------------------------------------------------------------ |
|
publicvoid testInit(){ |
Log.log("TEST: testing new and doX() for various permutations ..."); |
Log.log("TEST: ing new and basic initial doX() for various permutations ..."); |
|
try{ |
JRedis r =newJRedisClient().ping(); |
r.quit(); |
} |
catch(RedisException e){ |
Log.error("Test setup create - connect - ping: "+ e.getLocalizedMessage()); |
fail("init failed: "+ e.getLocalizedMessage()); |
} |
Log.log("TEST: PING"); |
|
try{ |
JRedis r =newJRedisClient(); |
r.smembers("no-such-set"); |
r.quit(); |
} |
catch(RedisException e){ |
Log.error("Test setup create - connect - smembers: "+ e.getLocalizedMessage()); |
fail("init failed: "+ e.getLocalizedMessage()); |
} |
Log.log("TEST: new() -> SMEMBERS on non-exist set ->quit()"); |
|
boolean expectedError =false; |
try{ |
String not_a_set ="not-a-set"; |
JRedis r =newJRedisClient(); |
r.set(not_a_set,"a value"); |
r.smembers(not_a_set); |
} |
catch(RedisException e){ expectedError =true;} |
finally{ |
if(!expectedError){ |
Log.error("Test "); |
fail("Did not raise expected ERR on operating on key of wrong type "); |
} |
} |
Log.log("TEST: new() -> set(key) -> SMEMBERS (key) ->quit()"); |
|
try{ |
redis =newJRedisClient(); |
redis.incr("__jredisclienttestkey__"); // sorry, but can't do a select if this test is to be meaningful |
} |
catch(RedisException e){ |
Log.error("Test setup create - connect - authorize: "+ e.getLocalizedMessage()); |
fail("init failed: "+ e.getLocalizedMessage()); |
} |
} |
// ------------------------------------------------------------------------ |
// *** TESTS *** Commands operating on DBs |
// EXPIRE EXISTS SAVE SAVEBG LASTSAVE |
// ------------------------------------------------------------------------ |
|
publicvoid testDBCommands (){ |
Log.log("TEST: test expire... this will Thread.sleep for a few secs ..."); |
|
try{ redis.select(DB1).flushdb();} |
catch(RedisException e1){ |
e1.printStackTrace(); |
fail("error SELECTing database => "+ e1.getLocalizedMessage()); |
} |
|
try{ |
redis.select (DB1).flushdb(); |
assertTrue(redis.dbsize()==0); |
|
key ="expire-me"; |
|
redis.set(key,System.currentTimeMillis()); |
assertTrue (redis.exists(key)); |
|
redis.expire(key,1); |
assertTrue (redis.exists(key)); |
|
Thread.sleep(500); |
assertTrue (redis.exists(key)); |
|
Thread.sleep(2000); |
assertFalse (redis.exists(key)); |
|
long when = redis.lastsave(); |
redis.save(); |
long when2 = redis.lastsave(); |
assertTrue(when != when2); |
} |
catch(RedisException e1){ |
e1.printStackTrace(); |
fail("error => "+ e1.getLocalizedMessage()); |
} |
catch(InterruptedException e){ |
fail ("thread was interrupted and test did not conclude"+ e.getLocalizedMessage()); |
} |
} |
|
// ------------------------------------------------------------------------ |
// *** TESTS *** Commands operating on Lists |
// RPUSH LPUSH LLEN LRANGE TRIM LINDEX LSET LREM LPOP RPOP |
// ------------------------------------------------------------------------ |
publicvoid testListCommands (){ |
Log.log("TEST: test Commands Operating On Sets..."); |
|
try{ redis.select(DB1).flushdb();} |
catch(RedisException e1){ |
e1.printStackTrace(); |
fail("error SELECTing database => "+ e1.getLocalizedMessage()); |
} |
String key1 ="list1"; |
String key2 ="list2"; |
try{ |
for(String item : stringList){ |
redis.lpush (key1, item); |
redis.rpush (key2, item); |
} |
List<String> range1 =Encode.toStr(redis.lrange(key1,0,Integer.MAX_VALUE)); |
List<String> range2 =Encode.toStr(redis.lrange(key2,0,Integer.MAX_VALUE)); |
assertTrue(range1.size()== stringList.size()); |
assertTrue(range2.size()== stringList.size()); |
for(String s : stringList){ |
assertTrue(range1.contains(s)); |
assertTrue(range2.contains(s)); |
} |
for(int i=0; i<stringList.size(); i++){ |
assertTrue (stringList.get(i).equals(range1.get(stringList.size()-i-1))); |
assertTrue (stringList.get(i).equals(range2.get(i))); |
} |
|
key ="num-list"; |
for(int i=0; i<10; i++){ |
redis.lpush (key, i); |
} |
assertTrue ("LLEN", redis.llen(key)==10); |
assertTrue ("LREM", redis.lrem (key,2,0)==1); |
assertTrue ("LLEN", redis.llen(key)==9); |
|
redis.ltrim(key,2,4); |
assertTrue("Testing LTRIM", redis.llen(key)==3); |
|
redis.lpush(key,"aaaa"); |
redis.lpush(key,"bbbb"); |
redis.lpush(key,"cccc"); |
redis.lset(key,0,"number zero"); |
assertTrue("Testint LIndex",Encode.toStr(redis.lindex(key,0)).equals("number zero")); |
|
redis.lset(key,1,"number nine"); |
assertTrue("Testint LIndex",Encode.toStr(redis.lindex(key,1)).equals("number nine")); |
|
redis.flushdb(); |
|
for(String item : stringList) |
redis.lpush (key1, item);// LPUSH is list.add, RPUSH is list.push |
|
for(@SuppressWarnings("unused")String foo : stringList) |
redis.lpop(key1); |
|
assertTrue("Testing LPOP", redis.llen(key1)==0); |
|
redis.flushdb(); |
for(int i=0; i<100; i++) |
redis.rpush(key1, i); |
|
for(int i=0; i<100; i++) |
assertTrue("Testing RPOP and encode as well",Encode.toInt(redis.rpop(key1))==99-i); |
|
redis.flushdb(); |
for(int i=0; i<100; i++) |
redis.lpush(key1, i); |
|
for(int i=0; i<100; i++) |
assertTrue("Testing LPOP and encode as well",Encode.toInt(redis.lpop(key1))==99-i); |
|
} |
catch(RedisException e1){ |
e1.printStackTrace(); |
fail("error => "+ e1.getLocalizedMessage()); |
} |
|
} |
// ------------------------------------------------------------------------ |
// *** TESTS *** Commands operating on Sets |
// SADD SREM SCARD SISMEMBER SINTER SINTERSTORE SMEMBERS |
// ------------------------------------------------------------------------ |
publicvoid testSetCommands (){ |
Log.log("TEST: test Commands Operating On Sets..."); |
|
try{ redis.select(DB1).flushdb();} |
catch(RedisException e1){ |
e1.printStackTrace(); |
fail("error SELECTing database => "+ e1.getLocalizedMessage()); |
} |
try{ |
String key1 ="set1"; |
String key2 ="set2"; |
|
String keyunique ="unique"; |
for(String member : set1){ |
assertTrue(redis.sadd(key1, member)); |
} |
assertTrue(redis.scard(key1)== set1.size()); |
for(String member : set1){ |
assertTrue(redis.sismember(key1, member)); |
} |
List<String> redisSet1Members =Encode.toStr(redis.smembers(key1)); |
assertTrue(redisSet1Members.size()== set1.size()); |
|
for(String member : set2){ |
assertTrue(redis.sadd(key2, member)); |
} |
assertTrue(redis.scard(key2)== set2.size()); |
for(String member : set2){ |
assertTrue(redis.sismember(key2, member)); |
} |
List<String> redisSet2Members =Encode.toStr(redis.smembers(key2)); |
assertTrue(redisSet2Members.size()== set2.size()); |
|
|
for(String member : uniqueSet){ |
assertTrue(redis.sadd(keyunique, member)); |
} |
|
assertTrue(redis.sinter(keyunique, key1).size()==0); |
assertTrue(redis.sinter(keyunique, key2).size()==0); |
assertTrue(redis.sinter(keyunique, key1, key2).size()==0); |
assertFalse(redis.sinter(keyunique, key1, key2).size()== commonSet.size()); |
assertTrue(redis.sinter(key1, key2).size()== commonSet.size()); |
|
String storeKey ="common-set-stored"; |
redis.sinterstore(storeKey, key1, key2); |
for(String m : commonSet){ |
assertTrue (redis.sismember(storeKey, m)); |
assertTrue (redis.srem(key1, m)); |
} |
assertTrue(redis.sinter(key1, key2).size()==0); |
|
redis.flushdb(); |
|
} |
catch(RedisException e1){ |
e1.printStackTrace(); |
fail("error => "+ e1.getLocalizedMessage()); |
} |
|
} |
// ------------------------------------------------------------------------ |
// *** TESTS *** Using JAVA OBJECTS -- not exhaustive -- just samply some |
// key redis actions SET GET SADD RPUSH, etc. |
// ------------------------------------------------------------------------ |
publicvoid testJavaObjects (){ |
Log.log("TEST: test Commands Operating On String Values and Key Space..."); |
|
try{ redis.select(DB1).flushdb();} |
catch(RedisException e1){ |
e1.printStackTrace(); |
fail("error SELECTing database => "+ e1.getLocalizedMessage()); |
} |
|
try{ |
/* as STRING values */ |
TestBean redisBean =null; |
for(int i=0; i<objectList.size(); i++){ |
redis.set(keys.get(i), objectList.get(i)); |
redisBean =Encode.decode(redis.get(keys.get(i))); |
assertEquals(objectList.get(i), redisBean); |
} |
|
/* as SET values */ |
redis.flushdb(); |
String objectSet ="test-beans"; |
redisBean =null; |
for(int i=0; i<smallcnt; i++){ |
redis.sadd(objectSet, objectList.get(i)); |
} |
// TODO: redo using semantic interface |
// List<TestBean> redisBeanList = Encode.decode(redis.smembers(objectSet)); |
// for (int i=0; i<smallcnt; i++){ |
// assertTrue(redisBeanList.contains(objectList.get(i))); |
// } |
|
/* as LIST values */ |
redis.flushdb(); |
String listkey ="test-beans"; |
redisBean =null; |
for(int i=0; i<smallcnt; i++){ |
redis.rpush(listkey, objectList.get(i)); |
} |
|
// TODO: redo using semantic interface |
// List<TestBean> redisRange = Encode.decode(redis.lrange(listkey, 0, smallcnt)); |
// for (int i=0; i<smallcnt; i++){ |
// assertTrue(redisRange.contains(objectList.get(i))); |
// } |
|
} |
catch(RedisException e1){ |
e1.printStackTrace(); |
fail("error => "+ e1.getLocalizedMessage()); |
} |
} |
// ------------------------------------------------------------------------ |
// *** TESTS *** "STRING" VALUES |
// GET, SET, SETNX, MGET, EXISTS, DEL, TYPE |
// INCR, INCRBY, DECR, DECRBY |
// *** TESTS *** KEY SPACE |
// KEYS, RANDOMKEY, RENAME, RENAMENX, DBSIZE [checked] |
// ------------------------------------------------------------------------ |
publicvoid testCommandsOperatingOnStringValues () { |
Log.log("TEST: test Commands Operating On String Values and Key Space..."); |
|
try{ redis.select(DB1);} |
catch(RedisException e1){ |
e1.printStackTrace(); |
fail("error SELECTing database => "+ e1.getLocalizedMessage()); |
} |
/* SET GET SETNX MGET DEL EXISTS TYPE */ |
try{ |
byte[] value; |
byte[] redisvalue; |
for(int i=0; i<cnt; i++){ |
key = keys.get(i); |
value = dataList.get(i); |
|
redis.set(key, value); |
assertTrue(redis.exists(key)); |
redisvalue = redis.get(key); |
|
assertTrue(value.length == redisvalue.length); |
for(int j=0; j<value.length; j++) |
assertTrue(value[j]==redisvalue[j]); |
} |
|
assertNotNull(redis.get(key)); |
assertFalse(redis.setnx(key,"the key is already set!")); |
|
assertTrue(redis.del(key)); |
assertFalse(redis.del(key)); |
assertTrue(redis.setnx(key,"the key is ready to be set again!")); |
|
List<byte[]> mgetBytes = redis.mget(keys.get(random.nextInt(keys.size())), keys.get(random.nextInt(keys.size())), keys.get(random.nextInt(keys.size()))); |
for(int i=0; i<mgetBytes.size(); i++) |
assertNotNull(mgetBytes.get(i)); |
|
mgetBytes = redis.mget("not_there", keys.get(random.nextInt(keys.size())), keys.get(random.nextInt(keys.size())), keys.get(random.nextInt(keys.size()))); |
assertNull(mgetBytes.get(0)); |
for(int i=1; i<mgetBytes.size(); i++) |
assertNotNull(mgetBytes.get(i)); |
|
mgetBytes = redis.mget("not_there","not_there","not_there","not_there", keys.get(random.nextInt(keys.size()))); |
assertNotNull(mgetBytes.get(mgetBytes.size()-1)); |
for(int i=0; i<mgetBytes.size()-1; i++) |
assertNull(mgetBytes.get(i)); |
|
redis.flushdb(); |
|
redis.set ("string_key","bar"); |
redis.sadd ("set_key","member"); |
redis.rpush ("list_key","item"); |
assertTrue(redis.type("string_key")==RedisType.string); |
assertTrue(redis.type("set_key")==RedisType.set); |
assertTrue(redis.type("list_key")==RedisType.list); |
|
redis.flushdb(); |
|
} |
catch(RedisException e1){ |
e1.printStackTrace(); |
fail("error => "+ e1.getLocalizedMessage()); |
} |
|
/* INCR INCRBY DECR DECRBY */ |
try{ |
redis.flushdb(); |
// int cntr = 0; |
// String cntr_key = keys.get(0); |
// for(int i = 1; i<mediumcnt; i++){ |
// cntr = redis.incr(cntr_key); |
// assertEquals(i, cntr); |
// } |
// for(int i=cntr-1; i>=0; i--){ |
// cntr = redis.decr(cntr_key); |
// assertEquals(i, cntr); |
// } |
// assertEquals(0, cntr); |
// for(int i = 1; i<mediumcnt; i++){ |
// cntr = redis.incrby(cntr_key, 10); |
// assertEquals(i*10, cntr); |
// } |
// redis.set(cntr_key, 0); |
// assertTrue(0 == Encode.toInt(redis.get(cntr_key))); |
// for(int i = 1; i<mediumcnt; i++){ |
// cntr = redis.decrby(cntr_key, 10); |
// assertEquals(i*-10, cntr); |
// } |
long cntr =0; |
String cntr_key = keys.get(0); |
for(int i =1; i<mediumcnt; i++){ |
cntr = redis.incr(cntr_key); |
assertEquals(i, cntr); |
} |
for(long i=cntr-1; i>=0; i--){ |
cntr = redis.decr(cntr_key); |
assertEquals(i, cntr); |
} |
assertEquals(0, cntr); |
for(long i =1; i<mediumcnt; i++){ |
cntr = redis.incrby(cntr_key,10); |
assertEquals(i*10, cntr); |
} |
redis.set(cntr_key,0); |
assertTrue(0==Encode.toInt(redis.get(cntr_key))); |
for(long i =1; i<mediumcnt; i++){ |
cntr = redis.decrby(cntr_key,10); |
assertEquals(i*-10, cntr); |
} |
|
redis.flushdb(); |
|
long value = redis.incrby(cntr_key,Integer.MAX_VALUE -1); |
for(long i =0; i <200; i++) |
value = redis.incr(cntr_key); |
|
Log.log("using the new long signature -- %d is long", value); |
Log.log(" that's max int -- %d ",Integer.MAX_VALUE); |
|
|
for(long i =0; i <200; i++) |
value = redis.incrby (cntr_key,Integer.MAX_VALUE); |
|
Log.log("using the new long signature -- %d is long", value); |
Log.log(" that's max int -- %d ",Integer.MAX_VALUE); |
} |
catch(RedisException e1){ |
e1.printStackTrace(); |
fail("error => "+ e1.getLocalizedMessage()); |
} |
/* KEYS RANDOMKEY KEY(PATTERN) RENAME RENAMENX DBSIZE MOVE*/ |
String key =null; |
try{ |
Log.log("TEST: test Commands Operating On Key Space in database %d ...", DB1); |
|
redis.flushdb(); |
|
byte[] value; |
List<String> redisKeys =null; |
for(int i=0; i<keys.size(); i++){ |
key = keys.get(i); |
value = dataList.get(i); |
redis.set(key, value); |
} |
redisKeys = redis.keys(); |
for(int i=0; i<keys.size(); i++) assertTrue(redisKeys.contains(keys.get(i))); |
|
String newkey =null; |
byte[] redisvalue =null; |
for(int i=0; i<cnt; i++) |
{ |
key = keys.get(i); |
value = dataList.get(i); |
redisvalue = redis.get(key); |
assertTrue(value.length == redisvalue.length); |
for(int j=0; j<value.length; j++) |
assertTrue(value[j]==redisvalue[j]); |
|
newkey = getRandomString (random.nextInt(24)+2); |
redis.rename(key, newkey); |
redisvalue = redis.get(newkey); |
assertTrue(value.length == redisvalue.length); |
for(int j=0; j<value.length; j++) |
assertTrue(value[j]==redisvalue[j]); |
} |
|
assertTrue(redis.renamenx(newkey, key)); |
boolean expectedException =false; |
try{ |
redis.renamenx(key, key); |
} |
catch(RedisException expected){ expectedException =true;} |
finally{ |
assertTrue(expectedException); |
} |
|
redis.flushdb(); |
assertTrue (redis.dbsize()==0); |
|
for(int i=0; i<patternList.size(); i++){ |
key = patternList.get(i); |
value = dataList.get(i); |
redis.set(key, value); |
} |
assertTrue (redis.dbsize()== patternList.size()); |
|
redisKeys = redis.keys("*"+patternA+"*"); |
for(int i=0; i<keys.size(); i++) |
assertTrue("missing: "+ patternList.get(i), redisKeys.contains(patternList.get(i))); |
|
redis.flushdb(); |
assertTrue (redis.dbsize()==0); |
|
/* MOVE */ |
try{ |
redis.select(DB1).flushdb(); |
assertTrue(redis.dbsize()==0); |
|
redis.select(DB2).flushdb(); |
assertTrue(redis.dbsize()==0); |
|
// DB2 now .. |
for(int i=0; i<keys.size(); i++){ |
key = keys.get(i); |
value = dataList.get(i); |
redis.set(key, value); |
} |
assertTrue(redis.dbsize()== keys.size()); |
for(int i=0; i<keys.size(); i++){ |
key = keys.get(i); |
redis.move (key, DB1); |
} |
// DB2 should be empty again |
assertTrue(redis.dbsize()==0); |
|
redis.select(DB1); |
assertTrue(redis.dbsize()== keys.size()); |
for(int i=0; i<keys.size(); i++){ |
key = keys.get(i); |
assertTrue (redis.exists (key)); |
} |
// move them back |
for(int i=0; i<keys.size(); i++){ |
key = keys.get(i); |
redis.move (key, DB2); |
} |
assertTrue(redis.dbsize()==0); |
|
redis.flushall(); |
for(int i=0; i<Math.max(DB2, DB1); i++){ |
assertTrue(redis.select(i).dbsize()==0); |
} |
|
// finally |
Map<String,String> infoMap = redis.info(); |
for(RedisInfo info :RedisInfo.values()){ |
assertNotNull(infoMap.get(info.name())); |
Log.log("%s => %s", info.name(), infoMap.get(info.name())); |
} |
|
} |
catch(RedisException e1){ |
e1.printStackTrace(); |
fail("error SELECTing database => "+ e1.getLocalizedMessage()); |
} |
} |
catch(RedisException e){ |
e.printStackTrace(); |
fail("error testing KEYS => "+ e.getLocalizedMessage()); |
} |
} |
|
// ------------------------------------------------------------------------ |
// Helper methods |
// ------------------------------------------------------------------------ |
protectedString getRandomString (int size){ |
StringBuilder builder =new StringBuilder(size); |
for(int i =0; i<size; i++){ |
char c =(char)(random.nextInt(126-33)+33); |
builder.append(c); |
} |
return builder.toString(); |
} |
protectedbyte[] getRandomBytes(int size){ |
int len = size; |
byte[] bigstuff =newbyte[len]; |
random.nextBytes(bigstuff); |
return bigstuff; |
} |
publicvoid compareLists (List<String> strL1,List<String> strL2){ |
for(int i=0; i<strL1.size(); i++){ |
assertTrue(strL2.contains(strL1.get(i))); |
} |
} |
// ------------------------------------------------------------------------ |
// INNER TYPES USED FOR TESTING |
// ------------------------------------------------------------------------ |
publicstaticclassTestBeanimplementsSerializable{ |
/** */ |
privatestaticfinallong serialVersionUID =4457509786469904810L; |
protectedfinallong getCreated_on(){return created_on;} |
protectedfinalvoid setCreated_on(long created_on){this.created_on = created_on;} |
protectedfinalString getName(){return name;} |
protectedfinalvoid setName(String name){this.name = name;} |
protectedfinalbyte[] getData(){return data;} |
protectedfinalvoid setData(byte[] data){this.data = data;} |
privatelong created_on; |
privateString name; |
privatebyte[] data; |
publicTestBean(){created_on =System.currentTimeMillis();} |
publicTestBean(String string){this(); name = string;} |
@OverridepublicString toString(){return"["+ getClass().getSimpleName()+" | name: "+ getName()+" created on: "+ getCreated_on()+"]";} |
@Overridepublicboolean equals (Object o){ |
boolean res =false; |
try{ |
TestBean isItMe =(TestBean) o; |
res = isItMe.getName().equals(name)&& isItMe.getCreated_on()==this.created_on; |
} |
catch(ClassCastException e){ |
returnfalse; |
} |
return res; |
} |
} |
|
} |