Skip to content

Commit 5ab0215

Browse files
taivtsetuhuynh27
authored andcommitted
refactor unit tests (#139)
* Refactor unit tests * Remove redundant try catch blocks in unit tests * Move subscriber to PubSubCommandTest * Move subscriber to PubSubCommandTest * Refactor unit tests * Update test cases Co-authored-by: TaiVT <>
1 parent 6c23bc2 commit 5ab0215

12 files changed

+1092
-1215
lines changed

core/src/test/java/dev/keva/core/server/KevaServerTest.java renamed to core/src/test/java/dev/keva/core/command/BaseCommandTest.java

Lines changed: 9 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,8 @@
1-
package dev.keva.core.server;
1+
package dev.keva.core.command;
22

33
import dev.keva.core.config.KevaConfig;
4+
import dev.keva.core.server.KevaServer;
5+
import dev.keva.core.server.Server;
46
import dev.keva.core.utils.PortUtil;
57
import lombok.extern.slf4j.Slf4j;
68
import lombok.val;
@@ -12,9 +14,11 @@
1214
import java.util.concurrent.TimeUnit;
1315

1416
@Slf4j
15-
public class KevaServerTest extends AbstractServerTest {
16-
static String host = "localhost";
17-
static int port = PortUtil.getAvailablePort();
17+
public class BaseCommandTest {
18+
protected static final String host = "localhost";
19+
protected static final int port = PortUtil.getAvailablePort();
20+
protected static Jedis jedis;
21+
protected static Server server;
1822

1923
@BeforeAll
2024
static void startServer() throws Exception {
@@ -41,8 +45,6 @@ static void startServer() throws Exception {
4145

4246
jedis = new Jedis(host, port);
4347
jedis.auth("keva-auth");
44-
subscriber = new Jedis(host, port);
45-
subscriber.auth("keva-auth");
4648
}
4749

4850
@AfterAll
@@ -55,4 +57,5 @@ static void stop() {
5557
void reset() {
5658
server.clear();
5759
}
60+
5861
}
Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,23 @@
1+
package dev.keva.core.command;
2+
3+
import lombok.val;
4+
import org.junit.jupiter.api.Test;
5+
6+
import static org.junit.jupiter.api.Assertions.*;
7+
8+
public class ConnectionCommandTest extends BaseCommandTest {
9+
10+
@Test
11+
void ping() {
12+
val pong = jedis.ping();
13+
assertTrue("PONG".contentEquals(pong));
14+
assertEquals("PONG", pong);
15+
}
16+
17+
@Test
18+
void info() {
19+
val info = jedis.info();
20+
assertNotNull(info);
21+
}
22+
23+
}
Lines changed: 181 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,181 @@
1+
package dev.keva.core.command;
2+
3+
import lombok.SneakyThrows;
4+
import lombok.val;
5+
import org.junit.jupiter.api.Test;
6+
import org.junit.jupiter.api.Timeout;
7+
8+
import static org.junit.jupiter.api.Assertions.*;
9+
10+
public class GenericCommandTest extends BaseCommandTest {
11+
12+
@Test
13+
void del() {
14+
String setAbc = jedis.set("abc", "123");
15+
val getAbc = jedis.get("abc");
16+
val delAbc = jedis.del("abc");
17+
val getAbcNull = jedis.get("abc");
18+
assertEquals("OK", setAbc);
19+
assertEquals("123", getAbc);
20+
assertEquals(1, delAbc);
21+
assertNull(getAbcNull);
22+
}
23+
24+
@Test
25+
void exists() {
26+
jedis.set("key1", "Hello");
27+
jedis.set("key2", "World");
28+
Boolean existsKey1 = jedis.exists("key1");
29+
Boolean existsNoSuchKey = jedis.exists("nosuchkey");
30+
Long existsKey1Key2 = jedis.exists("key1", "key2", "nosuchkey");
31+
assertFalse(existsNoSuchKey);
32+
assertTrue(existsKey1);
33+
assertEquals(2, existsKey1Key2);
34+
}
35+
36+
@Test
37+
@SneakyThrows
38+
void getSetExpire() {
39+
val setAbc = jedis.set("abc", "123");
40+
String getAbc = jedis.get("abc");
41+
val expireAbc = jedis.expire("abc", 1L);
42+
43+
assertEquals("OK", setAbc);
44+
assertEquals("123", getAbc);
45+
assertEquals(1, expireAbc);
46+
Thread.sleep(500);
47+
getAbc = jedis.get("abc");
48+
assertEquals("123", getAbc);
49+
Thread.sleep(501);
50+
val getAbcNull = jedis.get("abc");
51+
assertNull(getAbcNull);
52+
}
53+
54+
@Test
55+
@SneakyThrows
56+
void updateExpire() {
57+
val setAbc = jedis.set("abc", "123");
58+
String getAbc = jedis.get("abc");
59+
Long expireAbc = jedis.expire("abc", 1L);
60+
61+
assertEquals("OK", setAbc);
62+
assertEquals("123", getAbc);
63+
assertEquals(1, expireAbc);
64+
65+
Thread.sleep(500);
66+
getAbc = jedis.get("abc");
67+
expireAbc = jedis.expire("abc", 1L);
68+
assertEquals(1, expireAbc);
69+
assertEquals("123", getAbc);
70+
71+
Thread.sleep(501);
72+
getAbc = jedis.get("abc");
73+
assertEquals("123", getAbc);
74+
75+
Thread.sleep(1001);
76+
val getAbcNull = jedis.get("abc");
77+
assertNull(getAbcNull);
78+
}
79+
80+
@Test
81+
@SneakyThrows
82+
void getSetExpireAt() {
83+
val setAbc = jedis.set("abc", "123");
84+
String getAbc = jedis.get("abc");
85+
val oneSecondLaterTime = System.currentTimeMillis() + 1000;
86+
val expireAbc = jedis.expireAt("abc", oneSecondLaterTime);
87+
88+
assertEquals("OK", setAbc);
89+
assertEquals("123", getAbc);
90+
assertEquals(1, expireAbc);
91+
Thread.sleep(500);
92+
getAbc = jedis.get("abc");
93+
assertEquals("123", getAbc);
94+
Thread.sleep(501);
95+
val getAbcNull = jedis.get("abc");
96+
assertNull(getAbcNull);
97+
}
98+
99+
@Test
100+
@SneakyThrows
101+
void setAfterExpireAt() {
102+
String setAbc = jedis.set("abc", "123");
103+
String getAbc = jedis.get("abc");
104+
val oneSecondLaterTime = System.currentTimeMillis() + 1000;
105+
val expireAbc = jedis.expireAt("abc", oneSecondLaterTime);
106+
107+
assertEquals("OK", setAbc);
108+
assertEquals("123", getAbc);
109+
assertEquals(1, expireAbc);
110+
Thread.sleep(500);
111+
getAbc = jedis.get("abc");
112+
assertEquals("123", getAbc);
113+
setAbc = jedis.set("abc", "456");
114+
assertEquals("OK", setAbc);
115+
Thread.sleep(501);
116+
getAbc = jedis.get("abc");
117+
assertEquals("456", getAbc);
118+
}
119+
120+
@Test
121+
@Timeout(5)
122+
void rename() {
123+
final String initKey = "Key";
124+
final String initVal = "Val";
125+
final String newKey = "Nkey";
126+
final String renameBeforeSet = jedis.rename(initKey, newKey);
127+
jedis.set(initKey, initVal);
128+
final String renameAfterSet = jedis.rename(initKey, newKey);
129+
final String getAfterRename = jedis.get(newKey);
130+
assertEquals("ERR unknown key", renameBeforeSet);
131+
assertEquals("OK", renameAfterSet);
132+
assertEquals(initVal, getAfterRename);
133+
}
134+
135+
@Test
136+
@Timeout(5)
137+
@SneakyThrows
138+
void renameWithExpire() {
139+
val initKey = "Key";
140+
val initVal = "Val";
141+
val newKey = "Nkey";
142+
val renameBeforeSet = jedis.rename(initKey, newKey);
143+
jedis.set(initKey, initVal);
144+
jedis.expireAt(initKey, System.currentTimeMillis() + 500);
145+
val renameAfterSet = jedis.rename(initKey, newKey);
146+
String getAfterRename = jedis.get(newKey);
147+
assertEquals("ERR unknown key", renameBeforeSet);
148+
assertEquals("OK", renameAfterSet);
149+
assertEquals(initVal, getAfterRename);
150+
Thread.sleep(501);
151+
getAfterRename = jedis.get(newKey);
152+
assertNull(getAfterRename);
153+
}
154+
155+
@Test
156+
void dumpAndRestore() {
157+
val set1 = jedis.set("key1", "Hello World");
158+
assertEquals("OK", set1);
159+
val dump1 = jedis.dump("key1");
160+
assertNotNull(dump1);
161+
val restore1 = jedis.restore("key2", 0L, dump1);
162+
assertEquals("OK", restore1);
163+
val key2 = jedis.get("key2");
164+
assertEquals("Hello World", key2);
165+
}
166+
167+
@Test
168+
void type() {
169+
val set1 = jedis.set("key1", "Hello World");
170+
assertEquals("OK", set1);
171+
val type1 = jedis.type("key1");
172+
assertEquals("string", type1);
173+
val type2 = jedis.type("key2");
174+
assertEquals("none", type2);
175+
val hashSet = jedis.hset("key3", "field1", "value1");
176+
assertEquals(1, hashSet.intValue());
177+
val type3 = jedis.type("key3");
178+
assertEquals("hash", type3);
179+
}
180+
181+
}
Lines changed: 77 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,77 @@
1+
package dev.keva.core.command;
2+
3+
import lombok.val;
4+
import org.junit.jupiter.api.Test;
5+
6+
import static org.junit.jupiter.api.Assertions.assertEquals;
7+
8+
public class HashCommandTest extends BaseCommandTest {
9+
10+
@Test
11+
void hsetGet() {
12+
val hset = jedis.hset("test", "key", "val");
13+
val hget = jedis.hget("test", "key");
14+
assertEquals(1, hset);
15+
assertEquals("val", hget);
16+
}
17+
18+
@Test
19+
void hdel() {
20+
val hset = jedis.hset("test", "key", "val");
21+
val hdel = jedis.hdel("test", "key");
22+
assertEquals(1, hset);
23+
assertEquals(1, hdel);
24+
}
25+
26+
@Test
27+
void hexists() {
28+
val hset = jedis.hset("test", "key", "val");
29+
val hexists = jedis.hexists("test", "key");
30+
assertEquals(1, hset);
31+
assertEquals(true, hexists);
32+
}
33+
34+
@Test
35+
void hvals() {
36+
val hset = jedis.hset("test", "key", "val");
37+
val hvals = jedis.hvals("test");
38+
assertEquals(1, hset);
39+
assertEquals(1, hvals.size());
40+
assertEquals("val", hvals.get(0));
41+
}
42+
43+
@Test
44+
void hkeys() {
45+
val hset = jedis.hset("test", "key", "val");
46+
val hkeys = jedis.hkeys("test");
47+
assertEquals(1, hset);
48+
assertEquals(1, hkeys.size());
49+
assertEquals("key", hkeys.toArray()[0]);
50+
}
51+
52+
@Test
53+
void hlen() {
54+
val hset = jedis.hset("test", "key", "val");
55+
val hlen = jedis.hlen("test");
56+
assertEquals(1, hset);
57+
assertEquals(1, hlen);
58+
}
59+
60+
@Test
61+
void hstrlen() {
62+
val hset = jedis.hset("test", "key", "val");
63+
val hstrlen = jedis.hstrlen("test", "key");
64+
assertEquals(1, hset);
65+
assertEquals(3, hstrlen);
66+
}
67+
68+
@Test
69+
void hgetAll() {
70+
val hset = jedis.hset("test", "key", "val");
71+
val hgetAll = jedis.hgetAll("test");
72+
assertEquals(1, hset);
73+
assertEquals(1, hgetAll.size());
74+
assertEquals("val", hgetAll.get("key"));
75+
}
76+
77+
}

0 commit comments

Comments
 (0)