Test Name & Motivation
Description
Categorization
Specification Requirements
WriteTest,
TransactionWriteTest,
SnapshotWriteTest,
SnapshotTransactionWriteTest



Asserts that write with positive finite lease times without transactions:

1) Places a copy of an entry into the given JavaSpaces service, even if the same Entry object is used in more than one write.
2) The Entry passed to the write is not affected by this operations.
3) If a write returns without throwing an exception, that entry is committed to the space, possibly within a transaction.
 
Matrix ID 1, 2, 6
1. Write 1-st sample entry to the space.


2. Assert, that original entry has not been changed.


3. Assert, that written entry is available in the space.


4. Write 2-nd sample entry to the space.


5. Assert, that original entry has not been changed.


6. Assert, that written entry is available in the space.


7. Write 1-st sample entry to the space again.


8. Assert, that original entry has not been changed.


9. Assert, that written entry is available in the space.
A1, M1
JavaSpaces 
Section 2.3
WriteLeaseANYTest,
TransactionWriteLeaseANYTest,
SnapshotWriteLeaseANYTest,
SnapshotTransactionWriteLeaseANYTest



Asserts that write with Lease.ANY value for lease time without transactions:
1) Places a copy of an entry into the given JavaSpaces service, even if the same Entry object is used in more than one write.
2) IllegalArgumentException will not be thrown while this operations.
3) The Entry passed to the write is not affected by this operations.
4) If a write returns without throwing an exception, that entry is committed to the space, possibly within a transaction.

Matrix ID 1, 2, 6

1. Write 1-st sample entry with Lease.ANY lease time to the space.


2. Assert, that IllegalArgumentException will not be thrown during this operation.


3. Assert, that original entry has not been changed.


4. Assert, that written entry is available in the space.


5. Write 2-nd sample entry with Lease.ANY lease time to the space.


6. Assert, that IllegalArgumentException will not be thrown during this operation.


7. Assert, that original entry has not been changed.


8. Assert, that written entry is available in the space.


9. Write 1-st sample entry with Lease.ANY lease time to the space again.


10. Assert, that IllegalArgumentException will not be thrown during this operation.


11. Assert, that original entry has not been changed.


12. Assert, that written entry is available in the space.
A1, M1 JavaSpaces 
Section 2.3
WriteLeaseFOREVERTest,
TransactionWriteLeaseFOREVERTest,
SnapshotWriteLeaseFOREVERTest,
SnapshotTransactionWriteLeaseFOREVERTest



Asserts that write with Lease.FOREVER lease time without transactions:
1) Places a copy of an entry into the given JavaSpaces service, even if the same Entry object is used in more than one write.
2) The Entry passed to the write is not affected by this operations.
3) If a write returns without throwing an exception, that entry is committed to the space, possibly within a transaction.

Matrix ID 1, 2, 6

1. Write 1-st sample entry with Lease.FOREVER lease time to the space.


2. Assert, that original entry has not been changed.


3. Assert, that written entry is available in the space.


4. Write 2-nd sample entry with Lease.FOREVER lease time to the space.


5. Assert, that original entry has not been changed.


6. Assert, that written entry is available in the space.


7. Write 1-st sample entry with Lease.FOREVER lease time to the space again.


8. Assert, that original entry has not been changed.


9. Assert, that written entry is available in the space.
A1, M1 JavaSpaces 
Section 2.3
WriteNegativeLeaseTest,
TransactionWriteNegativeLeaseTest,
SnapshotWriteNegativeLeaseTest,
SnapshotTransactionWriteNegativeLeaseTest



Asserts, that we will get an IllegalArgumentException if the lease time requested is negative and is not equal to Lease.ANY.

Matrix ID 5

1. Try to write an entry with negative lease time other then Lease.ANY.

2. Assert, that IllegalArgumentException will be thrown during this operation.

3. Assert, that original entry has not been changed.

4. Assert, that entry, which was used in write request, has not been written to the space.
A1, M1 JavaSpaces 
Section 2.3
ReadTest,
TransactionReadTest,
SnapshotReadTest,
SnapshotTransactionReadTest



Asserts, that for read with timeouts other then NO_WAIT:

1) If a match is found by read, a reference to a copy of the matching entry is returned.
2) If no match is found, null is returned.
3) Passing a null reference for the template will match any entry.

Matrix ID 9, 10, 11

1. Write 3 sample entries to the space.

2. Read 1-st entry from the space using the same one as a template.

3. Assert, that a copy of 1-st entry will be returned.

4. Read entry from the space using different wrong templates.

5. Assert, that read requests will return not less then in specified timeouts.

6. Assert, that null will be returned after each operation.

7. Read entry from the space using null template.

