1 package test.crispy.impl; 2 3 import java.util.Properties; 4 5 import junit.framework.TestCase; 6 import net.sf.crispy.Property; 7 import net.sf.crispy.impl.MiniServer; 8 import net.sf.crispy.impl.ServiceManager; 9 import net.sf.crispy.impl.StaticCorbaProxy; 10 import net.sf.crispy.impl.corba.MiniCorbaServer; 11 import net.sf.crispy.interceptor.StopWatchInterceptor; 12 import test.crispy.concurrent.AsynchronousCallbackForTests; 13 import test.crispy.example.interceptor.WaitInterceptor; 14 import test.crispy.example.service.corba.Calculator; 15 import test.crispy.example.service.corba.Customer; 16 import test.crispy.example.service.corba.Echo; 17 18 public class StaticCorbaProxyTest extends TestCase { 19 20 private static MiniServer miniServer = null; 21 22 public StaticCorbaProxyTest() { 23 if (miniServer == null) { 24 miniServer = new MiniCorbaServer(); 25 miniServer.addService("test.crispy.example.service.corba.Echo", "test.crispy.example.service.CorbaEcho"); 26 miniServer.addService("test.crispy.example.service.corba.Calculator", "test.crispy.example.service.CorbaCalculator"); 27 miniServer.start(); 28 } 29 } 30 31 public void testSimpleRemotePing() throws Exception { 32 Properties props = new Properties(); 33 props.put(Property.STATIC_PROXY_CLASS, StaticCorbaProxy.class.getName()); 34 35 ServiceManager lvManager = new ServiceManager(props); 36 Echo lvEcho = (Echo) lvManager.createService(Echo.class); 37 String lvPingString = lvEcho.ping(); 38 assertNotNull(lvPingString); 39 assertEquals("PING", lvPingString); 40 } 41 42 public void testSimpleMultiServices() throws Exception { 43 Properties props = new Properties(); 44 props.put(Property.STATIC_PROXY_CLASS, StaticCorbaProxy.class.getName()); 45 46 ServiceManager lvManager = new ServiceManager(props); 47 Echo lvEcho = (Echo) lvManager.createService(Echo.class); 48 String lvPingString = lvEcho.ping(); 49 assertNotNull(lvPingString); 50 51 Calculator lvCalculator = (Calculator) lvManager.createService(Calculator.class); 52 assertNotNull(lvCalculator); 53 assertEquals(5, lvCalculator.add(2, 3)); 54 assertEquals(7, lvCalculator.subtract(8, 1)); 55 } 56 57 public void testSimpleRemotePingWithUrlProperties() throws Exception { 58 Properties props = new Properties(); 59 props.put(Property.REMOTE_URL_AND_PORT, "localhost:1057"); 60 props.put(Property.STATIC_PROXY_CLASS, StaticCorbaProxy.class.getName()); 61 62 ServiceManager lvManager = new ServiceManager(props); 63 Echo lvEcho = (Echo) lvManager.createService(Echo.class); 64 String lvPingString = lvEcho.ping(); 65 assertNotNull(lvPingString); 66 } 67 68 public void testEchoTest() throws Exception { 69 Properties props = new Properties(); 70 props.put(Property.STATIC_PROXY_CLASS, StaticCorbaProxy.class.getName()); 71 72 ServiceManager lvManager = new ServiceManager(props); 73 Echo lvEcho = (Echo) lvManager.createService(Echo.class); 74 String lvEchoString = "Hello Crispy"; 75 String lvEchoStringAfter = lvEcho.echo(lvEchoString); 76 assertEquals("CORBA-Echo: " + lvEchoString, lvEchoStringAfter); 77 } 78 79 80 public void testNullValueParameter() throws Exception { 81 Properties props = new Properties(); 82 props.put(Property.STATIC_PROXY_CLASS, StaticCorbaProxy.class.getName()); 83 84 ServiceManager lvManager = new ServiceManager(props); 85 Echo lvEcho = (Echo) lvManager.createService(Echo.class); 86 87 try { 88 lvEcho.echo(null); 89 fail("CORBA not supported null values, must thrown Exception."); 90 } catch (Exception e) { 91 assertTrue(true); 92 } 93 } 94 95 public void testTestWithDynamicJdkProxy() { 96 Properties props = new Properties(); 97 props.put(Property.STATIC_PROXY_CLASS, StaticCorbaProxy.class.getName()); 98 props.put(Property.DYNAMIC_PROXY_CLASS, Property.VALUE_FOR_JDK_DYNAMIC_PROXY); 99 100 ServiceManager lvManager = new ServiceManager(props); 101 Echo lvEcho = (Echo) lvManager.createService(Echo.class); 102 String lvEchoString = "Hello Crispy"; 103 String lvEchoStringAfter = lvEcho.echo(lvEchoString); 104 assertEquals("CORBA-Echo: " + lvEchoString, lvEchoStringAfter); 105 106 Calculator lvCalculator = (Calculator) lvManager.createService(Calculator.class); 107 assertNotNull(lvCalculator); 108 assertEquals(5, lvCalculator.add(2, 3)); 109 assertEquals(7, lvCalculator.subtract(8, 1)); 110 } 111 112 public void testTestWithDynamicJdkProxyWithStopWatch() { 113 Properties props = new Properties(); 114 props.put(Property.STATIC_PROXY_CLASS, StaticCorbaProxy.class.getName()); 115 props.put(Property.DYNAMIC_PROXY_CLASS, Property.VALUE_FOR_JDK_DYNAMIC_PROXY); 116 props.put(Property.INTERCEPTOR_CLASS, WaitInterceptor.class.getName()); 117 props.put(Property.INTERCEPTOR_CLASS_2, StopWatchInterceptor.class.getName()); 118 119 ServiceManager lvManager = new ServiceManager(props); 120 Echo lvEcho = (Echo) lvManager.createService(Echo.class); 121 String lvEchoString = "Hello Crispy"; 122 String lvEchoStringAfter = lvEcho.echo(lvEchoString); 123 assertEquals("CORBA-Echo: " + lvEchoString, lvEchoStringAfter); 124 125 StopWatchInterceptor lvStopWatchInterceptor = (StopWatchInterceptor) lvManager.getInterceptorByPos(1); 126 long lvStopTime = lvStopWatchInterceptor.getStopTimeInvokeMethod(); 127 assertTrue("StopTime is: " + lvStopTime, lvStopTime > 10); 128 } 129 130 public void testCreateService() throws Exception { 131 Properties props = new Properties(); 132 props.put(Property.STATIC_PROXY_CLASS, StaticCorbaProxy.class.getName()); 133 134 ServiceManager lvManager = new ServiceManager(props); 135 Echo lvEcho1 = (Echo) lvManager.createService(Echo.class); 136 Echo lvEcho2 = (Echo) lvManager.createService(Echo.class); 137 138 assertNotNull(lvEcho1); 139 assertNotNull(lvEcho2); 140 assertNotSame(lvEcho1, lvEcho2); 141 } 142 143 public void testMiniCorbaServer() throws Exception { 144 int lvPort = 12345; 145 MiniCorbaServer lvCorbaServer = new MiniCorbaServer(lvPort); 146 assertEquals(lvPort, lvCorbaServer.getPort()); 147 148 lvCorbaServer = new MiniCorbaServer(null, lvPort); 149 assertEquals("127.0.0.1", lvCorbaServer.getHost()); 150 151 String lvHost = "MyHost"; 152 lvCorbaServer = new MiniCorbaServer(lvHost, lvPort); 153 assertEquals(lvPort, lvCorbaServer.getPort()); 154 assertEquals(lvHost, lvCorbaServer.getHost()); 155 156 miniServer.start(); 157 miniServer.start(); 158 } 159 160 161 public void testComplexArgsServices() throws Exception { 162 Properties props = new Properties(); 163 props.put(Property.STATIC_PROXY_CLASS, StaticCorbaProxy.class.getName()); 164 165 ServiceManager lvManager = new ServiceManager(props); 166 Echo lvEcho = (Echo) lvManager.createService(Echo.class); 167 Customer lvCustomer = new Customer("TestFirstName", "JUnitLastName", 47.11); 168 String lvTestRename = "NewTestName"; 169 Customer lvCustomerAfterRename = lvEcho.rename(lvCustomer, lvTestRename); 170 assertNotNull(lvCustomerAfterRename); 171 assertEquals(lvCustomerAfterRename.lastName, lvTestRename); 172 } 173 174 175 176 177 public void testAsynchronousInvocation() throws Exception { 178 Properties prop = new Properties(); 179 prop.put(Property.STATIC_PROXY_CLASS, StaticCorbaProxy.class.getName()); 180 prop.put(Property.DYNAMIC_PROXY_CLASS, Property.VALUE_FOR_JDK_DYNAMIC_PROXY); 181 prop.put(Property.ASYNCHRONOUS_CALLBACK_CLASS, AsynchronousCallbackForTests.class.getName()); 182 183 ServiceManager manager = new ServiceManager(prop); 184 Echo echo = (Echo) manager.createService(Echo.class); 185 String lvPing = echo.ping(); 186 assertNull(lvPing); 187 188 assertTrue(manager.isInvocationAsynchronous(Echo.class)); 189 190 Thread.sleep(300); 191 AsynchronousCallbackForTests lvAsynchronousCallbackForTests = (AsynchronousCallbackForTests) manager.getAsynchronousCallback(Echo.class); 192 assertNotNull(lvAsynchronousCallbackForTests); 193 194 assertEquals("ping", lvAsynchronousCallbackForTests.getMethodName()); 195 assertEquals("PING", lvAsynchronousCallbackForTests.getResult()); 196 assertNull(lvAsynchronousCallbackForTests.getThrowable()); 197 } 198 199 public void testAsynchronousInvocationWithMultyThreaded() throws Exception { 200 Properties prop = new Properties(); 201 prop.put(Property.STATIC_PROXY_CLASS, StaticCorbaProxy.class.getName()); 202 prop.put(Property.DYNAMIC_PROXY_CLASS, Property.VALUE_FOR_JDK_DYNAMIC_PROXY); 203 prop.put(Property.ASYNCHRONOUS_CALLBACK_CLASS, AsynchronousCallbackForTests.class.getName()); 204 prop.put(Property.ASYNCHRONOUS_MAX_SIZE_OF_THREADS, "3"); 205 206 ServiceManager manager = new ServiceManager(prop); 207 Echo echo = (Echo) manager.createService(Echo.class); 208 String lvPing = echo.ping(); 209 assertNull(lvPing); 210 211 assertTrue(manager.isInvocationAsynchronous(Echo.class)); 212 213 Thread.sleep(500); 214 AsynchronousCallbackForTests lvAsynchronousCallbackForTests = (AsynchronousCallbackForTests) manager.getAsynchronousCallback(Echo.class); 215 assertNotNull(lvAsynchronousCallbackForTests); 216 217 assertEquals("ping", lvAsynchronousCallbackForTests.getMethodName()); 218 assertEquals("PING", lvAsynchronousCallbackForTests.getResult()); 219 assertNull(lvAsynchronousCallbackForTests.getThrowable()); 220 } 221 222 public void testIndivualAsynchronousInvocationWithMultyThreaded() throws Exception { 223 Properties prop = new Properties(); 224 prop.put(Property.STATIC_PROXY_CLASS, StaticCorbaProxy.class.getName()); 225 prop.put(Property.DYNAMIC_PROXY_CLASS, Property.VALUE_FOR_JDK_DYNAMIC_PROXY); 226 227 ServiceManager manager = new ServiceManager(prop); 228 AsynchronousCallbackForTests lvCallback = new AsynchronousCallbackForTests(); 229 Echo e = (Echo) manager.createService(Echo.class, lvCallback, null, 8); 230 231 String lvEchoStr = null; 232 for (int i=0;i<3;i++) { 233 lvEchoStr = e.echo("Hello"); 234 assertNull(lvEchoStr); 235 } 236 237 Thread.sleep(500); 238 assertEquals("echo", lvCallback.getMethodName()); 239 assertEquals("CORBA-Echo: Hello", lvCallback.getResult()); 240 assertNull(lvCallback.getThrowable()); 241 242 } 243 244 public void testIndivualAsynchronousInvocationWithMultyThreadedWith2Services() throws Exception { 245 Properties prop = new Properties(); 246 prop.put(Property.STATIC_PROXY_CLASS, StaticCorbaProxy.class.getName()); 247 prop.put(Property.DYNAMIC_PROXY_CLASS, Property.VALUE_FOR_JDK_DYNAMIC_PROXY); 248 249 ServiceManager manager = new ServiceManager(prop); 250 AsynchronousCallbackForTests lvCallback = new AsynchronousCallbackForTests(); 251 Echo lvEcho = (Echo) manager.createService(Echo.class, lvCallback, null, 8); 252 Calculator lvCalculator = (Calculator) manager.createService(Calculator.class, lvCallback, null, 8); 253 254 assertNotNull(lvEcho); 255 assertNotNull(lvCalculator); 256 257 String lvEchoStr = null; 258 int lvAddResult = -1; 259 for (int i=0;i<3;i++) { 260 lvEchoStr = lvEcho.echo("Hello"); 261 assertNull(lvEchoStr); 262 lvAddResult = lvCalculator.add(123, 456); 263 assertEquals(0, lvAddResult); 264 } 265 } 266 267 public void testIndivualAsynchronousInvocationWithMethodFilter() throws Exception { 268 Properties prop = new Properties(); 269 prop.put(Property.STATIC_PROXY_CLASS, StaticCorbaProxy.class.getName()); 270 prop.put(Property.DYNAMIC_PROXY_CLASS, Property.VALUE_FOR_JDK_DYNAMIC_PROXY); 271 272 ServiceManager manager = new ServiceManager(prop); 273 AsynchronousCallbackForTests lvCallback = new AsynchronousCallbackForTests(); 274 Echo e = (Echo) manager.createService(Echo.class, lvCallback, new String[] { "ping" }, 4); 275 276 String lvEchoStr = null; 277 String lvPing = null; 278 for (int i=0;i<3;i++) { 279 lvPing = e.ping(); 280 assertNotNull(lvPing); 281 assertEquals("PING", lvPing); 282 lvEchoStr = e.echo("Hello"); 283 assertNull(lvEchoStr); 284 } 285 } 286 287 288 public void testAddAndRemoveAsynchronousCallback() throws Exception { 289 Properties prop = new Properties(); 290 prop.put(Property.STATIC_PROXY_CLASS, StaticCorbaProxy.class.getName()); 291 prop.put(Property.DYNAMIC_PROXY_CLASS, Property.VALUE_FOR_JDK_DYNAMIC_PROXY); 292 293 294 ServiceManager manager = new ServiceManager(prop); 295 AsynchronousCallbackForTests lvCallback = new AsynchronousCallbackForTests(); 296 Echo e = (Echo) manager.createService(Echo.class, lvCallback, new String[] { "ping" }, 4); 297 Calculator c = (Calculator) manager.createService(Calculator.class, lvCallback, null, 4); 298 299 String lvEchoStr = e.echo("Hello"); 300 assertNull(lvEchoStr); 301 302 int lvAddResult = c.add(1, 3); 303 assertEquals(0, lvAddResult); 304 305 assertTrue(manager.isInvocationAsynchronous(Calculator.class)); 306 manager.removeAsynchronousCallback(Calculator.class); 307 assertFalse(manager.isInvocationAsynchronous(Calculator.class)); 308 309 lvEchoStr = e.echo("Hello2"); 310 assertNull(lvEchoStr); 311 312 lvAddResult = c.add(2, 3); 313 assertEquals(5, lvAddResult); 314 315 316 manager.removeAsynchronousCallback(Echo.class); 317 318 lvEchoStr = e.echo("Hello3"); 319 assertNotNull(lvEchoStr); 320 assertEquals("CORBA-Echo: Hello3", lvEchoStr); 321 } 322 323 324 }