summaryrefslogtreecommitdiff
path: root/src/test/java/com/amazon/carbonado/layout
diff options
context:
space:
mode:
authorBrian S. O'Neill <bronee@gmail.com>2006-12-01 05:02:37 +0000
committerBrian S. O'Neill <bronee@gmail.com>2006-12-01 05:02:37 +0000
commitef2f79f1a20e9229736fedc7c7e27e8ebf032c99 (patch)
treeb6c50dcf4d8ae2f42750670687a67254a4450c9f /src/test/java/com/amazon/carbonado/layout
parentc085e4212d49561842e06c459c1e44c12d1630d6 (diff)
Add Storable to CorruptEncodingException when loading from index.
Diffstat (limited to 'src/test/java/com/amazon/carbonado/layout')
-rw-r--r--src/test/java/com/amazon/carbonado/layout/TestLayout.java51
1 files changed, 51 insertions, 0 deletions
diff --git a/src/test/java/com/amazon/carbonado/layout/TestLayout.java b/src/test/java/com/amazon/carbonado/layout/TestLayout.java
index f1edef3..98df0ee 100644
--- a/src/test/java/com/amazon/carbonado/layout/TestLayout.java
+++ b/src/test/java/com/amazon/carbonado/layout/TestLayout.java
@@ -36,6 +36,7 @@ import org.cojen.util.BeanPropertyAccessor;
import org.cojen.util.ClassInjector;
import com.amazon.carbonado.adapter.YesNoAdapter;
+import com.amazon.carbonado.CorruptEncodingException;
import com.amazon.carbonado.PrimaryKey;
import com.amazon.carbonado.Repository;
import com.amazon.carbonado.Storable;
@@ -46,6 +47,8 @@ import com.amazon.carbonado.info.StorableIntrospector;
import com.amazon.carbonado.info.StorableProperty;
import com.amazon.carbonado.info.StorablePropertyAdapter;
+import com.amazon.carbonado.repo.sleepycat.BDBRepositoryBuilder;
+
import com.amazon.carbonado.stored.FileInfo;
import com.amazon.carbonado.stored.StorableDateIndex;
import com.amazon.carbonado.stored.StorableTestBasic;
@@ -747,6 +750,54 @@ public class TestLayout extends TestCase {
}
}
+ public void testCorruption() throws Exception {
+ // Forces corruption by deleting layout
+ // record. CorruptEncodingException should include Storable.
+
+ // Create a persistent repository.
+ mRepository.close();
+ BDBRepositoryBuilder builder =
+ (BDBRepositoryBuilder) TestUtilities.newTempRepositoryBuilder();
+ System.out.println(builder.getEnvironmentHome());
+ builder.setLogInMemory(false);
+ mRepository = builder.build();
+
+ Class<? extends StorableTestMinimal> type =
+ defineStorable(TEST_STORABLE_NAME, 0, TypeDesc.INT);
+
+ StorableTestMinimal test = mRepository.storageFor(type).prepare();
+ test.setId(1);
+ test.insert();
+
+ Class<? extends StorableTestMinimal> type2 =
+ defineStorable(TEST_STORABLE_NAME, 1, TypeDesc.INT);
+
+ StorableTestMinimal test2 = mRepository.storageFor(type2).prepare();
+ test2.setId(2);
+ type2.getMethod("setProp0", int.class).invoke(test2, 10);
+ test2.insert();
+
+ // Close and re-open.
+ mRepository.close();
+ mRepository = builder.build();
+
+ test = mRepository.storageFor(type).prepare();
+ test.setId(1);
+ test.load();
+
+ // Blow away layout data.
+ mRepository.storageFor(StoredLayout.class).query().deleteAll();
+
+ test2 = mRepository.storageFor(type2).prepare();
+ test2.setId(2);
+ try {
+ test2.load();
+ fail();
+ } catch (CorruptEncodingException e) {
+ assertEquals(test2, e.getStorableWithPrimaryKey());
+ }
+ }
+
private void compareInfo(StorableInfo expected, StorableInfo actual) {
Map<String, StorableProperty> expectedProps = expected.getAllProperties();
Map<String, StorableProperty> actualProps = actual.getAllProperties();