8. Assert, that a copy of one of written entries will be returned.

9. Read entry from the space using null for different fields.

10. Assert, that a copy of matching entry will be returned.
A1, M1 JavaSpaces 
Section 2.4
ReadIfExistsTest,
TransactionReadIfExistsTest,
SnapshotReadIfExistsTest,
SnapshotTransactionReadIfExistsTest



Asserts, that for readIfExists with timeouts other then NO_WAIT:

1) If a match is found by readIfExists, a reference to a copy of the matching entry is returned.
2) If no match is found, null is returned.
3) Passing a null reference for the template will match any entry.
4) A readIfExists request will return a matching entry, or null if there is currently no matching entry in the space.

Matrix ID 9, 10, 11, 12

1. Write 3 sample entries to the space.

2. ReadIfExists 1-st entry from the space using the same one as a template.

3. Assert, that readIfExists request will return immediately.

4. Assert, that a copy of 1-st entry will be returned.

5. ReadIfExists entry from the space using different wrong templates.

6. Assert, that readIfExists requests will return immediately.

7. Assert, that null will be returned after each operation.

8. ReadIfExists entry from the space using null template.

9. Assert, that readIfExists request will return immediately.

10. Assert, that a copy of one of written entries will be returned.

11. ReadIfExists entry from the space using null for different fields.

12. Assert, that readIfExists requests will return immediately.

13. Assert, that a copy of matching entry will be returned.
A1, M1 JavaSpaces 
Section 2.4
ReadNO_WAITTest,
ReadIfExistsNO_WAITTest,
TransactionReadNO_WAITTest,
TransactionReadIfExistsNO_WAITTest,
SnapshotReadNO_WAITTest,
SnapshotReadIfExistsNO_WAITTest,
SnapshotTransactionReadNO_WAITTest,
SnapshotTransactionReadIfExistsNO_WAITTest



Asserts, that for read with NO_WAIT timeout:
1) A timeout of NO_WAIT means to return immediately, with no waiting, which is equivalent to using a zero timeout.
2) If a match is found by read, a reference to a copy of the matching entry is returned.
3) If no match is found, null is returned.
4) Passing a null reference for the template will match any entry.

Matrix ID 9, 10, 11, 16

1. Write 3 sample entries to the space.

2. Read 1-st entry from the space with JavaSpace.NO_WAIT timeout value using the same one as a template.

3. Assert, that read operation will return immediately.

4. Assert, that a copy of 1-st entry will be returned.

5. Read entry from the space using different wrong templates and JavaSpace.NO_WAIT timeout value.

6. Assert, that read operation will return immediately.

7. Assert, that null will be returned after each operation.

8. Read entry from the space using null template and JavaSpace.NO_WAIT timeout value.

9. Assert, that read operation will return immediately.

10. Assert, that a copy of one of written entries will be returned.

11. Read entry from the space using null for different fields and JavaSpace.NO_WAIT timeout value.

12. Assert, that read operation will return immediately.

13. Assert, that a copy of matching entry will be returned.
A1, M1 JavaSpaces 
Section 2.4
TakeTest,
TransactionTakeTest,
SnapshotTakeTest,
SnapshotTransactionTakeTest



Asserts, that for take with timeouts other then NO_WAIT:
1) If a take returns a non-null value, the entry has been removed from the space.
2) If no match is found, null is returned.
3) Passing a null reference for the template will match any entry.

Matrix ID 17, 18

1. Write 3 sample entries to the space.

2. Take 1-st entry from the space using the same one as a template.

3. Assert, that take will return a copy of 1-st entry.

4. Assert, that 1-st entry will be removed from the space.

5. Write taken entry back to the space.

6. Take entry from the space using different wrong templates.

7. Assert, that take requests will return not less then in specified timeouts.

8. Assert, that null will be returned after each operation.

9. Take entry from the space using null template.

10. Assert, that a copy of one of written entries will be returned.

11. Assert, that taken entry will be removed from the space.

12. Clean the space and write 3 sample entries again

13. Take entry from the space using null for different fields.

14. Assert, that a copy of matching entry will be returned.

15. Assert, that taken entry will be removed from the space.
A1, M1 JavaSpaces 
Section 2.5
TakeIfExistsTest,
TransactionTakeIfExistsTest,
SnapshotTakeIfExistsTest,
SnapshotTransactionTakeIfExistsTest



Asserts, that for takeIfExists with timeouts other then NO_WAIT:
1) If a takeIfExists returns a non-null value, the entry has been removed from the space.
2) If no match is found, null is returned.
3) Passing a null reference for the template will match any entry.
4) A takeIfExists request will return a matching entry, or null if there is currently no matching entry in the space.

