diff options
| author | Brian S. O'Neill <bronee@gmail.com> | 2007-06-17 16:56:21 +0000 |
|---|---|---|
| committer | Brian S. O'Neill <bronee@gmail.com> | 2007-06-17 16:56:21 +0000 |
| commit | b7df144e943e0b58a2cd3c6806a90c43367caf9a (patch) | |
| tree | 6c9ebf4e12d8646db8749b59d386685b5f9b0e88 | |
| parent | 42e273698502bf6f38537322be70fa7f81b2fde7 (diff) | |
Add test for lob replication bug.
| -rw-r--r-- | src/test/java/com/amazon/carbonado/repo/replicated/TestStorables.java | 83 |
1 files changed, 83 insertions, 0 deletions
diff --git a/src/test/java/com/amazon/carbonado/repo/replicated/TestStorables.java b/src/test/java/com/amazon/carbonado/repo/replicated/TestStorables.java index 552ec14..951f5f0 100644 --- a/src/test/java/com/amazon/carbonado/repo/replicated/TestStorables.java +++ b/src/test/java/com/amazon/carbonado/repo/replicated/TestStorables.java @@ -18,6 +18,9 @@ package com.amazon.carbonado.repo.replicated;
+import java.io.OutputStream;
+import java.io.Writer;
+
import junit.framework.TestSuite;
import com.amazon.carbonado.Repository;
@@ -28,8 +31,15 @@ import com.amazon.carbonado.TestUtilities; import com.amazon.carbonado.repo.replicated.ReplicatedRepository;
+import com.amazon.carbonado.lob.Blob;
+import com.amazon.carbonado.lob.Clob;
+import com.amazon.carbonado.lob.ByteArrayBlob;
+import com.amazon.carbonado.lob.StringClob;
+
import com.amazon.carbonado.sequence.StoredSequence;
+import com.amazon.carbonado.stored.StorableWithLobs;
+
/**
*
*
@@ -85,5 +95,78 @@ public class TestStorables extends com.amazon.carbonado.TestStorables { seq = master.prepare();
seq.setName("foo");
assertTrue(seq.tryLoad());
+
+ public void testBlobReplication() throws Exception {
+ Storage<StorableWithLobs> storage = getRepository().storageFor(StorableWithLobs.class);
+
+ Storage<StorableWithLobs> replica = ((ReplicatedRepository) getRepository())
+ .getReplicaRepository().storageFor(StorableWithLobs.class);
+ Storage<StorableWithLobs> master = ((ReplicatedRepository) getRepository())
+ .getMasterRepository().storageFor(StorableWithLobs.class);
+
+ StorableWithLobs lobs = storage.prepare();
+ lobs.setBlobValue(new ByteArrayBlob("hello".getBytes()));
+ lobs.insert();
+
+ StorableWithLobs maLobs = master.prepare();
+ maLobs.setId(lobs.getId());
+ maLobs.load();
+ assertEquals("hello", maLobs.getBlobValue().asString());
+
+ // Test update via stream.
+
+ Blob blob = lobs.getBlobValue();
+ OutputStream out = blob.openOutputStream();
+ out.write("world!!!".getBytes());
+ out.close();
+
+ assertEquals("world!!!", blob.asString());
+ assertEquals("world!!!", maLobs.getBlobValue().asString());
+
+ // Test length change.
+ blob.setLength(6);
+
+ assertEquals(6, blob.getLength());
+ assertEquals(6, maLobs.getBlobValue().getLength());
+
+ assertEquals("world!", blob.asString());
+ assertEquals("world!", maLobs.getBlobValue().asString());
+ }
+
+ public void testClobReplication() throws Exception {
+ Storage<StorableWithLobs> storage = getRepository().storageFor(StorableWithLobs.class);
+
+ Storage<StorableWithLobs> replica = ((ReplicatedRepository) getRepository())
+ .getReplicaRepository().storageFor(StorableWithLobs.class);
+ Storage<StorableWithLobs> master = ((ReplicatedRepository) getRepository())
+ .getMasterRepository().storageFor(StorableWithLobs.class);
+
+ StorableWithLobs lobs = storage.prepare();
+ lobs.setClobValue(new StringClob("hello"));
+ lobs.insert();
+
+ StorableWithLobs maLobs = master.prepare();
+ maLobs.setId(lobs.getId());
+ maLobs.load();
+ assertEquals("hello", maLobs.getClobValue().asString());
+
+ // Test update via stream.
+
+ Clob clob = lobs.getClobValue();
+ Writer out = clob.openWriter();
+ out.write("world!!!");
+ out.close();
+
+ assertEquals("world!!!", clob.asString());
+ assertEquals("world!!!", maLobs.getClobValue().asString());
+
+ // Test length change.
+ clob.setLength(6);
+
+ assertEquals(6, clob.getLength());
+ assertEquals(6, maLobs.getClobValue().getLength());
+
+ assertEquals("world!", clob.asString());
+ assertEquals("world!", maLobs.getClobValue().asString());
}
}
|
