ACATS 3.0 User's Guide
Title Page
Contents   Index   References   Previous   Next 

5.5.5.3 Tests for the Distributed Systems Annex

The ACATS tests for the Distributed Systems Annex are applicable only to implementations that wish to test this SNA. Not all of these tests apply to all implementations, since the annex includes some implementation permissions that affect the applicability of some tests.
The principal factors affecting test applicability are: 
1.
whether the Remote_Call_Interface pragma is supported;
2.
whether a Partition Communication System (PCS) is provided (i.e., whether a body for System.RPC is provided by the implementation);
3.
whether the implementation has taken advantage of the permission to change the specification of System.RPC;
4.
whether the Real-Time Annex is also supported. 
An implementation may test for the annex without providing a PCS. In order to test for the Distributed Systems Annex, an implementation must allow a body for System.RPC to be compiled.
Remote_Call_Interface pragma
Ada allows explicit message-based communication between active partitions as an alternative to RPC [see Ada E.2.3(20)]. If an implementation does not support the Remote_Call_Interface pragma then the following tests are not applicable:
bxe2009bxe4001cxe4002cxe4006
bxe2010cxe2001cxe4003cxe5002
bxe2011cxe2002cxe4004cxe5003
bxe2013cxe4001cxe4005lxe3001
Partition Communication System
An implementation is not required to provide a PCS [see Ada E.5(27)] in order to test the Distributed Systems Annex. If no PCS is provided then the following tests are not applicable:
cxe1001cxe4002cxe4005 
cxe2001cxe4003cxe4006 
cxe4001cxe4004cxe5001  
System.RPC
Two tests provide a body for System.RPC, and a third test checks the specification of System.RPC. An alternative declaration is allowed for package System.RPC [see [Amend1] E.5(27.1/2)]. If an alternative declaration is used for System.RPC, the following tests are not applicable:
cxe5001cxe5002cxe5003  
Real-Time Annex Support
Many implementations that support the Distributed Systems Annex will also support the Real-Time Annex. Test cxe4003 is designed to take advantage of Real-Time Annex features in order to better test the Distributed Systems Annex.
For implementations that do not support the Real-Time Annex, test cxe4003 must be modified. This modification consists of deleting all lines that end with the comment --RT.
Configuring Multi-Partition Tests
Some Distributed Systems Annex tests require multiple partitions to run the test, but no more than two partitions are required for running any of them. All multi-partition tests contain a main procedure for each of the two partitions. The two partitions are referred to as "A" and "B" and the main procedures for these partitions are named <test_name>_A and <test_name>_B respectively. Each test contains instructions naming the compilation units to be included in each partition. Most implementations will be primarily concerned with the main procedure and RCI packages that are to be assigned to each partition; the remainder of the partition contents will be determined by the normal dependency rules. The naming convention used in multi-partition tests aid in making the partition assignments. If the name of a compilation unit ends in "_A<optional_digit]>" then it should be assigned to partition A. Compilation units with names ending in "_B<optional_digit>" should be assigned to partition B.
The following tests require that two partitions be available to run the test:
cxe1001cxe4002cxe4006lxe3002*
cxe2001*cxe4003cxe5002 
cxe2002cxe4004cxe5003 
cxe4001cxe4005lxe3001 
(*) Tests cxe2001 and lxe3002 contain a Shared_Passive package and two active partitions. They may be configured with either two or three partitions. The two-partition configuration must have two active partitions and the Shared_Passive package may be assigned to either one of the active partitions. The three-partition configuration consists of two active partitions and a single passive partition, and the passive partition will contain the single Shared_Passive package.
Running Multi-Partition Tests
All of the multi-partition tests include the package Report in both of the active partitions. In order for the test to pass, both partitions must produce a passed message (except for lxe3002 - see special instructions for that test). If either partition produces a failed message, or if one or both partitions do not produce a passed message, the test is graded "failed".
When running the multi-partition tests it is not important which partition is started first. Generally, partition A acts as a server and partition B is a client, so starting partition A first is usually best.
In the event a test fails due to the exception Communication_Error being raised, it is permissible to rerun the test.

Contents   Index   References   Previous   Next