Matrix ID 17, 18

1. Write 3 sample entries to the space.

2. TakeIfExists 1-st entry from the space using the same one as a template.

3. Assert, that takeIfExists request will return immediately.

4. Assert, that takeIfExists will return a copy of 1-st entry.

5. Assert, that 1-st entry will be removed from the space.

6. Write taken entry back to the space.

7. TakeIfExists entry from the space using different wrong templates.

8. Assert, that takeIfExists requests will return immediately.

9. Assert, that null will be returned after each operation.

10. TakeIfExists entry from the space using null template.

11. Assert, that takeIfExists request will return immediately.

12. Assert, that a copy of one of written entries will be returned.

13. Assert, that taken entry will be removed from the space.

14. Clean the space and write 3 sample entries again

15. TakeIfExists entry from the space using null for different fields.

16. Assert, that takeIfExists requests will return immediately.

17. Assert, that a copy of matching entry will be returned.

18. Assert, that taken entry will be removed from the space.
A1, M1 JavaSpaces 
Section 2.5
MultipleTakeTest,
TransactionMultipleTakeTest,
SnapshotMultipleTakeTest,

SnapshotTransactionMultipleTakeTest


Asserts, that for take with timeouts other then NO_WAIT:
1) If a take returns a non-null value, the entry has been removed from the space.
2) If no match is found, null is returned.
3) Passing a null reference for the template will match any entry.

It tests multiple take operations for different templates.

Matrix ID 17, 18

1. Write 2 sample entries twice to the space.

2. Take 1-st entry twice from the space using the same one as a template.

3. Assert, that each take will return a copy of 1-st entry.

4. Assert, that after 1-st take invocation at lease 1 1-st entry will be available in the space.

5. Assert, that after 2-nd take invocation there will be no 1-st entries in the space.

6. Write taken entries back to the space and write 3-rd ample entry twice to the space.

7. Take entry from the space using null template 6 times to take all entries from the space.

8. Assert, that a copy of one of written entries will be returned by each take operation.

9. Assert, that after each except last take operation at least one of written entries will be available in the space.

10. Assert, that after last take operation there will be no entries in the space.

11. Write 3 sample entries 2 times again

12. Take entry from the space using null for different fields several times.

13. Assert, that a copy of one of written entries will be returned by each take operation.

14. Assert, that after each except last take operation at least one of written entries matching specified template will be available in the space.

15. Assert, that after last take operation there will be no entries matching specified template in the space.
A1, M1 JavaSpaces 
Section 2.5
MultipleTakeIfExistsTest,
TransactionMultipleTakeIfExistsTest,
SnapshotMultipleTakeIfExistsTest,
SnapshotTransactionMultipleTakeIfExistsTest



Asserts, that for takeIfExists with timeouts other then NO_WAIT:
1) If a takeIfExists returns a non-null value, the entry has been removed from the space.
2) If no match is found, null is returned.
3) Passing a null reference for the template will match any entry.
4) A takeIfExists request will return a matching entry, or null if there is currently no matching entry in the space.

It tests multiple takeIfExists operations for different templates.

Matrix ID 17, 18

1. Write 2 sample entries twice to the space.

2. TakeIfExists 1-st entry twice from the space using the same one as a template.

3. Assert, that takeIfExists requests will return immediately.

4. Assert, that each takeIfExists will return a copy of 1-st entry.

5. Assert, that after 1-st takeIfExists invocation at lease 1 1-st entry will be available in the space.

6. Assert, that after 2-nd takeIfExists invocation there will be no 1-st entries in the space.

7. Write taken entries back to the space and write 3-rd ample entry twice to the space.

8. TakeIfExists entry from the space using null template 6 times to take all entries from the space.

9. Assert, that takeIfExists requests will return immediately.

10. Assert, that a copy of one of written entries will be returned by each takeIfExists operation.

11. Assert, that after each except last takeIfExists operation at least one of written entries will be available in the space.

12. Assert, that after last takeIfExists operation there will be no entries in the space.

13. Write 3 sample entries 2 times again

14. TakeIfExists entry from the space using null for different fields several times.

15. Assert, that takeIfExists requests will return immediately.

16. Assert, that a copy of one of written entries will be returned by each takeIfExists operation.

17. Assert, that after each except last takeIfExists operation at least one of written entries matching specified template will be available in the space.

18. Assert, that after last takeIfExists operation there will be no entries matching specified template in the space.
A1, M1 JavaSpaces 
Section 2.5
TakeNO_WAITTest,
TakeIfExistsNO_WAITTest,
TransactionTakeNO_WAITTest
TransactionTakeIfExistsNO_WAITTest,
SnapshotTakeNO_WAITTest,
SnapshotTakeIfExistsNO_WAITTest,
SnapshotTransactionTakeNO_WAITTest
SnapshotTransactionTakeIfExistsNO_WAITTest



