Enterprise > M&S Online Library > Procedures 1516

Level One Test Procedures for RTIs built to the IEEE 1516.1-2000 HLA Federate Interface Specification (This is version 1.0 of the test procedures)

Joining Federations - A federation must exist before a federate can join it. All federates must resign from a federation before it is destroyed. A federate must join a federation before it resigns.


Federate Step
1 A Invoke Join Federation Execution ("type1", "Verification")
2 A Observe that the service invocation was unsuccessful giving exception "The specified federation execution does not exist"
3 B Create Federation Execution("Verification", "LevelOne1516.fdd")
4 A Join Federation Execution( "type1", "Verification")
5 B Invoke Destroy Federation Execution("Verification")
6 B Observe that the service invocation was unsuccessful, giving exception "Federates are joined to the federation execution"
7 A Invoke Resign Federation Execution(Delete Objects and Release Attributes)
8 B Destroy Federation Execution("Verification")
9 B Invoke Resign Federation Execution(Delete Objects and Release Attributes)
10 B Observe that the service invocation was unsuccessful giving exception "The federate is not a federation execution member"

Synchronization Points - A properly registered synchronization label is announced to all joined federates. The federation synchronization for that label occurs after the last joined federate has achieved the label.


Federate Step
1 A Invoke Create Federation Execution(Verification", "LevelOne1516.fdd")
2 A, B Invoke Join Federation Execution( "type1", "Verification")
3 A Invoke Register Federation Synchronization Point("lunch", "theTag")
4 A Observe a successful Confirm Synchronization Point Registration("lunch")
5 A, B Observe Announce Synchronization Point("lunch", "theTag")
6 A Invoke Synchronization Point Achieved("lunch")
7 B Invoke Synchronization Point Achieved("lunch")
8 A, B Observe Federation Synchronized("lunch")
9 A, B Invoke Resign Federation Execution(Delete Objects and Release Attributes)
10 A Invoke Destroy Federation Execution("Verification")

Save and Restore - An immediate federation save label is provided to all joined federates. The completion of the federation save is announced when both federates indicate the successful completion of their individual saves. Once a federation save has successfully taken place, it may be used in a federation restoration.


Federate Step
1 A Invoke Create Federation Execution("Verification", "LevelOne1516.fdd")
2 A, B Invoke Join Federation Execution( "type1", "Verification")
3 A Invoke Request Federation Save("theSave")
4 A, B Observe Initiate Federate Save("theSave")
5 A, B Invoke Federate Save Begun()
6 A, B Invoke Federate Save Complete(Success)
7 A, B Observe Federation Saved(Success)
8 B Invoke Request Federation Restore("theSave")
9 B Observe Confirm Federation Restoration Request("theSave", Success)
10 A, B Observe Federation Restore Begun() and then Initiate Federate Restore("theSave", federateHandle)
11 A, B Invoke Federate Restore Complete(Success)
12 A, B Observe Federation Restored(Success)
13 A, B Invoke Resign Federation Execution(Delete Objects and Release Attributes)
14 A Invoke Destroy Federation Execution("Verification")

Object Discovery - A federate is advised to begin registration of object instances when some other federate subscribes to the published class or a super-class. Object instances are discovered at a given class by a properly subscribed federate when some other federate registers an object instance at the subscribe class or a sub-class. In the FDD used, the Object Class Relevance Advisory Switch is enabled.


Federate Step
1 A Invoke Create Federation Execution("Verification", "LevelOne1516.fdd")
2 A, B Invoke Join Federation Execution( "type1", "Verification")
3 A Get Object Class Handle("HLAobjectRoot.A.B"). Keep the returned object class handle and refer to it as objectClassB.
4 A Invoke Get Attribute Handle("x", objectClassB). Keep the returned class attribute handle and refer to it as attributeX.
5 A Invoke Get Attribute Handle("y", objectClassB). Keep the returned class attribute handle and refer to it as attributeY.
6 A Invoke Publish Object Class Attributes(objectClassB, {attributeX, attributeY})
7 B Invoke Get Object Class Handle("HLAobjectRoot.A"). Keep the returned object class handle and refer to it as objectClassA.
8 B Invoke Subscribe Object Class Attributes(objectClassA, {attributeX})
9 A Observe Start Registration for Object Class(objectClassB)
10 B Invoke Register Object Instance(objectClassA)
11 B Observe that the service invocation was unsuccessful giving exception "The federate is not publishing the specified object class="
12 A Invoke Register Object Instance(objectClassB)
13 B Observe Discover Object Instance(objectClassA)
14 A, B Invoke Resign Federation Execution(Delete Objects and Release Attributes)
15 A Invoke Destroy Federation Execution("Verification")

Attribute Divestiture and Acquisition - When an attempt is made to divest an instance attribute, federates publishing the corresponding class attribute are notified of its availability. Negotiated divestiture can be cancelled before the ownership transfer in complete. When a federate attempts to acquire a discovered instance attribute, the federate owning that attribute is notified.


Federate Step
1 A Invoke Create Federation Execution("Verification", "LevelOne1516.fdd")
2 A, B Invoke Join Federation Execution( "type1", "Verification")
3 A Invoke Get Object Class Handle("HLAobjectRoot.A"). Keep the returned object class handle and refer to it as objectClassA.
4 A Invoke Get Attribute Handle("x", objectClassA). Keep the returned class attribute handle and refer to it as attributeX.
5 A, B Invoke Publish Object Class Attributes (objectClassA, {attributeX})
6 B Invoke Subscribe Object Class Attributes(objectClassA, {attributeX})
7 A Observe Start Registration for Object Class(objectClassA)
8 A Invoke Register Object Instance(objectClassA). Keep the returned object handle and refer to it as theRegisteredObjectHandle.
9 B Observe Discover Object Instance(objectClassA) Keep the returned object handle and refer to it as theDiscoveredObjectHandle.
10 A Invoke Negotiated Attribute Ownership Divestiture (theRegisteredObjectHandle, {attributeX}, "reasonToGive")
11 B Observe Request Attribute Ownership Assumption (theDiscoveredObjectHandle, {attributeX}, "reasonToGive")
12 A Invoke Cancel Negotiated Attribute Ownership Divestiture (theRegisteredObjectHandle, {attributeX})
13 B Invoke Attribute Ownership Acquisition(theDiscoveredObjectHandle, {attributeX}, "reasonToReceive")
14 A Observe Request Attribute Ownership Release(theRegisteredObjectHandle, {attributeX}, "reasonToReceive")
15 A, B Invoke Resign Federation Execution(Delete Objects and Release Attributes)
16 A Invoke Destroy Federation Execution("Verification")

Time Advancement - Federates that are both regulating and constrained are allowed to advance their local time in such a way that no federate could receive a time stamped event whose value is less than the particular federate local time.


Federate Step
1 A Invoke Create Federation Execution("Verification", "LevelOne1516.fdd")
2 A, B Invoke Join Federation Execution( "type1", "Verification")
3 A, B Invoke Enable Time Regulation(2)
4 A, B Observe Time Regulation Enabled(0)
5 A, B Invoke Enable Time Constrained
6 A, B Observe Time Constrained Enabled(0)
7 A Invoke Time Advance Request(5)
8 B Invoke Time Advance Request(1)
9 B Observe Time Advance Grant(1)
10 B Invoke Time Advance Request(8)
11 A Observe Time Advance Grant(5)
12 A Invoke Time Advance Request(9)
13 B Observe Time Advance Grant(8)
14 A Observe Time Advance Grant(9)
15 A, B Invoke Resign Federation Execution(Delete Objects and Release Attributes)
16 A Invoke Destroy Federation Execution("Verification")

Region Intersection - When using only regions for both registration and subscription, an object instance is not discovered until the region used for registration intersects with the region used for subscription.


Federate Step
1 A Invoke Create Federation Execution("Verification", "LevelOne1516.fdd")
2 A, B Invoke Join Federation Execution( "type1", "Verification")
3 A Invoke Get Object Class Handle("HLAobjectRoot.A.B.F"). Keep the returned object class handle and refer to it as objectClassF.
4 A Invoke Get Attribute Handle("g", objectClassF). Keep the returned class attribute handle and refer to it as attributeG.
5 A Invoke Get Dimension Handle("D1"). Keep the returned dimension handle and refer to it as dimensionD1.
6 A Invoke Publish Object Class Attributes(objectClassF, {attributeG})
7 A Invoke CreateRegion({dimensionD1}) Keep the returned region and refer to it as registrationRegion.
8 A Invoke Set Range Bounds(registrationRegion, dimensionD1, 2, 4)
9 A Invoke Commit Region Modifications(registrationRegion)
10 B Invoke CreateRegion({dimensionD1}) Keep the returned region and refer to it as subscriptionRegion.
11 B Invoke Set Range Bounds(subscriptionRegion, dimensionD1, 5, 7)
12 Invoke Commit Region Modifications(subscriptionRegion)
13 B Invoke Subscribe Object Class Attributes With Regions(objectClassF, subscriptionRegion, {attributeG})
14 A Observe Start Registration for Object Class(objectClassF)
15 A Invoke Register Object Instance With Regions(objectClassF, {(attributeG, registrationRegion)})
16 B Observe Discover Object Instance() does not occur.
17 A Invoke Set Range Bounds(registrationRegion, dimensionD1, 2, 6)
18 A Invoke Commit Region Modifications(registrationRegion)
19 B Observe Discover Object Instance("myObject", objectClassF)
20 A, B Invoke Resign Federation Execution(Delete Objects and Release Attributes)
21 A Invoke Destroy Federation Execution("Verification")

Management Object Model - One instance of object class HLAobjectRoot.HLAManager.HLAFederation is registered in each federation by the RTI. An instance of object class objectRoot.Manager.Federate is registered by the RTI when a new federate joins and removed when it resigns.


Federate Step
1 A Invoke Create Federation Execution("Verification", "LevelOne1516.fdd")
2 A Invoke Join Federation Execution( "type1", "Verification")
3 A Invoke Get Object Class Handle ("HLAobjectRoot.HLAManager.HLAFederate"). Keep the returned object class handle and refer to it as objectClassFederate.
4 A Invoke Get Object Class Handle ("HLAobjectRoot.HLAManager.HLAFederation"). Keep the returned object class handle and refer to it as objectClassFederation.
5 A Invoke Get Attribute Handle("HLAFederateType", objectClassFederate). Keep the returned class attribute handle and refer to it as attributeFederateType.
6 A Invoke Get Attribute Handle("HLAFederationName", objectClassFederation). Keep the returned class attribute handle and refer to it as attributeFederationName.
7 A Invoke Subscribe Object Class Attributes(objectClassFederation, {attributeFederationName})
8 A Observe Discover Object Instance(objectClassFederation)
9 A Invoke Subscribe Object Class Attributes(objectClassFederate, {attributeFederateType})
10 A Observe Discover Object Instance(objectClassFederate)
11 B Invoke Join Federation Execution( "type2", "Verification")
12 A Observe Discover Object Instance(objectClassFederate). Keep the returned object handle and refer to it as theOtherFederate.
13 B Invoke Resign Federation Execution(Delete Objects and Release Attributes)
14 A Observe Remove Object Instance(theOtherFederate)
15 A Invoke Resign Federation Execution(Delete Objects and Release Attributes)
16 A Invoke Destroy Federation Execution("Verification")

Announcements

M&S in the News

NATO Harbour Protection:

This isn't your kid's video game! Service members from around the world visit the NATO Undersea Research Center in La Spezia, Italy, where gaming systems, and their consequences, are taken very seriously... read more.


M&S Online Library