01: /*
02: * All content copyright (c) 2003-2006 Terracotta, Inc., except as may otherwise be noted in a separate copyright
03: * notice. All rights reserved.
04: */
05: package com.tc.objectserver.impl;
06:
07: import com.tc.object.ObjectID;
08: import com.tc.objectserver.core.api.ManagedObject;
09: import com.tc.objectserver.core.impl.TestManagedObject;
10: import com.tc.objectserver.persistence.impl.TestPersistenceTransaction;
11:
12: import java.util.ArrayList;
13: import java.util.Collection;
14: import java.util.HashMap;
15: import java.util.HashSet;
16: import java.util.Iterator;
17: import java.util.Map;
18:
19: import junit.framework.TestCase;
20:
21: public class PersistentManagedObjectStoreTest extends TestCase {
22:
23: private Map map;
24: private TestManagedObjectPersistor persistor;
25: private PersistentManagedObjectStore objectStore;
26:
27: protected void setUp() throws Exception {
28: super .setUp();
29: map = new HashMap();
30: persistor = new TestManagedObjectPersistor(map);
31: objectStore = new PersistentManagedObjectStore(persistor);
32: }
33:
34: public void testGetObjectByID() throws Exception {
35: ObjectID objectID = new ObjectID(1);
36: TestManagedObject mo = new TestManagedObject(objectID);
37: persistor.map.put(objectID, mo);
38: objectStore.getObjectByID(objectID);
39: assertEquals(objectID, persistor.loadByObjectIDCalls.poll(0));
40: }
41:
42: public void testAddRemovePutAndPutAll() {
43: Collection managed = new ArrayList();
44: Collection managedIDs = new ArrayList();
45: for (int i = 0; i < 10; i++) {
46: ObjectID id = new ObjectID(i);
47: managedIDs.add(id);
48: managed.add(new TestManagedObject(id));
49: }
50: assertEquals(0, map.size());
51: for (Iterator i = managed.iterator(); i.hasNext();) {
52: ManagedObject o = (ManagedObject) i.next();
53: assertFalse(objectStore.containsObject(o.getID()));
54: // add new shouldn't commit the object to the data store yet, but it should keep track of
55: // the reference.
56: objectStore.addNewObject(o);
57: assertTrue(objectStore.containsObject(o.getID()));
58: assertFalse(map.containsKey(o.getID()));
59:
60: // remove should remove the local reference.
61: Collection toDelete = new HashSet();
62: toDelete.add(o.getID());
63: objectStore.removeAllObjectsByIDNow(null, toDelete);
64: assertFalse(objectStore.containsObject(o.getID()));
65:
66: // put should commit the object to the data store.
67: objectStore.addNewObject(o);
68: objectStore.commitObject(
69: TestPersistenceTransaction.NULL_TRANSACTION, o);
70: assertTrue(objectStore.containsObject(o.getID()));
71: assertTrue(map.containsKey(o.getID()));
72: }
73:
74: // removeAll should enqueue an event on the sink to remove all of them.
75: objectStore.removeAllObjectsByIDNow(null, managedIDs);
76:
77: // clear the object store...
78: for (Iterator i = managed.iterator(); i.hasNext();) {
79: ManagedObject o = (ManagedObject) i.next();
80: Collection toDelete = new HashSet();
81: toDelete.add(o.getID());
82: objectStore.removeAllObjectsByIDNow(null, toDelete);
83: assertFalse(objectStore.containsObject(o.getID()));
84: assertFalse(map.containsKey(o.getID()));
85: }
86:
87: }
88: }
|