Asserts, that for take with NO_WAIT timeout:
1) A timeout of NO_WAIT means to return immediately, with no waiting, which is equivalent to using a zero timeout.
2) If a take returns a non-null value, the entry has been removed from the space.
3) If no match is found, null is returned.
4) Passing a null reference for the template will match any entry.

Matrix ID 17

1. Write 3 sample entries to the space.

2. Take 1-st entry from the space with JavaSpace.NO_WAIT timeout value using the same one as a template.

3. Assert, that take operation will return immediately.

4. Assert, that a copy of 1-st entry will be returned.

5. Assert, that taken entry will be removed from the space.

6. Write taken entry back to the space.

7. Take entry from the space using different wrong templates and JavaSpace.NO_WAIT timeout value.

8. Assert, that take operation will return immediately.

9. Assert, that null will be returned after each operation.

10. Take entry from the space using null template and JavaSpace.NO_WAIT timeout value.

11. Assert, that take operation will return immediately.

12. Assert, that a copy of one of written entries will be returned.

13. Assert, that taken entry will be removed from the space.

14. Clean the space and write 3 sample entries again to the space.

15. Take entry from the space using null for different fields and JavaSpace.NO_WAIT timeout value.

16. Assert, that take operation will return immediately.

17. Assert, that a copy of matching entry will be returned.

18. Assert, that taken entry will be removed from the space.
A1, M1 JavaSpaces 
Section 2.5
MultipleTakeNO_WAITTest,
MultipleTakeIfExistsNO_WAITTest,
TransactionMultipleTakeNO_WAITTest
TransactionMultipleTakeIfExistsNO_WAITTest,
SnapshotMultipleTakeNO_WAITTest,
SnapshotMultipleTakeIfExistsNO_WAITTest,
SnapshotTransactionMultipleTakeNO_WAITTest
SnapshotTransactionMultipleTakeIfExistsNO_WAITTest



Asserts, that for take with NO_WAIT timeout:
1) A timeout of NO_WAIT means to return immediately, with no waiting, which is equivalent to using a zero timeout.
2) If a take returns a non-null value, the entry has been removed from the space.
3) If no match is found, null is returned.
4) Passing a null reference for the template will match any entry.

It tests multiple take operations for different templates.

Matrix ID 17

1. Write 2 sample entries twice to the space.

2. Take 1-st entry twice from the space using the same one as a template and JavaSpace.NO_WAIT timeout value.

3. Assert, that take operation will return immediately.

4. Assert, that each take will return a copy of 1-st entry.

5. Assert, that after 1-st take invocation at lease 1 1-st entry will be available in the space.

6. Assert, that after 2-nd take invocation there will be no 1-st entries in the space.

7. Write taken entries back to the space and write 3-rd ample entry twice to the space.

8. Take entry from the space using null template and JavaSpace.NO_WAIT timeout value 6 times to take all entries from the space.

9. Assert, that each take operation will return immediately.

10. Assert, that a copy of one of written entries will be returned by each take operation.

11. Assert, that after each except last take operation at least one of written entries will be available in the space.

12. Assert, that after last take operation there will be no entries in the space.

13. Write 3 sample entries 2 times again

14. Take entry from the space using null for different fields and JavaSpace.NO_WAIT timeout value several times.

15. Assert, that each take operation will return immediately.

16. Assert, that a copy of one of written entries will be returned by each take operation.

17. Assert, that after each except last take operation at least one of written entries matching specified template will be available in the space.

18. Assert, that after last take operation there will be no entries matching specified template in the space.
A1, M1 JavaSpaces 
Section 2.5
TransactionTakeReadTest,
TransactionTakeIfExistsReadTest,
SnapshotTransactionTakeReadTest,
SnapshotTransactionTakeIfExistsReadTest



Asserts, that when taken, an entry may not be read or taken by any other transaction.

Matrix ID 36

1. Write entry to the space.

2. Create two non null transactions.

3. Take written entry within 1-st transaction.

4. Assert, that the entry can not be read outside both transactions.

5. Assert, that the entry can not be read within 2-nd transaction.

6. Assert, that the entry can not be taken outside both transactions.

7. Assert, that the entry can not be taken within 2-nd transaction.
A1, M1 JavaSpaces 
Section 3.1
TransactionReadWaitTest,
SnapshotTransactionReadWaitTest

Asserts, that a read request will wait until a matching entry is found or until transactions settle, whichever is longer, up to the timeout period.

Matrix ID 15

1. Write entry to the space.

