1
2
3
4
5 package org.neo.swarm.services.classloader;
6
7 import java.util.Collection;
8 import java.util.Iterator;
9
10 import org.neo.swarm.SwarmContainer;
11 import org.neo.swarm.services.classloader.DistributedClassLoader;
12 import org.neo.swarm.services.classloader.RemoteClassLoader;
13
14 import com.mockobjects.dynamic.C;
15 import com.mockobjects.dynamic.Mock;
16 import junit.framework.TestCase;
17
18 /***
19 * Tests that the distributed classloader interacts with the system classloaders correctly.
20 * @author navery
21 */
22 public class DistributedClassLoaderTest extends TestCase {
23
24
25 public void testDistClassLoaderThrowsCorrectException() throws Exception {
26 System.setProperty("java.system.class.loader","org.neo.swarm.services.classloader.DistributedClassLoader");
27 Mock silcContainer = new Mock(SwarmContainer.class);
28 Mock remoteClassLoader = new Mock(RemoteClassLoader.class);
29 Mock collectionOfClassLoaders = new Mock(Collection.class);
30 Mock classLoaderIterator = new Mock(Iterator.class);
31
32
33 silcContainer.expectAndReturn("getComponentsOfType", C.eq(RemoteClassLoader.class), collectionOfClassLoaders.proxy());
34 collectionOfClassLoaders.expectAndReturn("iterator", classLoaderIterator.proxy() );
35 classLoaderIterator.expectAndReturn("hasNext", true);
36 classLoaderIterator.expectAndReturn("next", remoteClassLoader.proxy());
37 remoteClassLoader.expectAndReturn("loadApplicationClass", "org.neo.swarm.services.classloader.TestClass", TestClass.class);
38
39 DistributedClassLoader.applicationClassmatching=".*TestClass.*";
40 DistributedClassLoader.container= (SwarmContainer) silcContainer.proxy();
41
42 ClassLoader loader = DistributedClassLoader.getSystemClassLoader();
43 Object o = loader.loadClass("java.lang.String");
44 Object testClass = loader.loadClass("org.neo.swarm.services.classloader.TestClass");
45
46
47
48 }
49 }