01: /* Copyright (C) 2004 - 2007 db4objects Inc. http://www.db4o.com
02:
03: This file is part of the db4o open source object database.
04:
05: db4o is free software; you can redistribute it and/or modify it under
06: the terms of version 2 of the GNU General Public License as published
07: by the Free Software Foundation and as clarified by db4objects' GPL
08: interpretation policy, available at
09: http://www.db4o.com/about/company/legalpolicies/gplinterpretation/
10: Alternatively you can write to db4objects, Inc., 1900 S Norfolk Street,
11: Suite 350, San Mateo, CA 94403, USA.
12:
13: db4o is distributed in the hope that it will be useful, but WITHOUT ANY
14: WARRANTY; without even the implied warranty of MERCHANTABILITY or
15: FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
16: for more details.
17:
18: You should have received a copy of the GNU General Public License along
19: with this program; if not, write to the Free Software Foundation, Inc.,
20: 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */
21: package com.db4o.db4ounit.common.cs;
22:
23: import com.db4o.*;
24: import com.db4o.config.*;
25: import com.db4o.internal.*;
26: import com.db4o.internal.cs.*;
27: import com.db4o.io.*;
28:
29: import db4ounit.*;
30:
31: public class ClientTransactionHandleTestCase implements TestLifeCycle {
32:
33: public void testHandles() {
34: Configuration config = Db4o.newConfiguration();
35: config.io(new MemoryIoAdapter());
36: final LocalObjectContainer db = (LocalObjectContainer) Db4o
37: .openFile(config,
38: SwitchingFilesFromClientUtil.MAINFILE_NAME);
39: final ClientTransactionPool pool = new ClientTransactionPool(db);
40: try {
41: ClientTransactionHandle handleA = new ClientTransactionHandle(
42: pool);
43: Assert.areEqual(db, handleA.transaction().container());
44: ClientTransactionHandle handleB = new ClientTransactionHandle(
45: pool);
46: Assert.areNotEqual(handleA.transaction(), handleB
47: .transaction());
48: Assert.areEqual(db, handleB.transaction().container());
49: Assert.areEqual(1, pool.openFileCount());
50:
51: handleA
52: .acquireTransactionForFile(SwitchingFilesFromClientUtil.FILENAME_A);
53: Assert.areEqual(2, pool.openFileCount());
54: Assert.areNotEqual(db, handleA.transaction().container());
55: handleB
56: .acquireTransactionForFile(SwitchingFilesFromClientUtil.FILENAME_A);
57: Assert.areEqual(2, pool.openFileCount());
58: Assert.areNotEqual(handleA.transaction(), handleB
59: .transaction());
60: Assert.areEqual(handleA.transaction().container(), handleB
61: .transaction().container());
62:
63: handleA.releaseTransaction();
64: Assert.areEqual(db, handleA.transaction().container());
65: Assert.areNotEqual(db, handleB.transaction().container());
66: Assert.areEqual(2, pool.openFileCount());
67: handleB.releaseTransaction();
68: Assert.areEqual(db, handleB.transaction().container());
69: Assert.areEqual(1, pool.openFileCount());
70: } finally {
71: pool.close();
72: }
73: }
74:
75: public void setUp() throws Exception {
76: SwitchingFilesFromClientUtil.deleteFiles();
77: }
78:
79: public void tearDown() throws Exception {
80: SwitchingFilesFromClientUtil.deleteFiles();
81: }
82:
83: }
|