2. Create the non null transaction with finite lease time.

3. Take the entry from the space within the transaction.

4. Read the entry from the space with timeout less then transaction's lease time.

5. Assert, that read request will return null value in time specified in read request.

6. Commit the transaction and clean the space.

7. Write entry again to the space.

8. Create the non null transaction with finite lease time.

9. Take the entry from the space within the transaction.

10. Read the entry from the space with timeout greater then transaction's lease time.

11. Assert, that read request will return written entry after transaction's expiration.

12. Clean the space and write entry again to the space.

13.  Create the non null transaction with finite lease time.

14. Take the entry from the space within the transaction.

15. Start thread which will write 2-nd sample entry to the space in time less then transaction's lease time and read's timeout.

16. Read entry with null template from the space withi finite timeout.

17. Assert, that read request returns 2-nd written entry before transaction's and read's expirations
A1, M1 JavaSpaces 
Section 2.4
TransactionCommitTakeTest,
TransactionCommitTakeIfExistsTest,
SnapshotTransactionCommitTakeTest,
SnapshotTransactionCommitTakeIfExistsTest



Asserts, that a take is considered to be successful only if all enclosing transactions commit successfully.

Matrix ID 20

1. Write an entry to the space.

2. Create the non null transaction.

3. Take written entry from the space within the transaction.

4. Abort the transaction.

5. Assert, that taken entry is still available in the space.

6. Create the non null transaction with finite lease time.

7. Take written entry from the space within the transaction.

8. Sleep to let the transaction expire.

9. Assert, that taken entry is still available in the space.

10. Create the non null transaction again.

11. Take written entry from the space within the transaction.

12. Make commit operation throws exception.

13. Assert, that taken entry is still available in the space.
A1, M1 JavaSpaces 
Section 2.5
ExpirationNotifyTest,
SnapshotExpirationNotifyTest



Asserts, that the request specified by a successful notify is as persistent as the entries of the space. They will be remembered as long as an un-taken entry would be, until the lease expires, or until any governing transaction completes, whichever is shorter.

Matrix ID 31

1. Register 5 notification counters with different lease times without transactions.

2. Create the non null transaction with finite lease time.

3. Register 5 notification counters with different lease times within the transaction.

4. Write sample entry twice to the space.

5. Sleep to let counters with the smallest lease times expire.

6. Write sample entry twice  to the space.

7. Sleep to let transaction expires.

8. Write sample entry twice to the space.

9. Sleep to let next group of counters expires.

10. Write sample entry twice to the space.

11. Sleep to let next group of counters expires.

12. Write sample entry twice to the space.

13. Assert, that all counters have got the required number of events.
A1, M1 JavaSpaces 
Section 2.7
ExpirationTest,
TransactionExpirationTest,
SnapshotExpirationTest,
SnapshotTransactionExpirationTest



Asserts, that when the lease expires, the entry is removed from the space.

Matrix ID 4

1. Write 2 sample entries with different finite lease times to the space.

2. Assert, that returned leases are not equal to null, and that written entries are available in the space.

3. Sleep to let 1-st lease expires.

4. Assert, that 1-st entry is not available in the space.

5. Assert, that 2-nd entry is still available in the space.

6. Sleep the let 2-nd lease expires.

7. Assert, that 2-nd entry is not available in the space.

8. Write 1-st sample entry twice to the space with different finite lease times.

9. Assert, that returned leases are not equal to null.

10. Sleep to let the smallest lease expires.

11. Assert, that only 1 of written entries is available in the space.

12. Write 1-st sample entry twice to the space with different finite lease times.

13. Assert, that returned leases are not equal to null.

14. Sleep to let the largest lease expires.

15. Assert, that both entries are not available in the space.
A1, M1 JavaSpaces 
Section 2.3
LeaseTest,
TransactionLeaseTest,
SnapshotLeaseTest,
SnapshotTransactionLeaseTest



Asserts, that each write invocation returns a Lease object that is lease milliseconds long.

Matrix ID 3

1. Write sample entry with Lease.ANY lease time to the space.

2. Assert, that returned lease is not equal to null.

3. Assert, that returned expiration time is not less then current time.

4. Write sample entry with Lease.FOREVER lease time to the space.

5. Assert, that returned lease is not equal to null.

6. Assert, that returned expiration time is not less then current time.

7. Write 2 sample entries with 2 different finite lease times to the space.

8. Assert, that returned leases are not equal to null.

