diff options
Diffstat (limited to 'src/test/java/com')
3 files changed, 46 insertions, 33 deletions
diff --git a/src/test/java/com/amazon/carbonado/TestStorables.java b/src/test/java/com/amazon/carbonado/TestStorables.java index 3e18fa7..c5b081b 100644 --- a/src/test/java/com/amazon/carbonado/TestStorables.java +++ b/src/test/java/com/amazon/carbonado/TestStorables.java @@ -1601,36 +1601,6 @@ public class TestStorables extends TestCase { assertEquals(0, query.with(0.2).count()); } - /* FIXME: Deleting of derived index entries needs more thought. - public void test_basicDerivedJoinIndex() throws Exception { - test_basicDerivedJoinIndex(getRepository()); - } - - protected void test_basicDerivedJoinIndex(Repository repo) throws Exception { - Storage<WithJoinIndex> storage1 = repo.storageFor(WithJoinIndex.class); - Storage<WithJoinIndex.Basic> storage2 = repo.storageFor(WithJoinIndex.Basic.class); - - WithJoinIndex.Basic basic = storage2.prepare(); - basic.setId(128120938); - basic.setIntProp(999); - basic.insert(); - - WithJoinIndex join = storage1.prepare(); - join.setId(1); - join.setBasic(basic); - join.insert(); - - join = storage1.query("intProp = ?").with(999).loadOne(); - - // Make sure delete does cause dependent properties to try load a - // missing joined object. - basic.delete(); - - join = storage1.query("intProp = ?").with(999).tryLoadOne(); - assertNull(join); - } - */ - public void test_derivedJoinIndex() throws Exception { test_derivedJoinIndex(getRepository()); } diff --git a/src/test/java/com/amazon/carbonado/repo/indexed/TestIndexRepair.java b/src/test/java/com/amazon/carbonado/repo/indexed/TestIndexRepair.java index 852c064..2f6578b 100644 --- a/src/test/java/com/amazon/carbonado/repo/indexed/TestIndexRepair.java +++ b/src/test/java/com/amazon/carbonado/repo/indexed/TestIndexRepair.java @@ -27,6 +27,7 @@ import com.amazon.carbonado.*; import com.amazon.carbonado.repo.map.MapRepositoryBuilder;
import com.amazon.carbonado.stored.StorableTestBasicCompoundIndexed;
+import com.amazon.carbonado.stored.WithJoinIndex;
/**
*
@@ -42,8 +43,6 @@ public class TestIndexRepair extends TestCase { return new TestSuite(TestIndexRepair.class);
}
- private Repository mRepository;
-
public TestIndexRepair(String name) {
super(name);
}
@@ -52,6 +51,48 @@ public class TestIndexRepair extends TestCase { return TestUtilities.buildTempRepository("indexrepair", 1000000, true);
}
+ public void test_derivedIndex() throws Exception {
+ Repository repo = buildTempRepository();
+
+ Storage<WithJoinIndex> storage = repo.storageFor(WithJoinIndex.class);
+ Storage<WithJoinIndex.Basic> storage2 = repo.storageFor(WithJoinIndex.Basic.class);
+
+ WithJoinIndex obj;
+ WithJoinIndex.Basic obj2;
+
+ obj2 = storage2.prepare();
+ obj2.setId(1);
+ obj2.setIntProp(100);
+ obj2.insert();
+
+ obj = storage.prepare();
+ obj.setId(2);
+ obj.setBasicId(1);
+ obj.insert();
+
+ assertEquals(100, obj.getIntProp());
+
+ WithJoinIndex.adjust = 5;
+ try {
+ // Index is inconsistent now.
+ obj = storage.query("intProp = ?").with(100).loadOne();
+ assertEquals(100 + WithJoinIndex.adjust, obj.getIntProp());
+
+ // Inconsistency should not break update.
+ obj2 = obj.getBasic();
+ obj2.setIntProp(123);
+ obj2.update();
+
+ obj = storage.query("intProp = ?").with(123 + WithJoinIndex.adjust).loadOne();
+ assertEquals(123 + WithJoinIndex.adjust, obj.getIntProp());
+ } finally {
+ WithJoinIndex.adjust = 0;
+ }
+
+ repo.close();
+ repo = null;
+ }
+
public void test_shouldInsert() throws Exception {
Repository repo = buildTempRepository();
test_shouldInsert(repo);
diff --git a/src/test/java/com/amazon/carbonado/stored/WithJoinIndex.java b/src/test/java/com/amazon/carbonado/stored/WithJoinIndex.java index 17e6eff..57742a9 100644 --- a/src/test/java/com/amazon/carbonado/stored/WithJoinIndex.java +++ b/src/test/java/com/amazon/carbonado/stored/WithJoinIndex.java @@ -28,6 +28,8 @@ import com.amazon.carbonado.*; @PrimaryKey("id")
@Indexes({@Index("intProp")})
public abstract class WithJoinIndex implements Storable {
+ public static volatile int adjust;
+
public abstract int getId();
public abstract void setId(int id);
@@ -40,7 +42,7 @@ public abstract class WithJoinIndex implements Storable { @Derived(from="basic.intProp")
public int getIntProp() throws FetchException {
- return getBasic().getIntProp();
+ return getBasic().getIntProp() + adjust;
}
@Alias("WITH_BASIC")
|
