1 package org.jacorb.test.notification; 2 3 import junit.framework.Assert; 4 import junit.framework.Test; 5 6 import org.jacorb.test.notification.common.NotifyServerTestCase; 7 import org.jacorb.test.notification.common.NotifyServerTestSetup; 8 import org.omg.CORBA.Any ; 9 import org.omg.CORBA.IntHolder ; 10 import org.omg.CORBA.TRANSIENT ; 11 import org.omg.CosNotification.AnyOrder; 12 import org.omg.CosNotification.DiscardPolicy; 13 import org.omg.CosNotification.LifoOrder; 14 import org.omg.CosNotification.OrderPolicy; 15 import org.omg.CosNotification.Property; 16 import org.omg.CosNotifyChannelAdmin.AdminNotFound; 17 import org.omg.CosNotifyChannelAdmin.ClientType; 18 import org.omg.CosNotifyChannelAdmin.ConsumerAdmin; 19 import org.omg.CosNotifyChannelAdmin.EventChannel; 20 import org.omg.CosNotifyChannelAdmin.InterFilterGroupOperator; 21 import org.omg.CosNotifyChannelAdmin.ProxySupplier; 22 import org.omg.CosNotifyChannelAdmin.SupplierAdmin; 23 24 import EDU.oswego.cs.dl.util.concurrent.Latch; 25 26 29 30 public class EventChannelTest extends NotifyServerTestCase 31 { 32 private Any testPerson_; 33 34 private EventChannel channel_; 35 36 private SupplierAdmin supplierAdmin_; 37 38 private ConsumerAdmin consumerAdmin_; 39 40 43 public void setUpTest() throws Exception ![JavaDoc](../../../../../cmn/javadoc.gif) 44 { 45 testPerson_ = new NotificationTestUtils(getClientORB()).getTestPersonAny(); 46 47 channel_ = getDefaultChannel(); 48 49 supplierAdmin_ = channel_.default_supplier_admin(); 50 consumerAdmin_ = channel_.default_consumer_admin(); 51 } 52 53 public void testDefaultAdmins() throws Exception ![JavaDoc](../../../../../cmn/javadoc.gif) 54 { 55 assertEquals(channel_, supplierAdmin_.MyChannel()); 56 assertEquals(channel_, consumerAdmin_.MyChannel()); 57 58 assertEquals(supplierAdmin_, channel_.default_supplier_admin()); 59 assertEquals(consumerAdmin_, channel_.default_consumer_admin()); 60 61 assertEquals(consumerAdmin_, channel_.get_consumeradmin(consumerAdmin_.MyID())); 62 final int adminID = supplierAdmin_.MyID(); 63 64 assertEquals(supplierAdmin_, channel_.get_supplieradmin(adminID)); 65 66 assertTrue(containsValue(channel_.get_all_consumeradmins(), consumerAdmin_.MyID())); 67 68 assertTrue(containsValue(channel_.get_all_supplieradmins(), supplierAdmin_.MyID())); 69 } 70 71 public void testCreateConsumerAdmin() throws Exception ![JavaDoc](../../../../../cmn/javadoc.gif) 72 { 73 IntHolder id = new IntHolder (); 74 ConsumerAdmin admin = channel_.new_for_consumers(InterFilterGroupOperator.AND_OP, id); 75 76 assertEquals(InterFilterGroupOperator.AND_OP, admin.MyOperator()); 77 78 assertEquals(id.value, admin.MyID()); 79 80 assertTrue(containsValue(channel_.get_all_consumeradmins(), admin.MyID())); 81 82 assertEquals(admin, channel_.get_consumeradmin(id.value)); 83 } 84 85 public void testCreateSupplierAdmin() throws Exception ![JavaDoc](../../../../../cmn/javadoc.gif) 86 { 87 IntHolder id = new IntHolder (); 88 SupplierAdmin admin = channel_.new_for_suppliers(InterFilterGroupOperator.AND_OP, id); 89 90 assertEquals(InterFilterGroupOperator.AND_OP, admin.MyOperator()); 91 92 assertEquals(id.value, admin.MyID()); 93 94 assertTrue(containsValue(channel_.get_all_supplieradmins(), admin.MyID())); 95 96 assertEquals(admin, channel_.get_supplieradmin(id.value)); 97 } 98 99 public void testDestroyAdmin() throws Exception ![JavaDoc](../../../../../cmn/javadoc.gif) 100 { 101 IntHolder id = new IntHolder (); 102 SupplierAdmin admin1 = channel_.new_for_suppliers(InterFilterGroupOperator.AND_OP, id); 103 104 IntHolder id2 = new IntHolder (); 105 SupplierAdmin admin2 = channel_.new_for_suppliers(InterFilterGroupOperator.AND_OP, id2); 106 107 assertEquals(admin1, channel_.get_supplieradmin(id.value)); 108 109 admin1.destroy(); 110 111 try 112 { 113 channel_.get_supplieradmin(id.value); 114 fail(); 115 } catch (AdminNotFound e) 116 { 117 } 119 120 assertEquals(admin2, channel_.get_supplieradmin(id2.value)); 121 } 122 123 private boolean containsValue(final int[] array, final int value) 124 { 125 boolean seen = false; 126 127 for (int i = 0; i < array.length; i++) 128 { 129 if (array[i] == value) 130 { 131 seen = true; 132 } 133 } 134 return seen; 135 } 136 137 public EventChannelTest(String name, NotifyServerTestSetup setup) 138 { 139 super(name, setup); 140 } 141 142 public void testSetQos() throws Exception ![JavaDoc](../../../../../cmn/javadoc.gif) 143 { 144 IntHolder ih = new IntHolder (); 145 146 ProxySupplier ps = consumerAdmin_.obtain_notification_push_supplier( 147 ClientType.STRUCTURED_EVENT, ih); 148 149 Property[] props = new Property[2]; 150 151 Any discardPolicy = getClientORB().create_any(); 152 Any orderPolicy = getClientORB().create_any(); 153 154 discardPolicy.insert_short(LifoOrder.value); 155 orderPolicy.insert_short(AnyOrder.value); 156 157 props[0] = new Property(DiscardPolicy.value, discardPolicy); 158 props[1] = new Property(OrderPolicy.value, orderPolicy); 159 160 ps.set_qos(props); 161 162 Property[] new_props = ps.get_qos(); 163 164 for (int x = 0; x < new_props.length; ++x) 165 { 166 if (new_props[x].name.equals(DiscardPolicy.value)) 167 { 168 assertEquals(discardPolicy, new_props[x].value); 169 } 170 171 if (new_props[x].name.equals(OrderPolicy.value)) 172 { 173 assertEquals(orderPolicy, new_props[x].value); 174 } 175 } 176 } 177 178 public void testGetConsumerAdmin() throws Exception ![JavaDoc](../../../../../cmn/javadoc.gif) 179 { 180 channel_.default_consumer_admin(); 181 channel_.get_consumeradmin(0); 182 183 int[] _allKeys = channel_.get_all_consumeradmins(); 184 185 assertContains(0, _allKeys); 186 187 IntHolder ih = new IntHolder (); 188 channel_.new_for_consumers(InterFilterGroupOperator.AND_OP, ih); 189 190 _allKeys = channel_.get_all_consumeradmins(); 191 assertContains(ih.value, _allKeys); 192 193 try 194 { 195 channel_.get_consumeradmin(Integer.MIN_VALUE); 196 fail(); 197 } catch (AdminNotFound e) 198 { 199 } 201 202 ConsumerAdmin c3 = channel_.get_consumeradmin(ih.value); 203 204 assertEquals(ih.value, c3.MyID()); 205 } 206 207 public void testGetSupplierAdmin() throws Exception ![JavaDoc](../../../../../cmn/javadoc.gif) 208 { 209 channel_.default_supplier_admin(); 210 channel_.get_supplieradmin(0); 211 212 int[] _allKeys = channel_.get_all_supplieradmins(); 213 214 assertContains(0, _allKeys); 215 216 IntHolder ih = new IntHolder (); 217 channel_.new_for_suppliers(InterFilterGroupOperator.AND_OP, ih); 218 219 _allKeys = channel_.get_all_supplieradmins(); 220 assertContains(ih.value, _allKeys); 221 222 try 223 { 224 channel_.get_supplieradmin(Integer.MIN_VALUE); 225 fail(); 226 } catch (AdminNotFound e) 227 { 228 } 230 231 SupplierAdmin c3 = channel_.get_supplieradmin(ih.value); 232 assertEquals(ih.value, c3.MyID()); 233 } 234 235 static void assertContains(int i, int[] is) 236 { 237 boolean seen = false; 238 for (int x = 0; x < is.length; ++x) 239 { 240 if (is[x] == i) 241 { 242 seen = true; 243 } 244 } 245 Assert.assertTrue(seen); 246 } 247 248 public void testSendEventPushPull() throws Exception ![JavaDoc](../../../../../cmn/javadoc.gif) 249 { 250 AnyPullReceiver _receiver = new AnyPullReceiver(getClientORB()); 251 _receiver.connect(channel_, false); 252 AnyPushSender _sender = new AnyPushSender(getClientORB(), testPerson_); 253 _sender.connect(channel_, false); 254 255 Thread _receiverThread = new Thread (_receiver); 256 _receiverThread.start(); 257 _sender.run(); 258 259 _receiverThread.join(); 260 assertTrue(!_receiver.isError()); 261 262 assertTrue(_receiver.isEventHandled()); 263 264 _receiver.shutdown(); 265 _sender.shutdown(); 266 } 267 268 public void testSendEventPushPush() throws Exception ![JavaDoc](../../../../../cmn/javadoc.gif) 269 { 270 AnyPushReceiver _receiver = new AnyPushReceiver(getClientORB()); 272 _receiver.connect(channel_, false); 273 274 Thread _receiverThread = new Thread (_receiver); 275 276 AnyPushSender _sender = new AnyPushSender(getClientORB(), testPerson_); 278 279 _sender.connect(channel_, false); 280 281 _receiverThread.start(); 282 283 _sender.run(); 284 285 _receiverThread.join(); 286 287 assertTrue(_receiver.isEventHandled()); 288 289 _receiver.shutdown(); 290 _sender.shutdown(); 291 } 292 293 public void testSendEventPushPush_MisbehavingConsumer() throws Exception ![JavaDoc](../../../../../cmn/javadoc.gif) 294 { 295 final Latch disconnectedLatch = new Latch(); 296 297 AnyPushReceiver _receiver = new AnyPushReceiver(getClientORB()) 299 { 300 public void push(Any any) 301 { 302 throw new TRANSIENT (); 303 } 304 305 public void disconnect_push_consumer() 306 { 307 super.disconnect_push_consumer(); 308 309 disconnectedLatch.release(); 310 } 311 }; 312 _receiver.connect(channel_, false); 313 314 Thread _receiverThread = new Thread (_receiver); 315 316 AnyPushSender _sender = new AnyPushSender(getClientORB(), testPerson_); 318 319 _sender.connect(channel_, false); 320 321 _receiverThread.start(); 322 323 _sender.run(); 324 325 assertTrue(disconnectedLatch.attempt(20000)); 326 327 assertTrue(!_receiver.isConnected()); 328 329 _sender.shutdown(); 330 } 331 332 public void testSendEventPullPush() throws Exception ![JavaDoc](../../../../../cmn/javadoc.gif) 333 { 334 AnyPullSender _sender = new AnyPullSender(getClientORB(), testPerson_); 335 _sender.connect(channel_, false); 336 337 AnyPushReceiver _receiver = new AnyPushReceiver(getClientORB()); 338 _receiver.connect(channel_, false); 339 340 Thread _receiverThread = new Thread (_receiver); 341 _receiverThread.start(); 342 343 _sender.run(); 344 345 _receiverThread.join(); 346 347 assertTrue(_sender.isEventHandled()); 348 assertTrue(_receiver.isEventHandled()); 349 350 _receiver.shutdown(); 351 _sender.shutdown(); 352 353 } 354 355 public void testSendEventPullPull() throws Exception ![JavaDoc](../../../../../cmn/javadoc.gif) 356 { 357 AnyPullSender _sender = new AnyPullSender(getClientORB(), testPerson_); 358 _sender.connect(channel_, false); 359 360 AnyPullReceiver _receiver = new AnyPullReceiver(getClientORB()); 361 _receiver.connect(channel_, false); 362 363 Thread _receiverThread = new Thread (_receiver); 364 _receiverThread.start(); 365 366 _sender.run(); 367 368 _receiverThread.join(); 369 370 assertTrue(_sender.isEventHandled()); 371 assertTrue(_receiver.isEventHandled()); 372 373 _receiver.shutdown(); 374 _sender.shutdown(); 375 376 } 377 378 381 public void testDestroyChannelDisconnectsClients() throws Exception ![JavaDoc](../../../../../cmn/javadoc.gif) 382 { 383 IntHolder _id = new IntHolder (); 384 385 EventChannel _channel = getEventChannelFactory().create_channel(new Property[0], new Property[0], _id); 386 387 AnyPullReceiver _anyPullReceiver = new AnyPullReceiver(getClientORB()); 388 _anyPullReceiver.connect(_channel, false); 389 390 AnyPushReceiver _anyPushReceiver = new AnyPushReceiver(getClientORB()); 391 _anyPushReceiver.connect(_channel, false); 392 393 AnyPullSender _anyPullSender = new AnyPullSender(getClientORB(), testPerson_); 394 _anyPullSender.connect(_channel, false); 395 396 AnyPushSender _anyPushSender = new AnyPushSender(getClientORB(), testPerson_); 397 _anyPushSender.connect(_channel, false); 398 399 assertTrue(_anyPullReceiver.isConnected()); 400 assertTrue(_anyPushReceiver.isConnected()); 401 assertTrue(_anyPullSender.isConnected()); 402 assertTrue(_anyPushSender.isConnected()); 403 404 _channel.destroy(); 405 406 assertTrue(!_anyPullReceiver.isConnected()); 407 assertTrue(!_anyPushReceiver.isConnected()); 408 assertTrue(!_anyPullSender.isConnected()); 409 assertTrue(!_anyPushSender.isConnected()); 410 } 411 412 415 public void testDestroyAdminDisconnectsClients() throws Exception ![JavaDoc](../../../../../cmn/javadoc.gif) 416 { 417 IntHolder _id = new IntHolder (); 418 419 EventChannel _channel = getEventChannelFactory().create_channel(new Property[0], new Property[0], _id); 420 421 AnyPullReceiver _anyPullReceiver = new AnyPullReceiver(getClientORB()); 422 _anyPullReceiver.connect(_channel, false); 423 424 AnyPushReceiver _anyPushReceiver = new AnyPushReceiver(getClientORB()); 425 _anyPushReceiver.connect(_channel, false); 426 427 AnyPullSender _anyPullSender = new AnyPullSender(getClientORB(), testPerson_); 428 _anyPullSender.connect(_channel, false); 429 430 AnyPushSender _anyPushSender = new AnyPushSender(getClientORB(), testPerson_); 431 _anyPushSender.connect(_channel, false); 432 433 assertTrue(_anyPullReceiver.isConnected()); 434 assertTrue(_anyPushReceiver.isConnected()); 435 assertTrue(_anyPullSender.isConnected()); 436 assertTrue(_anyPushSender.isConnected()); 437 438 _anyPullReceiver.myAdmin_.destroy(); 439 _anyPushReceiver.myAdmin_.destroy(); 440 _anyPullSender.myAdmin_.destroy(); 441 _anyPushSender.myAdmin_.destroy(); 442 443 assertTrue(!_anyPullReceiver.isConnected()); 444 assertTrue(!_anyPushReceiver.isConnected()); 445 assertTrue(!_anyPullSender.isConnected()); 446 assertTrue(!_anyPushSender.isConnected()); 447 448 _channel.destroy(); 449 } 450 451 public void testCreateChannel() throws Exception ![JavaDoc](../../../../../cmn/javadoc.gif) 452 { 453 IntHolder _id = new IntHolder (); 454 455 EventChannel _channel = getEventChannelFactory().create_channel(new Property[0], new Property[0], _id); 456 457 int[] _allFactories = getEventChannelFactory().get_all_channels(); 459 boolean _seen = false; 460 for (int x = 0; x < _allFactories.length; ++x) 461 { 462 if (_allFactories[x] == _id.value) 463 { 464 _seen = true; 465 } 466 } 467 assertTrue(_seen); 468 469 EventChannel _sameChannel = getEventChannelFactory().get_event_channel(_id.value); 470 assertTrue(_channel._is_equivalent(_sameChannel)); 471 472 _channel.destroy(); 473 } 474 475 public static Test suite() throws Exception ![JavaDoc](../../../../../cmn/javadoc.gif) 476 { 477 return NotifyServerTestCase.suite("Basic CosNotification EventChannel Tests", 478 EventChannelTest.class); 479 } 480 } | Popular Tags |