9. Assert, that returned expiration times satisfied the following formula: (expiration time - current time) = specified in write invocation lease time (#1).

10. Write 1-st sample entry with another finite lease time again to the space.

11. Assert, that returned lease is not equal to null.

12. Assert, that returned expiration time satisfied #1 formula.

13. Write 2-nd sample entry with Lease.ANY lease time.

14. Assert, that returned lease is not equal to null.

15. Assert, that returned expiration time is not less then current time.

16. Write 1-st sample entry with Lease.FOREVER lease time.

17. Assert, that returned lease is not eual toe null.

18. Assert, that returned expiration time is not less then current time.
A1, M1 JavaSpaces 
Section 2.3
NotifyTest,
TransactionNotifyTest,
SnapshotNotifyTest,
SnapshotTransactionNotifyTest



Asserts, that for notify with finite lease times:
1) A notify request's matching is done as it is for read
2) Writing an entry into a space might generate notifications to registered objects.
3) When matching entries arrive, the specified RemoteEventListener will eventually be notified by invoking listener's notify method.

Matrix ID 8, 25, 26.

1. Register 3 notification counters with 3 sample entries as a template.

2. Register 5 notification counters with different wrong templates.

3. Register notification counter with null as a template.

4. Register 3 notification counters with templates with null for different fields.

5. Write 3 sample entries 3 times to the space.

6. Assert, that counters have got required number of notifications.
A1, M1 JavaSpaces 
Sections 2.3, 2.7
NotifyLeaseANYTest,
TransactionNotifyLeaseANYTest,
SnapshotNotifyLeaseANYTest,
SnapshotTransactionNotifyLeaseANYTest



Asserts, that for notify with Lease.ANY lease time:
1) A notify request's matching is done as it is for read
2) Writing an entry into a space might generate notifications to registered objects.
3) When matching entries arrive, the specified RemoteEventListener will eventually be notified by invoking listener's notify method.

Matrix ID 8, 25, 26.

1. Register 3 notification counters with 3 sample entries as a template and Lease.ANY value for lease time.

2. Register 5 notification counters with different wrong templates and Lease.ANY value for lease time.

3. Register notification counter with null as a template and Lease.ANY value for lease time.

4. Register 3 notification counters with templates with null for different fields and Lease.ANY value for lease time.

5. Write 3 sample entries 3 times to the space.

6. Assert, that counters have got required number of notifications.
A1, M1 JavaSpaces 
Sections 2.3, 2.7
NotifyLeaseFOREVERTest,
TransactionNotifyLeaseFOREVERTest,
SnapshotNotifyLeaseFOREVERTest,
SnapshotTransactionNotifyLeaseFOREVERTest



Asserts, that for notify with Lease.FOREVER lease time:
1) A notify request's matching is done as it is for read
2) Writing an entry into a space might generate notifications to registered objects.
3) When matching entries arrive, the specified RemoteEventListener will eventually be notified by invoking listener's notify method.

Matrix ID 8, 25, 26.

1. Register 3 notification counters with 3 sample entries as a template and Lease.FOREVER value for lease time.

2. Register 5 notification counters with different wrong templates and Lease.FOREVER value for lease time.

3. Register notification counter with null as a template and Lease.FOREVER value for lease time.

4. Register 3 notification counters with templates with null for different fields and Lease.FOREVER value for lease time.

5. Write 3 sample entries 3 times to the space.

6. Assert, that counters have got required number of notifications.
A1, M1 JavaSpaces 
Sections 2.3, 2.7
NotifyNegativeLeaseTest,
TransactionNegativeLeaseTest,
SnapshotNotifyNegativeLeaseTest,
SnapshotTransactionNegativeLeaseTest



Asserts, that we will get an IllegalArgumentException if the lease time requested is not Lease.ANY and is negative.

Matrix ID 27.

1. Try to register 12 notification counters with different negative lease times.

2. Assert, that IllegalArgumentException will be thrown during these operations.
A1, M1 JavaSpaces 
Section 2.7
NotifyNonNullTxnParamTest,
SnapshotNotifyNonNullTxnParamTest



Asserts, that if the transaction parameter is not null, the listener will be notified of matching entries written under that transaction in addition to the notifications it would receive under a null transaction.

Matrix ID 30.

1. Create the non null transaction.

2. Register 3 notification counters with 3 sample entries as a template with non null transaction parameter.

3. Register 5 notification counters with different wrong templates with non null transaction parameter.

4. Register notification counter with null as a template with non null transaction parameter.

5. Register 3 notification counters with templates with null for different fields with non null transaction parameter.

6. Write 3 sample entries 3 times to the space without transactions.

7. Write 3 sample entries 2 times to the space within the transaction.

8. Assert, that counters have got required number of notifications both from written without transaction and written within the transaction groups of entries.
A1, M1 JavaSpaces
Section 2.7
NotifyNullTxnParamTest,
SnapshotNotifyNullTxnParamTest



