EventMailbox Tests

Test Name & Motivation | Description | Categorization | Specification Requirements
EventMailboxServiceInterfaceTest (EMSIFT) | 1. Start LUS in GROUP1 2. Start EventMailboxService (EMS) and join LUS 3. Get EMS reference 4. Call EMS.register(DELAY) [EMS 1,2] 5. Verify that the obtained lease is <= DELAY [EMS 3,6] 6. Call EMS.register(-DELAY) 7. Verify that an IllegalArgumentException is thrown [1] 8. Call EMS.register(Lease.FOREVER) 9. Verify that the obtained lease <= FOREVER 10. Call EMS.register(Lease.ANY) 11. Verify that the obtained lease >= 0, <= FOREVER 12. Verify that all MailboxRegistration objects are different (both '==' and 'equals()') [EMS 5] |  | Note: [1] Not specified yet
EventMailboxServiceRegistrationInterfaceTest (EMSRIFT) | 1. Start LUS in GROUP1 2. Start EventMailboxService (EMS) and join LUS 3. Get EMS reference 4. Call EMS.register(DELAY) and obtain MR [EMS 1,2] 5. Verify that granted lease <= DELAY [EMS 3,6] 6. Pass lease to LeaseRenewalManager, if necessary (LRM) 7. Call MR.getListener to obtain the mailbox provided listener (MREL) 8. Verify that the returned object is of type RemoteEventListener [EMS 7] 9. Call MR.enableDelivery(MREL) and verify that an IllegalArgumentException is thrown 10. Call MR.enableDelivery(REL) where REL counts the # of received events 11. Verify that REL receives no events [EMS 8] 12. Call MR.enableDelivery(REL) again [EMS 9] 13. Verify that REL receives no events 14. Call MR.enableDelivery(NULL) [EMS 15] 15. Verify that REL receives no events 16. Call MR.disableDelivery() [EMS 16,17] 17. Verify that REL receives no events 18. Call MR.enableDelivery(REL) again 19. Verify that REL receives no events 20. Call MR.disableDelivery() 21. Verify that REL receives no events 22. Cancel MR lease [EMS 18] 23. Verify that REL receives no events |  |
EventMailboxServiceRegistrationInterfaceTest2 (EMSRIFT2) | 1. Start LUS in GROUP1 2. Start EventMailboxService (EMS) and join LUS 3. Get EMS reference 24. Call EMS.register(DELAY) and obtain MR1 [EMS 1,2] 25. Verify that granted lease <= DELAY [EMS 3,6] 26. Call EMS.register(DELAY) and obtain MR2 [EMS 1,2] 27. Verify that granted lease <= DELAY [EMS 3,6] 4. Pass leases to LeaseRenewalManager, if necessary (LRM) 5. Call MR1.getListener to obtain the mailbox provided listener (MREL1) 6. Verify that the returned object is of type RemoteEventListener [EMS 7] 7. Call MR2.getListener to obtain the mailbox provided listener (MREL2) 8. Verify that the returned object is of type RemoteEventListener [EMS 7] 9. Call MR1.enableDelivery(MREL1) and verify that an IllegalArgumentException is thrown 10. Call MR1.enableDelivery(MREL2) and verify that an IllegalArgumentException is thrown 11. Call MR2.enableDelivery(MREL1) and verify that an IllegalArgumentException is thrown 12. Call MR2.enableDelivery(MREL2) and verify that an IllegalArgumentException is thrown 13. Call MR1.enableDelivery(REL) where REL counts the # of received events 14. Verify that REL receives no events [EMS 8] 15. Call MR2.enableDelivery(REL) 16. Verify that REL receives no events [EMS 8] 17. Call MR2.enableDelivery(REL) again [EMS 9] 18. Verify that REL receives no events 19. Call MR1.enableDelivery(REL) again [EMS 9] 20. Verify that REL receives no events 21. Call MR1.enableDelivery(NULL) [EMS 15] 22. Verify that REL receives no events 23. Call MR2.enableDelivery(NULL) [EMS 15] 24. Verify that REL receives no events 25. Call MR1.enableDelivery(NULL) [EMS 15] 26. Verify that REL receives no events 27. Call MR1.disableDelivery() [EMS 16,17] 28. Verify that REL receives no events 29. Call MR2.disableDelivery() [EMS 16,17] 30. Verify that REL receives no events 31. Call MR1.enableDelivery(REL) 32. Verify that REL receives no events 33. Call MR2.enableDelivery(REL) 34. Verify that REL receives no events 35. Call MR1.disableDelivery() 36. Verify that REL receives no events 37. Call MR2.disableDelivery() 38. Verify that REL receives no events 39. Cancel EMS leases [EMS 18] 40. Verify that REL receives no events |  |
EventMailboxServiceFunctionalTest (EMSFT) | 1. Start LUS in GROUP 2. Start EventMailboxService (EMS) and join LUS 3. Get EMS reference 4. Call EMS.register(Lease.DELAY) [EMS 1,2] 5. Verify that granted lease <= DELAY, >= 0 [EMS 3,6] 6. Pass lease to LeaseRenewalManager (LRM), if necessary 7. Call (MR) MailboxRegistration.getListener() (EMSL) [EMS 7] 8. Create an event generator (EG) and pass it the ref to EMSL [1] 9. Use EG to send 5 events to the EMS 10. Call MR.enableDelivery(REL) where REL keeps count of received events [EMS 8, 13] 11. Verify that REL receives 5 events and in order [2] 12. Call MR.enableDelivery(REL) again 13. Verify that no new events are received 14. Use EG to send 5 events 15. Verify that REL receives 5 events [EMS 10] 16. Call MR.enableDelivery(REL2) [EMS 9] 17. Use EG to send 5 events 18. Verify that REL2 receives 5 events 19. Create EG2 and pass it a ref to EMSL 20. Use EG2 to send 5 events 21. Verify that REL2 receives 5 events 22. Call MR.disableDelivery() [EMS 14, 16] 23. Use EG2 to send 5 events 24. Use EG to send 5 events 25. Verify that REL & REL2 receive no events 26. Call MR.enableDelivery(REL) 27. Verify that REL receives 10 events 28. Call MR.enableDelivery(NULL) [EMS 15] 29. Use EG to send an event 30. Verify that REL & REL2 receive no events 31. Call MR.enableDelivery(REL2) 32. Verify that REL2 gets an event 33. Call MR.disableDelivery 34. Use EG to send an event 35. Call MR.disableDelivery [EMS 17] 36. Use EG2 to send an event 37. Verify that REL2 receives no events 38. Call MR.enableDelivery(REL2) 39. Verify that REL2 receives two events 40. Cancel MR's lease [EMS 18] 41. Use EG to send an event 42. Use EG2 to send an event 43. Verify that no events are received |  | Notes: [1] Event generator is a local object that produces events with strictly increasing Ids [2] Ordering not specified yet
EventMailboxServiceNoSuchObjectTest (EMSNSOT) | 1. Start LUS in GROUP 2. Start EventMailboxService (EMS) and join LUS 3. Call EMS.register(Lease.DELAY) [EMS 1,2] 4. Pass lease to LeaseRenewalManager (LRM), if necessary 5. Call (MR) MailboxRegistration.getListener() (EMSL) [EMS 7] 6. Pass EMSL reference to Event Generator (EG) 7. Use EG to send 5 events 8. Call MR.enableDelivery(REL) where REL throws NoSuchObjectException 9. Verify that REL doesn't get called more than once [EMS 12] 10. Use EG to send another event 11. Verify that REL receives no events 12. Call MR.enableDelivery(REL2) where REL2 counts the number of events received 13. Verify that all the events are received |  |
EventMailboxServiceRemoteExceptionTest (EMSRET) | 1. Start LUS in GROUP 2. Start EventMailboxService (EMS) and join LUS 3. Call EMS.register(Lease.DELAY) [EMS 1,2] 4. Pass lease to LeaseRenewalManager (LRM), if necessary 5. Call (MR) MailboxRegistration.getListener() (EMSL) [EMS 7] 6. Pass EMSL reference to Event Generator (EG) 7. Use EG to send 5 events 8. Call MR.enableDelivery(REL) where REL throws RemoteException 9. Wait DELAY2 ms in order to give MB a chance to redeliver event 10. Verify that REL only received the first event (since the retry attempts should deliver the same event each time upto (perhaps) some implementation dependent retry count). 11. Call MR.enableDelivery(REL2) where REL2 counts the number of events 12. Verify that REL2 receives 5 events [1] 13. Generate another event 14. Verify that REL2 receives the event |  | Notes: [1] Not a specified requirement
EventMailboxServiceShutdownTest (EMSST) | 1. Start LUS in GROUP 2. Start EventMailboxService (EMS) and join LUS 3. Call EMS.register(Lease.FOREVER) [EMS 1,2] 4. Pass lease to LeaseRenewalManager (LRM) 5. Call (MR) MailboxRegistration.getListener() (EMSL) [EMS 7] 6. Pass EMSL reference to Event Generator (EG) 7. Use EG to send 5 events 8. Kill EMS service/process (via admin?) [1] 9. Wait for process to restart (via activation?) [2] 10. Call MR.enableDelivery(REL) where REL counts received events 11. Verify that REL receives all the events [3] |  | Notes: [1] Assumes admin or test harness support [2] Assumes test harness or activatable support [3] This requirement isn't specified
EventMailboxServiceShutdownTest2 (EMSS2T) | 1. Start LUS in GROUP 2. Start EventMailboxService (EMS) and join LUS 3. Call EMS.register(Lease.FOREVER) [EMS 1,2] 4. Pass lease to LeaseRenewalManager (LRM) 5. Call (MR) MailboxRegistration.getListener() (EMSL) [EMS 7] 6. Pass EMSL reference to Event Generator (EG) 7. Use EG to send 5 events 8. Kill EMS service/process (via admin?) [1] 9. Wait DEALY until mailbox registration expires 10. Call MR.enableDelivery(REL) where REL counts received events 11. Verify that a NoSuchObjectException is thrown |  |
EventMailboxServiceShutdownTest3 (EMSST3) | 1. Start LUS in GROUP 2. Start EventMailboxService (EMS) and join LUS 3. Call EMS.register(Lease.FOREVER) [EMS 1,2] 4. Pass lease to LeaseRenewalManager (LRM) 5. Call (MR) MailboxRegistration.getListener() (EMSL) [EMS 7] 6. Pass EMSL reference to Event Generator (EG) 7. Use EG to send 5 events 8. Cancel the registration 9. Kill EMS service/process (via admin?) [1] 10. Wait for process to restart (via activation?) [2] 11. Call MR.enableDelivery(REL) where REL counts received events (sometime before the original registration lease would have expired.) 12. Verify that a NoSuchObjectException is thrown |  |
EventMailboxServiceLeaseExpirationTest (EMSLET) | 1. Start LUS in GROUP 2. Start EventMailboxService (EMS) and join LUS 3. Call EMS.register(Lease.DELAY) [EMS 1,2] 4. Pass lease to LeaseRenewalManager (LRM), if necessary 5. Call (MR) MailboxRegistration.getListener() (EMSL) [EMS 7] 6. Pass EMSL reference to Event Generator (EG) 7. Use EG to send 5 events 8. Call MR.enableDelivery(REL) where REL counts the number of received events 9. Verify that REL receives 5 events 10. Wait until lease expires 11. Use EG to send 5 events 12. Verify that REL receives no events 13. Use MR.enableDelivery(REL) 14. Verify that NoSuchObjectException is thrown [1] |  | Notes: [1] This requirement is not specified
EventMailboxServiceLeaseCancellationTest (EMSLCT) | 15. Start LUS in GROUP 16. Start EventMailboxService (EMS) and join LUS 17. Call EMS.register(Lease.DELAY) [EMS 1,2] 18. Pass lease to LeaseRenewalManager (LRM), if necessary 19. Call (MR) MailboxRegistration.getListener() (EMSL) [EMS 7] 20. Pass EMSL reference to Event Generator (EG) 21. Use EG to send 5 events 22. Call MR.enableDelivery(REL) where REL counts the number of received events 23. Verify that REL receives 5 events 24. Cancel MR's lease 25. Use EG to send 5 events 26. Verify that REL receives no events 27. Use MR.enableDelivery(REL) 28. Verify that NoSuchObjectException is thrown [1] |  | Notes: [1] This requirement is not specified
EventMailboxServiceLoadStressTest (EMSLST) | Start LUS in GROUP Start EventMailboxService (EMS) and join LUS Call EMS.register(Lease.FOREVER) [EMS 1,2] Pass lease to LeaseRenewalManager (LRM) Call (MR) MailboxRegistration.getListener() (EMSL) [EMS 7] Start N EG threads and pass EMSL to them and # of events to produce Call MR.enableDelivery(REL) where REL counts the number of events received Wait until all the events have been successfully received Verify that REL received all the events [1] |  | Notes: [1] Requirement not specified
EventMailboxServiceLoadStressTest2 (EMSLST2) | Start LUS in GROUP Start EventMailboxService (EMS) and join LUS Call EMS.register(Lease.FOREVER) [EMS 1,2] Pass lease to LeaseRenewalManager (LRM) Call (MR) MailboxRegistration.getListener() (EMSL) [EMS 7] Start N EG threads and pass EMSL to them and # of events to produce Call MR.enableDelivery(REL) where REL counts the number of events received Shutdown EMS after DELAY or after approp # of writes Wait until all the events have been successfully received Verify that REL received all the events [1] |  | Notes: [1] Requirement not specified
EventMailboxServiceLoadStressTes3t (EMSLST3) | Start LUS in GROUP Start EventMailboxService (EMS) and join LUS Call EMS.register(Lease.FOREVER) [EMS 1,2] Pass lease to LeaseRenewalManager (LRM) Call (MR) MailboxRegistration.getListener() (EMSL) [EMS 7] Start N EG threads and pass EMSL to them and # of events to produce Wait until EG threads are done Call MR.enableDelivery(REL) where REL counts the number of events received Wait until all the events have been successfully received Verify that REL received all the events [1] |  | Notes: [1] Requirement not specified
EventMailboxServiceLoadStressTes4t (EMSLS4T) | Start LUS in GROUP Start EventMailboxService (EMS) and join LUS Call EMS.register(Lease.FOREVER) [EMS 1,2] Pass lease to LeaseRenewalManager (LRM) Call (MR) MailboxRegistration.getListener() (EMSL) [EMS 7] Start N EG threads and pass EMSL to them and # of events to produce Wait until EG threads are done Shutdown EMS Call MR.enableDelivery(REL) where REL counts the number of events received Wait until all the events have been successfully received Verify that REL received all the events [1] |  | Notes: [1] Requirement not specified
EventMailboxServiceConcurrencyTest (EMSCT) | Start LUS in GROUP Start EventMailboxService (EMS) and join LUS Call EMS.register(Lease.FOREVER) [EMS 1,2] Pass lease to LeaseRenewalManager (LRM) Call (MR) MailboxRegistration.getListener() (EMSL) [EMS 7] Pass EMSL reference to Event Generator (EG) Use EG to send 2 events Call MR.enableDelivery(REL) where REL calls MR.disableDelivery() and MR.enable(null) Verify that only 1 event is received [1] Verify that the callback doesn't deadlock |  | Note: [1] Requirement for stopping pending delivery isn't specified
EventMailboxServiceConcurrencyExceptionTest (EMSCET) | Start LUS in GROUP Start EventMailboxService (EMS) and join LUS Call EMS.register(Lease.FOREVER) [EMS 1,2] Pass lease to LeaseRenewalManager (LRM) Call (MR) MailboxRegistration.getListener() (EMSL) [EMS 7] Pass EMSL reference to Event Generator (EG) Use EG to send 2 events Call MR.enableDelivery(REL) where REL calls MR.disableDelivery() and throws a NoSuchObjectException Verify that only 1 event is received [1] Verify that the callback doesn't deadlock |  | Note: [1] Requirement for stopping pending delivery isn't specified