summaryrefslogtreecommitdiff
path: root/src/test/java/com/amazon/carbonado
diff options
context:
space:
mode:
Diffstat (limited to 'src/test/java/com/amazon/carbonado')
-rw-r--r--src/test/java/com/amazon/carbonado/TestStorables.java30
-rw-r--r--src/test/java/com/amazon/carbonado/repo/indexed/TestIndexRepair.java45
-rw-r--r--src/test/java/com/amazon/carbonado/stored/WithJoinIndex.java4
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")