Asserts, that:
1) If the transaction parameter is null, the listener will be notified when matching entries are written either under a null transaction or when a transaction commits.
2) When a transaction commits, any entries that were written under the transaction (and not taken) will cause appropriate notifications for registrations that were made under a null transaction.

Matrix ID 28, 37.

1. Create the non null transaction.

2. Register 3 notification counters with 3 sample entries as a template with null transaction parameter.

3. Register 5 notification counters with different wrong templates with null transaction parameter.

4. Register notification counter with null as a template with null transaction parameter.

5. Register 3 notification counters with templates with null for different fields with null transaction parameter.

6. Write 3 sample entries 3 times to the space without transactions.

7. Write 3 sample entries 2 times to the space within the transaction.

8. Assert, that counters have got required number of notifications only from written without transactions entries.

9. Commit the transction.

10. Assert, that counters have got required number of notifications both from written without transaction and written within the transaction groups of entries.
A1, M1 JavaSpaces
Sections 2.7, 3.1
TransactionAbortWriteTest,
SnapshotTransactionAbortWriteTest



Asserts, that entries written under a transaction that aborts are discarded.

Matrix ID 34.

1. Create the non null transaction.

2. Write entries with different lease times to the space within the transaction.

3. Abort the transaction.

4. Assert, that there are no entries in the space.
A1, M1 JavaSpaces
Section 3.1
TransactionCommitWriteTest,
SnapshotTransactionCommitWriteTest



Asserts, that an entry that is written under the non null transaction is not visible outside its transaction until the transaction successfully commits.

Matrix ID 32.

1. Create the non null transaction.

2. Write entries with different lease times to hte space within the transaction.

3. Assert, that written entries are visible within the transaction.

4. Assert, that written entries are not visible outside the transaction.

5. Commit the transaction.

6. Assert, that all written entries are available in the space.
A1, M1 JavaSpaces
Section 3.1
TransactionReadTakeTest,
TransactionReadIfExistsTakeTest,
SnapshotTransactionReadTakeTest,
SnapshotTransactionReadIfExistsTakeTest



Asserts, that when read, an entry may be read in any other transaction to which the entry is visible, but cannot be taken in another transaction.

Matrix ID 35.

1. Write sample entry to the space.

2. Create 2 non null transactions.

3. Read written entry from the space within 1-st transaction.

4. Assert, that we can read written entry within 2-nd transaction.

5. Assert, that we can read written entry outside both transactions.

6. Assert, that we can not take written entry within 2-nd transaction.

7. Assert, that we can not take written entry outside both transactions.
A1, M1 JavaSpaces
Section 3.1
TransactionTakeWaitTest,
SnapshotTransactionTakeWaitTest



Asserts, that a take request will wait until a matching entry is found or until transactions settle, whichever is longer, up to the timeout period.

Matrix ID 17.

1. Write entry to the space.

2. Create the non null transaction with finite lease time.

3. Take the entry from the space within the transaction.

4. Take the entry from the space with timeout less then transaction's lease time.

5. Assert, that take request will return null value in time specified in take request.

6. Commit the transaction and clean the space.

7. Write entry again to the space.

8. Create the non null transaction with finite lease time.

9. Take the entry from the space within the transaction.

10. Take the entry from the space with timeout greater then transaction's lease time.

11. Assert, that take request will return written entry after transaction's expiration.

12. Clean the space and write entry again to the space.

13.  Create the non null transaction with finite lease time.

14. Take the entry from the space within the transaction.

15. Start thread which will write 2-nd sample entry to the space in time less then transaction's lease time and take's timeout.

16. Take entry with null template from the space withi finite timeout.

17. Assert, that take request returns 2-nd written entry before transaction's and take's expirations
A1, M1 JavaSpaces
Section 2.5
TransactionReadIfExistsWaitTest,
SnapshotTransactionReadIfExistsWaitTest



Asserts, that for readIfExists method if the only possible matches for the template have conflicting locks from one or more other transactions, the timeout value specifies how long the client is willing to wait for interfering transactions to settle before returning a values and that if at the end of that time no value can be returned that would not interfere with transactional state, null is returned.

Matrix ID 13, 14.

1. Write entry to the space.

2. Create the non null transaction with finite lease time.

3. Take the entry from the space within the transaction.

4. ReadIfExists the entry from the space with timeout less then transaction's lease time.

5. Assert, that read request will return null value in time specified in read request.

6. Commit the transaction and clean the space.

7. Write entry again to the space.

8. Create the non null transaction with finite lease time.

9. Take the entry from the space within the transaction.

10. ReadIfExists the entry from the space with timeout greater then transaction's lease time.

11. Assert, that read request will return written entry after transaction's expiration.

