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).