1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38 package com.gargoylesoftware.base.resource;
39
40 import java.util.ArrayList;
41 import java.util.Arrays;
42 import java.util.List;
43 import junit.framework.TestCase;
44
45 /***
46 * Tests for ResourceManager
47 *
48 * @version $Revision: 1.6 $
49 * @author <a href="mailto:mbowler@GargoyleSoftware.com">Mike Bowler</a>
50 */
51 public class ResourceManagerTest extends TestCase {
52 /***
53 * Instantiate the test
54 *
55 * @param name Name of the test
56 */
57 public ResourceManagerTest( final String name ) {
58 super( name );
59 }
60
61
62 /***
63 * Ensure that an exception is being thrown when we attempt to release a
64 * resource that hadn't been allocated from this factory.
65 */
66 public void testReleaseResource_ObjectNotFromFactory() {
67 final ResourceManager resourceManager = new ResourceManager( getName() );
68 try {
69 resourceManager.releaseResource(
70 new ManagedResource() {
71 public void setResourceFactoryName( final String name ) {
72 }
73
74
75 public String getResourceFactoryName() {
76 return "Flintstone";
77 }
78 } );
79 fail( "Expected exception for unregistered name" );
80 }
81 catch( final ResourceFactoryNotFoundException e ) {
82
83 }
84 }
85
86
87 /***
88 * Ensure that an exception is being thrown when null is passed into
89 * releaseResource()
90 */
91 public void testReleaseResource_null() {
92 final ResourceManager resourceManager = new ResourceManager( getName() );
93 try {
94 resourceManager.releaseResource( null );
95 fail( "Expected exception for null name" );
96 }
97 catch( final NullPointerException e ) {
98
99 }
100 }
101
102
103 /***
104 * Test the resource allocation
105 */
106 public void testResourceAllocation() {
107 final List list = new ArrayList();
108 final ProxyResourceFactory factory = new ProxyResourceFactory( list );
109
110 final ResourceManager resourceManager = new ResourceManager( getName() );
111 resourceManager.addFactory( "foo", factory );
112
113 final ManagedResource resource = ( ManagedResource )resourceManager.getResource( "foo" );
114 resourceManager.getResource( "foo" );
115 resourceManager.releaseResource( resource );
116 resourceManager.releaseAllResources();
117
118 final List expected = Arrays.asList( new String[]{
119 "getResourceImpl", "getResourceImpl", "releaseResourceImpl",
120 "releaseAllResources", "releaseResourceImpl"} );
121 assertEquals( expected, list );
122 }
123
124
125 /***
126 * Ensure that an exception is being thrown when null is passed into
127 * getResource
128 */
129 public void testGetResource_Null() {
130 final ResourceManager resourceManager = new ResourceManager( getName() );
131 resourceManager.addFactory( "jdbc", new ProxyResourceFactory() );
132 try {
133 resourceManager.getResource( null );
134 fail( "Expected NullPointerException" );
135 }
136 catch( final NullPointerException e ) {
137
138 }
139 }
140
141
142 /***
143 * Ensure that an exception is being thrown when an unregistered name is
144 * passed into getResource
145 */
146 public void testGetResource_BadName() {
147 final ResourceManager resourceManager = new ResourceManager( getName() );
148 resourceManager.addFactory( "jdbc", new ProxyResourceFactory() );
149 try {
150 resourceManager.getResource( "aResourceNameThatShouldNotMatchAnything" );
151 fail( "Expected ResourceFactoryNotFoundException" );
152 }
153 catch( final ResourceFactoryNotFoundException e ) {
154
155 }
156 }
157
158 /*** */
159 public void testResourceAllocation_Many() {
160 final List list = new ArrayList();
161 final ProxyResourceFactory proxyResourceFactory = new ProxyResourceFactory( list );
162 proxyResourceFactory.setAllowReinitialization(true);
163
164 final PooledResourceFactory factory = new PooledResourceFactory(proxyResourceFactory);
165 factory.setPreferredCacheSize(1);
166
167 final ResourceManager resourceManager1 = new ResourceManager( getName() + "1");
168 resourceManager1.addFactory( "foo", factory );
169
170 final ResourceManager resourceManager2 = new ResourceManager( getName() + "2");
171 resourceManager2.addFactory( "foo", factory );
172
173 final ManagedResource resource = (ManagedResource)resourceManager1.getResource("foo");
174 for( int i=0; i<10; i++ ) {
175 resourceManager1.getResource( "foo" );
176 resourceManager2.getResource( "foo" );
177 }
178 resourceManager1.releaseResource(resource);
179 for( int i=0; i<10; i++ ) {
180 resourceManager1.getResource( "foo" );
181 resourceManager2.getResource( "foo" );
182 }
183 resourceManager1.releaseAllResources();
184 resourceManager2.releaseAllResources();
185 }
186
187 }
188