12. Clean the space and write entry again to the space.

13.  Create the non null transaction with finite lease time.

14. Take the entry from the space within the transaction.

15. Start thread which will write 2-nd sample entry to the space in time less then transaction's lease time and read's timeout.

16. ReadIfExists entry with null template from the space withi finite timeout.

17. Assert, that read request returns 2-nd written entry before transaction's and read's expirations
A1, M1 JavaSpaces
Section 2.4
TransactionTakeIfExistsWaitTest,
SnapshotTransactionTakeIfExistsWaitTest



Asserts, that for takeIfExists method if the only possible matches for the template have conflicting locks from one or more other transactions, the timeout value specifies how long the client is willing to wait for interfering transactions to settle before returning a values and that if at the end of that time no value can be returned that would not interfere with transactional state, null is returned.

Matrix ID 17.

1. Write entry to the space.

2. Create the non null transaction with finite lease time.

3. Take the entry from the space within the transaction.

4. TakeIfExists the entry from the space with timeout less then transaction's lease time.

5. Assert, that take request will return null value in time specified in take request.

6. Commit the transaction and clean the space.

7. Write entry again to the space.

8. Create the non null transaction with finite lease time.

9. Take the entry from the space within the transaction.

10. TakeIfExists the entry from the space with timeout greater then transaction's lease time.

11. Assert, that take request will return written entry after transaction's expiration.

12. Clean the space and write entry again to the space.

13.  Create the non null transaction with finite lease time.

14. Take the entry from the space within the transaction.

15. Start thread which will write 2-nd sample entry to the space in time less then transaction's lease time and take's timeout.

16. TakeIfExists entry with null template from the space withi finite timeout.

17. Assert, that take request returns 2-nd written entry before transaction's and take's expirations
A1, M1 JavaSpaces
Section 2.5
TransactionWriteTakeTest,
TransactionWriteTakeIfExistsTest,
SnapshotTransactionWriteTakeTest,
SnapshotTransactionWriteTakeIfExistsTest



Asserts, that if the entry is written and after that is taken within the non null transaction, the entry will never be visible outside the transaction and will not be added to the space when the transaction commits.

Matrix ID 33.

1. Create the non null transaction.

2. Write 2 sample entries twice to the space within the transaction.

3. Take 2 sample entries twice from the space within the transaction.

4. Commit the transaction.

5. Assert, that there will be no entries in the space.
A1, M1 JavaSpaces
Section 3.1
TransactionWriteTakeNotifyTest,
TransactionWriteTakeIfExistsNotifyTest,
SnapshotTransactionWriteTakeNotifyTest,
SnapshotTransactionWriteTakeIfExistsNotifyTest



Asserts, that if an entry is written under a transaction and then taken under that same transaction before the transaction is committed, listeners registered under a null transaction will not be notified of that entry.

Matrix ID 29.

1. Register 3 notification counters with 3 sample entries as a template.

2. Register 5 notification counters with different wrong templates.

3. Register notification counter with null as a template.

4. Register 3 notification counters with templates with null for different fields.

5. Create the non null transaction

6. Write 3 sample entries 3 times to the space within the transaction.

7. Take 1-st sample entry once, 2-nd - 2 times and 3-rd - 3 times within the transaction.

8. Commit the transction.

9. Assert, that counters have got required number of notifications. 
A1, M1 JavaSpaces
Sections 2.7, 3.1
SnapshotModifyEntryTest



Asserts, that:
1) Modifications to the original entry will not affect the snapshot.
2) You can snapshot a null template.

Matrix ID 22, 24.

1. Write 3 sampe entries for further checks.

2. Snapshot different templates, including null entry.

3. Assert, that each snapshot operation will complete successfully.

4. Change original templates to another value which does not match any entry written to the space.

5. Assert, that if we trying to read entry from the space using created snapshots, we'll get non null results which means that snapshot is not affected by modification to the original entry.
A1, M1 JavaSpaces
Section 2.6

Note 1: for pairs <TestName> and Transaction<TestName>, Transaction<TestName> tests the same statements as <TestName>
but within the non nulltransactions. All write and check operations will be within created non null transaction.

Note 2:  for pairs <Method><TestName> and <Method>IfExists<TestName>, <Method>IfExists<TestName tests the same statements as
<Method><TestName> but for <Method>IfExists method.

Note 3: all tests starting from Snapshot previx except SnapshotModifyEntryTest run the same steps as described  in "Description"
column for snapshotted entries to test the following statement:"Using the returned snapshot entry is equivalent to using the unmodified original entry in alloperations on the same JavaSpaces service.", Matrix ID 21, A1, M1, JavaSpaces Section 2.6.