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)

  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. Start N EG threads and pass EMSL to them and # of events to produce
  7. Call MR.enableDelivery(REL) where REL counts the number of events received
  8. Wait until all the events have been successfully received
  9. Verify that REL received all the events [1]

 

 

Notes:

[1] Requirement not specified

EventMailboxServiceLoadStressTest2 (EMSLST2)

  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. Start N EG threads and pass EMSL to them and # of events to produce
  7. Call MR.enableDelivery(REL) where REL counts the number of events received
  8. Shutdown EMS after DELAY or after approp # of writes
  9. Wait until all the events have been successfully received
  10. Verify that REL received all the events [1]

 

Notes:

[1] Requirement not specified

EventMailboxServiceLoadStressTes3t (EMSLST3)

  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. Start N EG threads and pass EMSL to them and # of events to produce
  7. Wait until EG threads are done
  8. Call MR.enableDelivery(REL) where REL counts the number of events received
  9. Wait until all the events have been successfully received
  10. Verify that REL received all the events [1]

 

Notes:

[1] Requirement not specified

EventMailboxServiceLoadStressTes4t (EMSLS4T)

  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. Start N EG threads and pass EMSL to them and # of events to produce
  7. Wait until EG threads are done
  8. Shutdown EMS
  9. Call MR.enableDelivery(REL) where REL counts the number of events received
  10. Wait until all the events have been successfully received
  11. Verify that REL received all the events [1]

 

Notes:

[1] Requirement not specified

EventMailboxServiceConcurrencyTest (EMSCT)

  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 2 events
  8. Call MR.enableDelivery(REL) where REL calls MR.disableDelivery() and MR.enable(null)
  9. Verify that only 1 event is received [1]
  10. Verify that the callback doesn't deadlock

 

Note:

[1] Requirement for stopping pending delivery isn't specified

EventMailboxServiceConcurrencyExceptionTest (EMSCET)

  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 2 events
  8. Call MR.enableDelivery(REL) where REL calls MR.disableDelivery() and throws a NoSuchObjectException
  9. Verify that only 1 event is received [1]
  10. Verify that the callback doesn't deadlock

 

Note:

[1] Requirement for stopping pending delivery isn't specified