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.managedobject;
06:
07: import com.tc.object.ObjectID;
08: import com.tc.object.SerializationUtil;
09: import com.tc.objectserver.core.api.ManagedObjectState;
10: import com.tc.util.Assert;
11:
12: public class QueueManagedObjectStateTest extends
13: AbstractTestManagedObjectState {
14: String className = "java.util.concurrent.LinkedBlockingQueue";
15: String TAKE_LOCK_FIELD_NAME = "java.util.concurrent.LinkedBlockingQueue.takeLock";
16: String PUT_LOCK_FIELD_NAME = "java.util.concurrent.LinkedBlockingQueue.putLock";
17: String CAPACITY_FIELD_NAME = "java.util.concurrent.LinkedBlockingQueue.capacity";
18: final byte type = ManagedObjectState.QUEUE_TYPE;
19:
20: public void basicTestQueue(TestDNACursor cursor, int objCount,
21: int actionCount) throws Exception {
22: ManagedObjectState state = createManagedObjectState(className,
23: cursor);
24: state.apply(objectID, cursor, new BackReferences());
25:
26: // API verification
27: basicAPI(className, type, cursor, objCount, state);
28:
29: // dehydrate
30: basicDehydrate(cursor, actionCount, state);
31:
32: // writeTo, readFrom and equal
33: basicReadWriteEqual(type, state);
34: }
35:
36: // override due to difference on dehydrate
37: protected void basicDehydrate(TestDNACursor cursor,
38: int actionCount, ManagedObjectState state) {
39: TestDNAWriter dnaWriter = new TestDNAWriter();
40: state.dehydrate(objectID, dnaWriter);
41: Assert.assertEquals(actionCount, dnaWriter.getActionCount());
42: }
43:
44: public void testObjectQueue1() throws Exception {
45: TestDNACursor cursor = new TestDNACursor();
46:
47: cursor.addPhysicalAction(TAKE_LOCK_FIELD_NAME, new ObjectID(
48: 2001), true);
49: cursor.addPhysicalAction(PUT_LOCK_FIELD_NAME,
50: new ObjectID(2002), true);
51: cursor.addPhysicalAction(CAPACITY_FIELD_NAME, new Integer(100),
52: false);
53:
54: cursor.addLogicalAction(SerializationUtil.PUT,
55: new Object[] { new ObjectID(2003) });
56: cursor.addLogicalAction(SerializationUtil.PUT,
57: new Object[] { new ObjectID(2004) });
58:
59: basicTestQueue(cursor, 4, 5);
60: }
61:
62: public void testObjectQueue2() throws Exception {
63: TestDNACursor cursor = new TestDNACursor();
64:
65: cursor.addLogicalAction(SerializationUtil.PUT,
66: new Object[] { new ObjectID(2003) });
67: cursor.addLogicalAction(SerializationUtil.PUT,
68: new Object[] { new ObjectID(2004) });
69: cursor.addLogicalAction(SerializationUtil.PUT,
70: new Object[] { new ObjectID(2005) });
71: cursor.addLogicalAction(SerializationUtil.PUT,
72: new Object[] { new ObjectID(2006) });
73: cursor.addLogicalAction(SerializationUtil.PUT,
74: new Object[] { new ObjectID(2007) });
75: cursor.addLogicalAction(SerializationUtil.PUT,
76: new Object[] { new ObjectID(2008) });
77: cursor.addLogicalAction(SerializationUtil.PUT,
78: new Object[] { new ObjectID(2009) });
79: cursor.addLogicalAction(SerializationUtil.REMOVE_AT,
80: new Object[] { new Integer(0) });
81:
82: basicTestQueue(cursor, 6, 9);
83: }
84:
85: }
|