From 97e2a50f60d3b5e5178aa005f9cd9a7dc4f632ff Mon Sep 17 00:00:00 2001 From: Thomas Sauzedde Date: Fri, 10 Sep 2010 23:26:09 +0800 Subject: [PATCH] Add U test for fragmented processBulkReply patch. --- .../tests/FragmentedByteArrayInputStream.java | 30 +++++++++++++++++++ .../clients/jedis/tests/ProtocolTest.java | 10 +++++++ 2 files changed, 40 insertions(+) create mode 100644 src/test/java/redis/clients/jedis/tests/FragmentedByteArrayInputStream.java diff --git a/src/test/java/redis/clients/jedis/tests/FragmentedByteArrayInputStream.java b/src/test/java/redis/clients/jedis/tests/FragmentedByteArrayInputStream.java new file mode 100644 index 0000000..c57525d --- /dev/null +++ b/src/test/java/redis/clients/jedis/tests/FragmentedByteArrayInputStream.java @@ -0,0 +1,30 @@ +package redis.clients.jedis.tests; + +import java.io.ByteArrayInputStream; + +/** + * Test class the fragment a byte array for testing purpose. + */ +public class FragmentedByteArrayInputStream extends ByteArrayInputStream { + private int readMethodCallCount = 0; + public FragmentedByteArrayInputStream(final byte[] buf) { + super(buf); + } + + @Override + public synchronized int read(final byte[] b, final int off, final int len) { + readMethodCallCount++; + if (len <= 10) { + // if the len <= 10, return as usual .. + return super.read(b, off, len); + } else { + // else return the first half .. + return super.read(b, off, len / 2); + } + } + + public int getReadMethodCallCount() { + return readMethodCallCount; + } + +} diff --git a/src/test/java/redis/clients/jedis/tests/ProtocolTest.java b/src/test/java/redis/clients/jedis/tests/ProtocolTest.java index 8aa48e1..361d50e 100644 --- a/src/test/java/redis/clients/jedis/tests/ProtocolTest.java +++ b/src/test/java/redis/clients/jedis/tests/ProtocolTest.java @@ -47,6 +47,16 @@ public class ProtocolTest extends Assert { assertEquals("foobar", response); } + @Test + public void fragmentedBulkReply() { + FragmentedByteArrayInputStream fis = new FragmentedByteArrayInputStream("$30\r\n012345678901234567890123456789\r\n".getBytes()); + Protocol protocol = new Protocol(); + String response = (String) protocol.read(new DataInputStream(fis)); + assertEquals("012345678901234567890123456789", response); + assertEquals(3, fis.getReadMethodCallCount()); + } + + @Test public void nullBulkReply() { InputStream is = new ByteArrayInputStream("$-1\r\n".getBytes());