package redis.client;
import org.junit.Before;
import org.junit.Test;
import redis.reply.StatusReply;
import java.util.concurrent.CompletableFuture;
import java.util.concurrent.Future;
import static junit.framework.Assert.assertEquals;
/**
* https://github.com/spullara/redis-protocol/issues/20
*/
public class Issue20Test {
private RedisClient client;
@Before
public void setUp() throws Exception {
client = new RedisClient("localhost", 6379);
}
@Test
public void testMultiDiscard() throws Exception {
StatusReply set = client.set("testitnow", "willdo");
StatusReply multi = client.multi();
CompletableFuture<StatusReply> set1 = client.pipeline().set("testitnow", "notok");
client.discard();
assertEquals("willdo", new String(client.get("testitnow").data()));
// Ensure we can run a new tx after discarding previous one
testMultiExec();
}
@Test
public void testMultiExec() throws Exception {
StatusReply multi = client.multi();
CompletableFuture<StatusReply> reply = client.pipeline().set("key", "value");
Future<Boolean> exec = client.exec();
assertEquals("OK", reply.get().data());
}
}