3. Test Descriptions
3.1. Default Values
This section describes the different test performed. When the test description mentions ‘default settings’ or if the test does not mention any QoS modification, then, it refers to the default values for different QoS settings and other parameters the ShapeDemo Application configures:
Domain ID: 0
RELIABILITY QoS: reliable
DURABILITY QoS: volatile
HISTORY QoS: default middleware HISTORY kind (should be KEEP_LAST with depth 1)
DATA_REPRESENTATION QoS: XCDR1
OWNERSHIP QoS: shared
PARTITION QoS: default middleware partition
DEADLINE QoS: disabled
TIME_BASED_FILTER QoS: disabled
Instance (color value): BLUE
Topic name: if not mentioned, the topic used is “Square”
Writing period: 33ms
Reading period: 100ms
Delay when creating entities: at least 1s
The type used in these tests is the following:
@appendable
struct ShapeType {
@key
string<128> color;
int32 x;
int32 y;
int32 shapesize;
};
Additionally, the test description may mention ‘Publisher’ and ‘Subscriber’, this refers to the publisher/subscriber applications. Qos policies are set to the corresponding entity: DomainParticipant, Publisher, Subscriber, Topic, DataWriter or DataReader.
3.1.1. Considerations per Product
This section outlines important considerations for different products, including default values, features enabled or disabled, and unsupported features.
Note that there is no version number because these changes apply to all product versions.
Connext DDS:
Content Filtered Topic expression created with single quotes around strings values
FastDDS:
Content Filtered Topic expression created with single quotes around strings values
InterCOM DDS:
Content Filtered Topic expression created with single quotes around strings values
OpenDDS:
Content Filtered Topic expression created without single quotes around strings values
Disabled XTypes Support
CoreDX DDS:
Content Filtered Topic expression created without single quotes around strings values
Disabled writer-side content filtering
DataReader send_initial_nack enabled that sends an initial NACK to every discovered DataWriter (only when using reliable RELIABILITY)
DataReader precache_max_samples set to 0 that sets to 0 the number of samples pre-cached (only when using reliable RELIABILITY)
Set environment variable COREDX_UDP_RX_BUFFER_SIZE to 65536 that increases the buffer sizes to that value
3.2. Domain
3.2.1. Test_Domain_0
Communication using Domain ID 0
This test covers the most basic interoperability scenario:
Configures the publisher / subscriber with Domain ID 0
Configures the subscriber with BEST_EFFORT reliability
The tests passes if the publisher and subscriber discover and match each other and the subscriber receives the data from the publisher
3.2.2. Test_Domain_1
No communication between publisher and subscriber in a different Domain IDs
Verifies that there is no communication between a publisher configured with Domain ID 0 and a subscriber configured with Domain ID 1:
Configures the publisher with Domain ID 0
Configures the subscriber with Domain ID 1
The tests passes if the publisher and subscriber do not discover each other
3.2.3. Test_Domain_2
Communication using Domain ID 1
This test covers interoperability in a non-default Domain ID:
Configures the publisher / subscriber with Domain ID 1
Configures the subscriber with BEST_EFFORT reliability
Verifies the publisher and subscriber discover and match each other
The tests passes if the subscriber receives samples from the publisher
3.3. DataRepresentation
3.3.1. Test_DataRepresentation_0
Default communication using XCDR1
This test covers the interoperability scenario with XCDR1:
Configures the publisher / subscriber with DATA_REPRESENTATION XCDR version 1
Verifies the publisher and subscriber discover and match each other
The tests passes if the subscriber receives samples from the publisher
3.3.2. Test_DataRepresentation_1
Incompatibility publishing XCDR1 and subscribing XCDR2
Verifies an XDCR1 publisher does not match with an XCDR2 subscriber and report an IncompatibleQos notification
Configures the publisher with XCDR1 data representation
Configures the subscriber with XCDR2 data representation
The test passes if the listeners trigger the IncompatibleQos notification in the publisher and the subscriber
3.3.3. Test_DataRepresentation_2
Incompatibility publishing XCDR2 and subscribing XCDR1
Verifies an XDCR2 publisher does not match with an XCDR1 subscriber and report an IncompatibleQos notification
Configures the publisher with XCDR2 data representation
Configures the subscriber with XCDR1 data representation
The test passes if the listeners trigger the IncompatibleQos notification in the publisher and the subscriber
3.3.4. Test_DataRepresentation_3
Default communication using XCDR2
This test covers the interoperability scenario with XCDR2:
Configures publisher / subscriber with DATA_REPRESENTATION XCDR version 2
Verifies the publisher and subscriber discover and match each other
The tests passes if the subscriber receives samples from the publisher
3.4. Reliability
3.4.1. Test_Reliability_0
Communication between BEST_EFFORT publisher and subscriber
Verifies a best effort publisher communicates with a best effort subscriber with no out-of-order or duplicate samples
Configures the publisher and subscriber with a BEST_EFFORT reliability
Verifies the publisher and subscriber discover and match each other
The publisher application sends samples with increasing value of the “size” member
Verifies the subscriber application receives samples and the value of the “size” member is always increasing
The test passes if the value of the “size” is always increasing in 500 samples, even if there are missed samples (since reliability is BEST_EFFORT) as long as there are no out-of-order or duplicated samples
3.4.2. Test_Reliability_1
BEST_EFFORT publisher do not match RELIABLE subscribers
Verifies a best effort publisher does not match with a reliable subscriber and report an IncompatibleQos notification
Configures the publisher with BEST_EFFORT reliability
Configures the publisher with RELIABLE reliability
The test passes if the listeners trigger the IncompatibleQos notification in the publisher and the subscriber
3.4.3. Test_Reliability_2
Communication between RELIABLE publisher and BEST_EFFORT subscriber
Verifies a reliable publisher communicates with a best effort subscriber
Configures the publisher with a RELIABLE reliability
Configures the subscriber with a BEST_EFFORT reliability
Verifies the publisher and subscriber discover and match each other
The test passes if the subscriber receives samples from the publisher
3.4.4. Test_Reliability_3
Communication using reliability RELIABLE
Verifies a reliable publisher communicates with a reliable subscriber
Configures the publisher / subscriber with a RELIABLE reliability
Verifies the publisher and subscriber discover and match each other
The test passes if the subscriber receives samples from the publisher
3.4.5. Test_Reliability_4
Behavior of RELIABLE reliability
Verifies a RELIABLE publisher communicates with a RELIABLE subscriber and samples are received in order without any losses or duplicates
Configures the publisher and subscriber with a RELIABLE reliability
Configures the publisher and subscriber with history KEEP_ALL
Verifies the publisher and subscriber discover and match each other
The test passes if the subscriber, after receiving a (first) sample from the publisher, it receives the next 500 subsequent samples, without losses or duplicates, in the same order as sent
3.5. Ownership
3.5.1. Test_Ownership_0
Communication between SHARED OWNERSHIP publisher and subscriber
Verifies a shared ownership publisher communicates with a shared ownership subscriber
Configures the publisher / subscriber with SHARED ownership
Verifies the publisher and subscriber discover and match each other
The test passes if the subscriber receives samples from the publisher
3.5.2. Test_Ownership_1
Incompatibility between SHARED OWNERSHIP publisher and EXCLUSIVE OWNERSHIP subscriber
Verifies a shared ownership publisher does not match with an exclusive ownership subscriber and report an IncompatibleQos notification
Configures the publisher with SHARED ownership
Configures the subscriber with EXCLUSIVE ownership
The test passes if the listeners trigger the IncompatibleQos notification in the publisher and the subscriber
3.5.3. Test_Ownership_2
Incompatibility between EXCLUSIVE OWNERSHIP publisher and SHARED OWNERSHIP subscriber
Verifies a exclusive ownership publisher does not match with an shared ownership subscriber and report an IncompatibleQos notification
Configures the publisher with EXCLUSIVE ownership
Configures the subscriber with SHARED ownership
The test passes if the listeners trigger the IncompatibleQos notification in the publisher and the subscriber
3.5.4. Test_Ownership_3
Behavior of EXCLUSIVE OWNERSHIP QoS with publishers of the same instance
Verifies an exclusive ownership subscriber receives samples only from the highest ownership strength publisher of the same instance
Use RELIABLE Qos in all publishers and subscriber to avoid samples losses
Use KEEP_ALL HISTORY Qos in all publishers and subscriber
Configures a first publisher with EXCLUSIVE ownership with strength of 3
Configures the first publisher to publish samples with “color” equal to “BLUE” and “size” equal to 20
Configures a second publisher with EXCLUSIVE ownership and strength of 4
Configures the second publisher to publish samples with “color” equal to “BLUE” and “size” equal to 30
Configures a subscriber with EXCLUSIVE ownership
Verifies that both publishers discover and match the subscriber and vice-versa
Note that the subscriber may start receiving samples from the lower ownership strength publisher if it is created before the highest strength ownership publisher. This behavior is expected and those samples are ignored
The test passes if the subscriber receives samples from the highest strength publisher only (after receiving the first sample of that publisher. The subscriber reads 500 samples in total
3.5.5. Test_Ownership_4
Behavior of EXCLUSIVE OWNERSHIP QoS with publishers with different instances
Verifies an exclusive ownership subscriber receives samples from different publishers that publish different instances (ShapeType with different color)
Use RELIABLE Qos in all publishers and subscriber to avoid samples losses
Use KEEP_ALL HISTORY Qos in all publishers and subscriber
Configures a first publisher with EXCLUSIVE ownership with strength of 3
Configures the first publisher to publish samples with “color” equal to “BLUE” and “size” equal to 20
Configures a second publisher with EXCLUSIVE ownership and strength of 4
Configures the second publisher to publish samples with “color” equal to “RED” and “size” equal to 30
Configures a subscriber with EXCLUSIVE ownership
Verifies that both publishers discover and match the subscriber and vice-versa
The test passes if the subscriber receives samples from both publishers in the first 500 samples
3.5.6. Test_Ownership_5
Behavior of SHARED OWNERSHIP QoS with publishers with the same instance
Verifies a shared ownership subscriber receives samples from all shared ownership publishers of the different instances
Use RELIABLE Qos in all publishers and subscriber to avoid samples losses
Use KEEP_ALL HISTORY Qos in all publishers and subscriber
Configures a first publisher with SHARED ownership
Configures the first publisher to publish samples with “color” equal to “BLUE” and “size” equal to 20
Configures a second publisher with SHARED ownership
Configures the second publisher to publish samples with “color” equal to “BLUE” and “size” equal to 30
Configures a subscriber with SHARED ownership
Verifies that both publishers discover and match the subscriber and vice-versa
The test passes if the subscriber receives samples from both publishers in the first 500 samples
3.5.7. Test_Ownership_6
Behavior of SHARED OWNERSHIP QoS with different instances
Verifies a shared ownership subscriber receives samples from all shared ownership publishers of different instances
Use RELIABLE Qos in all publishers and subscriber to avoid samples losses
Use KEEP_ALL HISTORY Qos in all publishers and subscriber
Configures a first publisher with SHARED ownership with strength of 3
Configures the first publisher to publish samples with “color” equal to “BLUE” and “size” equal to 20
Configures a second publisher with SHARED ownership and strength of 4
Configures the second publisher to publish samples with “color” equal to “RED” and “size” equal to 30
Configures a subscriber with SHARED ownership
Verifies that both publishers discover and match the subscriber and vice-versa
The test passes if the subscriber receives samples from both publishers in the first 500 samples
3.6. Deadline
3.6.1. Test_Deadline_0
Communication with publisher deadline smaller than subscriber deadline
Verifies there is communication between a publisher with a deadline smaller than the subscriber
Configures the publisher with DEADLINE of 3 seconds
Configures the subscriber with DEADLINE of 5 seconds
Verifies the publisher and subscriber discover and match each other
The test passes if the subscriber receives samples from the publisher
3.6.2. Test_Deadline_1
Communication with the same publisher and subscriber deadlines
Verifies there is communication between a publisher with the same deadline as the subscriber
Configures the publisher with DEADLINE of 5 seconds
Configures the subscriber with DEADLINE of 5 seconds
Verifies the publisher and subscriber discover and match each other
The test passes if the subscriber receives samples from the publisher
3.6.3. Test_Deadline_2
No compatibility with publisher deadline higher than subscriber deadline
Verifies there is no communication between a publisher with a higher deadline than the subscriber and both report an IncompatibleQos notification
Configures the publisher with DEADLINE of 7 seconds
Configures the publisher with DEADLINE of 5 seconds
The test passes if the listeners trigger the IncompatibleQos notification in the publisher and the subscriber
3.6.4. Test_Deadline_3
Deadline is missed in both, publisher and subscriber
Verifies that publisher and subscriber miss the deadline
Configures the publisher with DEADLINE of 2 seconds
Configures the subscriber with DEADLINE of 2 seconds
Configures the write period to 3 seconds
Verifies the publisher and subscriber discover and match each other
The test passes if the listeners trigger the DeadlineMissed notification in the publisher and the subscriber
3.7. Topic
3.7.1. Test_Topic_0
Communication using the same topic: Circle
Verifies communication between a publisher and a subscriber using a specific topic (“Circle”)
Configures the publisher and subscriber to use the topic name “Circle”
Verifies the publisher and subscriber discover and match each other
The test passes if the subscriber receives samples from the publisher
3.7.2. Test_Topic_1
No communication when publisher and subscriber are using different topics
Verifies that there is no communication between a publisher using topic “Square” and a subscriber using topic “Circle”
Configures the publisher to use the topic name “Square”
Configures the subscriber to use the topic name “Circle”
The test passes if the publisher and subscriber do not discover each other
3.8. Color
3.8.1. Test_Color_0
Use of Content filter to avoid receiving undesired data
Verifies a subscription using a ContentFilteredTopic does not receive data that does not pass the filter
Configures a subscriber with a ContentFilteredTopic that selects only the shapes that have “color” equal to “RED”
Configures a first publisher to publish samples with “color” equal to “BLUE”
Configures a second publisher to publish samples with “color” equal to “RED”
Use RELIABLE Qos in all publishers and subscriber to ensure any samples that are not received are due to filtering
Verifies that both publishers discover and match the subscriber and vice-versa
Note that this test does not check whether the filtering happens in the publisher side or the subscriber side. It only checks the middleware filters the samples somewhere.
The test passes if the subscriber receives 500 samples of one color
3.9. Partition
3.9.1. Test_Partition_0
Communication between publisher and subscriber using the same partition
Verifies communication between a publisher and a subscriber using the same partition
Configures the publisher and subscriber to use the PARTITION “p1”
Verifies the publisher and subscriber discover and match each other
The test passes if the subscriber receives samples from the publisher
3.9.2. Test_Partition_1
No communication between publisher and subscriber using different partitions
Verifies that there is no communication between a publisher using partition “p1” and a subscriber using partition “p2”
Configures the publisher to use the PARTITION “p1”
Configures the subscriber to use the PARTITION “p2”
The test passes if the publisher and subscriber do not discover each other
3.9.3. Test_Partition_2
Usage of a partition expression to receive data only from the corresponding publishers
Verifies a subscription using a partition expression only receives data from the corresponding publishers
Configures a subscriber with a PARTITION expression “p*” that allows only matching publishers whose partition starts with “p”
Configures a first publisher to use PARTITION “p1” and “color” equal to “BLUE”
Configures a second publisher to use PARTITION “x1” and “color” equal to “RED”
Verifies that only the first publisher (PARTITION “p1”) discovers and matches subscriber
Verifies that the second publisher (PARTITION “x1”) does not match the subscriber
The test passes if the subscriber receives 500 samples of one color (first publisher)
3.10. Durability
3.10.1. Test_Durability_0
Communication between VOLATILE publisher and VOLATILE subscriber
Verifies a volatile publisher communicates with a volatile subscriber
Configures the publisher with a VOLATILE durability
Configures the subscriber with a VOLATILE durability
Verifies the publisher and subscriber discover and match each other
The test passes if the subscriber receives samples from the publisher
3.10.2. Test_Durability_1
No compatibility between VOLATILE publisher and TRANSIENT_LOCAL subscriber
Verifies a volatile publisher does not match with a transient local subscriber and report an IncompatibleQos notification
Configures the publisher with VOLATILE durability
Configures the subscriber with TRANSIENT_LOCAL durability
The test passes if the listeners trigger the IncompatibleQos notification in the publisher and the subscriber
3.10.3. Test_Durability_2
No compatibility between VOLATILE publisher and TRANSIENT subscriber
Verifies a volatile publisher does not match with a transient subscriber and report an IncompatibleQos notification
Configures the publisher with VOLATILE durability
Configures the subscriber with TRANSIENT durability
The test passes if the listeners trigger the IncompatibleQos notification in the publisher and the subscriber
3.10.4. Test_Durability_3
No compatibility between VOLATILE publisher and PERSISTENT subscriber
Verifies a volatile publisher does not match with a persistent subscriber and report an IncompatibleQos notification
Configures the publisher with VOLATILE durability
Configures the subscriber with PERSISTENT durability
The test passes if the listeners trigger the IncompatibleQos notification in the publisher and the subscriber
3.10.5. Test_Durability_4
Communication between TRANSIENT_LOCAL publisher and VOLATILE subscriber
Verifies a transient local publisher communicates with a volatile subscriber
Configures the publisher with a TRANSIENT_LOCAL durability
Configures the subscriber with a VOLATILE durability
Verifies the publisher and subscriber discover and match each other
The test passes if the subscriber receives samples from the publisher
3.10.6. Test_Durability_5
Communication between TRANSIENT_LOCAL publisher and TRANSIENT_LOCAL subscriber
Verifies a transient local publisher communicates with a transient local subscriber
Configures the publisher with a TRANSIENT_LOCAL durability
Configures the subscriber with a TRANSIENT_LOCAL durability
Verifies the publisher and subscriber discover and match each other
The test passes if the subscriber receives samples from the publisher
3.10.7. Test_Durability_6
No compatibility between TRANSIENT_LOCAL publisher and TRANSIENT subscriber
Verifies a transient local publisher does not match with a transient subscriber and report an IncompatibleQos notification
Configures the publisher with TRANSIENT_LOCAL durability
Configures the subscriber with TRANSIENT durability
The test passes if the listeners trigger the IncompatibleQos notification in the publisher and the subscriber
3.10.8. Test_Durability_7
No compatibility between TRANSIENT_LOCAL publisher and PERSISTENT subscriber
Verifies a transient local publisher does not match with a persistent subscriber and report an IncompatibleQos notification
Configures the publisher with TRANSIENT_LOCAL durability
Configures the subscriber with PERSISTENT durability
The test passes if the listeners trigger the IncompatibleQos notification in the publisher and the subscriber
3.10.9. Test_Durability_8
Communication between TRANSIENT publisher and VOLATILE subscriber
Verifies a transient publisher communicates with a volatile subscriber
Configures the publisher with a TRANSIENT durability
Configures the subscriber with a VOLATILE durability
Verifies the publisher and subscriber discover and match each other
The test passes if the subscriber receives samples from the publisher
3.10.10. Test_Durability_9
Communication between TRANSIENT publisher and TRANSIENT_LOCAL subscriber
Verifies a transient publisher communicates with a transient local subscriber
Configures the publisher with a TRANSIENT durability
Configures the subscriber with a TRANSIENT_LOCAL durability
Verifies the publisher and subscriber discover and match each other
The test passes if the subscriber receives samples from the publisher
3.10.11. Test_Durability_10
Communication between TRANSIENT publisher and TRANSIENT subscriber
Verifies a transient publisher communicates with a transient subscriber
Configures the publisher with a TRANSIENT durability
Configures the subscriber with a TRANSIENT durability
Verifies the publisher and subscriber discover and match each other
The test passes if the subscriber receives samples from the publisher
3.10.12. Test_Durability_11
No compatibility between TRANSIENT publisher and PERSISTENT subscriber
Verifies a transient publisher does not match with a persistent subscriber and report an IncompatibleQos notification
Configures the publisher with TRANSIENT durability
Configures the subscriber with PERSISTENT durability
The test passes if the listeners trigger the IncompatibleQos notification in the publisher and the subscriber
3.10.13. Test_Durability_12
Communication between PERSISTENT publisher and VOLATILE subscriber
Verifies a persistent publisher communicates with a volatile subscriber
Configures the publisher with a PERSISTENT durability
Configures the subscriber with a VOLATILE durability
Verifies the publisher and subscriber discover and match each other
The test passes if the subscriber receives samples from the publisher
3.10.14. Test_Durability_13
Communication between PERSISTENT publisher and TRANSIENT_LOCAL subscriber
Verifies a persistent publisher communicates with a transient local subscriber
Configures the publisher with a PERSISTENT durability
Configures the subscriber with a TRANSIENT_LOCAL durability
Verifies the publisher and subscriber discover and match each other
The test passes if the subscriber receives samples from the publisher
3.10.15. Test_Durability_14
Communication between PERSISTENT publisher and TRANSIENT subscriber
Verifies a persistent publisher communicates with a transient subscriber
Configures the publisher with a PERSISTENT durability
Configures the subscriber with a TRANSIENT durability
Verifies the publisher and subscriber discover and match each other
The test passes if the subscriber receives samples from the publisher
3.10.16. Test_Durability_15
Communication between PERSISTENT publisher and PERSISTENT subscriber
Verifies a persistent publisher communicates with a persistent subscriber
Configures the publisher with a PERSISTENT durability
Configures the subscriber with a PERSISTENT durability
Verifies the publisher and subscriber discover and match each other
The test passes if the subscriber receives samples from the publisher
3.10.17. Test_Durability_16
Test the behavior of the VOLATILE durability
Verifies a volatile publisher and subscriber communicates and work as expected
Configures the publisher / subscriber with a VOLATILE durability
Configures the publisher / subscriber with a RELIABLE reliability
Configures the publisher / subscriber with history KEEP_ALL
The publisher application sends samples with increasing value of the “size” member
Verifies the publisher and subscriber discover and match each other
Note that there is at least 1 second delay between the creation of each entity
The test passes if the first sample the subscriber receives is not the first sample that the publisher sent (by checking the “size” value).
3.10.18. Test_Durability_17
Test the behavior of the TRANSIENT_LOCAL durability
Verifies a transient local publisher and subscriber communicates and work as expected
Configures the publisher / subscriber with a TRANSIENT_LOCAL durability
Configures the publisher / subscriber with a RELIABLE reliability
Configures the publisher / subscriber with history KEEP_ALL
The publisher application sends samples with increasing value of the “size” member
Verifies the publisher and subscriber discover and match each other
Note that there is at least 1 second delay between the creation of each entity
The test passes if the first sample the subscriber receives is the first sample that the publisher sent (by checking the “size” value is equal to 1).