summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/test/java/com/amazon/carbonado/repo/replicated/TestStorables.java83
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());
}
}