1 package com.tirsen.nanning.samples.rmi; 2 3 import com.tirsen.nanning.Aspects; 4 import com.tirsen.nanning.attribute.AbstractAttributesTest; 5 import com.tirsen.nanning.config.AspectSystem; 6 import com.tirsen.nanning.config.FindTargetMixinAspect; 7 import com.tirsen.nanning.samples.prevayler.Identity; 8 9 public class RemoteTest extends AbstractAttributesTest { 10 private int port = 12346; 11 private SocketRemoteCallServer remoteCallServer; 12 13 protected void setUp() throws Exception { 14 super.setUp(); 15 } 16 17 protected void tearDown() throws Exception { 18 super.tearDown(); 19 if (remoteCallServer != null) { 20 remoteCallServer.stop(); 21 } 22 } 23 24 public void testStartStop() { 25 remoteCallServer = new SocketRemoteCallServer(); 26 remoteCallServer.setPort(port); 27 assertFalse(remoteCallServer.isStarted()); 28 remoteCallServer.stop(); 29 assertFalse(remoteCallServer.isStarted()); 30 remoteCallServer.start(); 31 assertTrue(remoteCallServer.isStarted()); 32 } 33 34 public void testObjectTable() { 35 Object o = new Object (); 36 ObjectTable objectTable = new ObjectTable(); 37 Object id = objectTable.register(o); 38 assertTrue(objectTable.isIDRegistered(id)); 39 assertSame(o, objectTable.getFromID(id)); 40 assertSame(id, objectTable.register(o)); 41 } 42 43 public void testObjectTableCleanup() throws Exception { 44 Object o = new Object (); 45 ObjectTable objectTable = new ObjectTable(200); 46 Object id = objectTable.register(o); 47 Thread.sleep(50); 48 assertTrue(objectTable.isIDRegistered(id)); 49 Thread.sleep(151); 50 assertFalse(objectTable.isIDRegistered(id)); 51 } 52 53 public void testRemoteMarshallerWithLocalObject() { 54 RemoteMarshaller clientMarshaller = RemoteMarshaller.createClientSideMarshaller(); 55 MyStatefulServiceImpl o = new MyStatefulServiceImpl(); 56 Object id = clientMarshaller.registerID(o); 57 assertSame(o, clientMarshaller.unmarshal(new Identity(o.getClass(), id))); 58 } 59 60 public void testIdentityEqualsAndHashCode() { 61 Identity identity1 = new Identity(Object .class, new Long (1)); 62 assertEquals(identity1, identity1); 63 assertFalse(identity1.equals("")); 64 assertFalse(identity1.equals(new Identity(Object .class, new Long (2)))); 65 66 Identity identity2 = new Identity(Object .class, new Long (1)); 67 assertEquals(identity1, identity2); 68 assertEquals(identity2, identity1); 69 assertEquals(identity1.hashCode(), identity2.hashCode()); 70 } 71 72 public void testRemoteMarshallerWithRemoteObject() { 73 AspectSystem aspectSystem = new AspectSystem(); 74 aspectSystem.addAspect(new FindTargetMixinAspect()); 75 Object service = aspectSystem.newInstance(MyStatefulService.class); 76 77 RemoteMarshaller clientMarshaller = RemoteMarshaller.createClientSideMarshaller(); 78 Identity identity = new RemoteIdentity(Aspects.getAspectInstance(service).getClassIdentifier(), new Long (System.currentTimeMillis()), new SocketConnectionManager("localhost", port)); 79 Object stub = clientMarshaller.unmarshal(identity); 80 assertNotNull(stub); 81 assertTrue(stub instanceof MyStatefulService); 82 assertTrue(Aspects.getAspectInstance(stub).getTargets()[0] instanceof Identity); 83 assertEquals(identity, Aspects.getAspectInstance(stub).getTargets()[0]); 84 assertEquals(identity, clientMarshaller.marshal(stub)); 85 } 86 } 87 | Popular Tags |