Skip to content

Commit 380465a

Browse files
committed
Merge branch 'master' into add_new_test_python_0725
2 parents 899c4c5 + 7962e50 commit 380465a

20 files changed

Lines changed: 4102 additions & 73 deletions

.github/workflows/1_run_interoperability_tests.yml

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6,11 +6,11 @@ on:
66
publishers:
77
description: Publishers to use
88
type: string
9-
default: '["connext_dds","dust_dds","eprosima_fastdds","intercom_dds","opendds","toc_coredx_dds", "hdds"]'
9+
default: '["connext_dds","dust_dds","eprosima_fastdds","intercom_dds","opendds","toc_coredx_dds", "hdds", "eclipse_cyclone"]'
1010
subscribers:
1111
description: Subscribers to use
1212
type: string
13-
default: '["connext_dds","dust_dds","eprosima_fastdds","intercom_dds","opendds","toc_coredx_dds", "hdds"]'
13+
default: '["connext_dds","dust_dds","eprosima_fastdds","intercom_dds","opendds","toc_coredx_dds", "hdds", "eclipse_cyclone"]'
1414
jobs:
1515
generate_timestamp:
1616
runs-on: ubuntu-latest
@@ -44,6 +44,7 @@ jobs:
4444
latest: true
4545
fileName: "*"
4646
out-file-path: zipped_executables
47+
preRelease: true
4748
- name: Unzip executables
4849
run: unzip 'zipped_executables/*.zip' -d executables
4950
- name: Install Python requirements

CLA/CLA_HDDS.md

Lines changed: 60 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,60 @@
1+
# OMG DDS INTEROPERABILITY REPOSITORY - CONTRIBUTOR LICENSE AGREEMENT
2+
3+
**This Contributor License Agreement ("Agreement") specifies the terms under which the individual or corporate entity specified in the signature block below ("You") agree to make intellectual property contributions to the OMG DDS Interoperability Repository. BY SIGNING BELOW YOU ARE AGREEING TO BE BOUND BY THE TERMS OF THIS AGREEMENT. If You are signing this Agreement in Your capacity as an employee, THEN YOUR EMPLOYER AND YOU ARE BOTH BOUND BY THIS AGREEMENT.**
4+
5+
1. Definitions
6+
7+
1. "OMG DDS Interoperability Repository" (or "Repository") means the Git repository [https://github.com/omg-dds/dds-rtps](https://github.com/omg-dds/dds-rtps).
8+
9+
2. "Moderator" means an entity or individual responsible for authorizing changes to the Repository.
10+
11+
3. "Submit" (or "Submitted") means any submission, including source code, binaries, code, pull requests, issue reports, comments, etc., made to the Moderators for inclusion in the Repository either through the Git repository interface or through electronic file transfer.
12+
13+
4. A "Contribution" is any original work of authorship, including any modifications or additions to an existing work, that You Submit to the DDS Interoperability Repository.
14+
15+
5. A "User" is anyone who accesses the Repository.
16+
17+
2. Allowable Contribution Representations
18+
19+
1. You represent that You have the necessary rights to the Contribution(s) to meet the obligations of this Agreement. If You are employed, Your employer has authorized Contribution(s) under this Agreement.
20+
21+
2. You represent that you have no knowledge of third-party intellectual property rights that are likely to be infringed by the Contribution(s). You represent that you have no knowledge that such infringement or any allegation of misappropriation of intellectual property rights is likely to be claimed or has already been claimed.
22+
23+
3. License
24+
25+
You grant Moderators a perpetual, worldwide, non-exclusive, assignable, paid-up license to publish, display, and redistribute the Contribution as part of the Repository. You also license to Moderators under the same terms any other intellectual property rights required to publish, display, and redistribute the Contributions as part of the Repository. You further grant all Users of the Repository a license to the Contribution under the terms of the [OMG DDS Interoperability Testing License](../LICENSE.md) included in the Repository. Moderators are under no obligation to publish Contributions.
26+
27+
4. No Warranty, Consequential Damages. Limited Liability
28+
29+
Other than explicitly stated herein, You provide the Contribution(s) "as is" with no warranty nor claims of fitness to any purpose. Neither party shall be liable for consequential or special damages of any kind. Other than for breach of warranty or representations herein, the liability of either party to the other shall be limited to $1000.
30+
31+
5. General
32+
33+
1. If You are an agency of the United States Government, then this Agreement will be governed by the United States federal common law. Otherwise, this Agreement will be governed by the laws of the State of California except with regard to its choice of law rules.
34+
35+
2. A party may assign this Agreement to an entity acquiring essentially all of the party's relevant business.
36+
37+
6. Electronic Signatures
38+
39+
"Electronic Signature" means any electronic sound, symbol, or process attached to or logically associated with a record and executed and adopted by a party with the intent to sign such record.
40+
41+
Each party agrees that the Electronic Signatures, whether digital or encrypted, of the parties included in this Agreement are intended to authenticate this writing and to have the same force and effect as manual signatures.
42+
43+
44+
IN WITNESS WHEREOF, You, intending to be legally bound, have executed this Agreement or caused Your employer's proper and duly authorized officer to execute and deliver this Agreement, for good and valuable consideration, the sufficiency of which is hereby acknowledged, as of the day and year first written below.
45+
46+
**For:**
47+
48+
Entity Name: Olivier Esteve
49+
50+
Address: Loiret, France
51+
52+
("**You**")
53+
54+
**By:**
55+
56+
Name: Olivier Esteve
57+
58+
Title: Founder, naskel.com
59+
60+
Date: March 28, 2026

CLA/CLA_Rocket_Software.md

Lines changed: 61 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,61 @@
1+
# OMG DDS INTEROPERABILITY REPOSITORY - CONTRIBUTOR LICENSE AGREEMENT
2+
3+
**This Contributor License Agreement ("Agreement") specifies the terms under which the individual or corporate entity specified in the signature block below (“You”) agree to make intellectual property contributions to the OMG DDS Interoperability Repository. BY SIGNING BELOW YOU ARE AGREEING TO BE BOUND BY THE TERMS OF THIS AGREEMENT. If You are signing this Agreement in Your capacity as an employee, THEN YOUR EMPLOYER AND YOU ARE BOTH BOUND BY THIS AGREEMENT.**
4+
5+
1. Definitions
6+
7+
1. "OMG DDS Interoperability Repository" (or “Repository”) means the Git repository [https://github.com/omg-dds/dds-rtps](https://github.com/omg-dds/dds-rtps).
8+
9+
2. "Moderator" means an entity or individual responsible for authorizing changes to the Repository.
10+
11+
3. "Submit" (or “Submitted”) means any submission, including source code, binaries, code, pull requests, issue reports, comments, etc., made to the Moderators for inclusion in the Repository either through the Git repository interface or through electronic file transfer.
12+
13+
4. A "Contribution" is any original work of authorship, including any modifications or additions to an existing work, that You Submit to the DDS Interoperability Repository.
14+
15+
5. A "User" is anyone who accesses the Repository.
16+
17+
2. Allowable Contribution Representations
18+
19+
1. You represent that You have the necessary rights to the Contribution(s) to meet the obligations of this Agreement. If You are employed, Your employer has authorized Contribution(s) under this Agreement.
20+
21+
2. You represent that you have no knowledge of third-party intellectual property rights that are likely to be infringed by the Contribution(s). You represent that you have no knowledge that such infringement or any allegation of misappropriation of intellectual property rights is likely to be claimed or has already been claimed.
22+
23+
3. License
24+
25+
You grant Moderators a perpetual, worldwide, non-exclusive, assignable, paid-up license to publish, display, and redistribute the Contribution as part of the Repository. You also license to Moderators under the same terms any other intellectual property rights required to publish, display, and redistribute the Contributions as part of the Repository. You further grant all Users of the Repository a license to the Contribution under the terms of the [OMG DDS Interoperability Testing License](../LICENSE.md) included in the Repository. Moderators are under no obligation to publish Contributions.
26+
27+
4. No Warranty, Consequential Damages. Limited Liability
28+
29+
Other than explicitly stated herein, You provide the Contribution(s) "as is" with no warranty nor claims of fitness to any purpose. Neither party shall be liable for consequential or special damages of any kind. Other than for breach of warranty or representations herein, the liability of either party to the other shall be limited to $1000.
30+
31+
5. General
32+
33+
1. If You are an agency of the United States Government, then this Agreement will be governed by the United States federal common law. Otherwise, this Agreement will be governed by the laws of the State of California except with regard to its choice of law rules.
34+
35+
2. A party may assign this Agreement to an entity acquiring essentially all of the party’s relevant business.
36+
37+
6. Electronic Signatures
38+
39+
"Electronic Signature" means any electronic sound, symbol, or process attached to or logically associated with a record and executed and adopted by a party with the intent to sign such record.
40+
41+
Each party agrees that the Electronic Signatures, whether digital or encrypted, of the parties included in this Agreement are intended to authenticate this writing and to have the same force and effect as manual signatures.
42+
43+
44+
IN WITNESS WHEREOF, You, intending to be legally bound, have executed this Agreement or caused Your employer’s proper and duly authorized officer to execute and deliver this Agreement, for good and valuable consideration, the sufficiency of which is hereby acknowledged, as of the day and year first written below.
45+
46+
**For:**
47+
48+
Entity Name: Rocket Software
49+
50+
Address: 77 4th Avenue, Waltham, MA 02451, USA
51+
52+
("**You**")
53+
54+
**By:**
55+
56+
Name: Puneet Kohli
57+
58+
Title: President, Application Modernization
59+
60+
Date: March 20, 2026
61+

doc/test_description.template.rst

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -63,11 +63,14 @@ product versions.
6363
* Content Filtered Topic uses MATCH operator for string comparisons.
6464
* Increased the periodic discovery announcements to 5s in the tests where
6565
the subscriber is OpenDDS and the publisher is Connext DDS.
66+
* Configured UDP transport message size max to 65504 bytes to make it
67+
compatible with other vendors.
6668

6769
* **FastDDS**:
6870

6971
* Content Filtered Topic expression created with single quotes around strings
7072
values
73+
* Type Propagation property set to "disabled"
7174

7275
* **InterCOM DDS**:
7376

@@ -100,4 +103,8 @@ product versions.
100103

101104
* Content Filtered Topic disabled
102105

106+
* **CycloneDDS**:
107+
108+
* Durability Service QoS requires explicit setting when History Depth is set
109+
103110
|TEST_DESCRIPTION|

generate_xlsx_report.py

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -81,6 +81,8 @@ def get_company_name(product:str) -> str:
8181
return 'S2E Software Systems'
8282
elif 'hdds' in product.lower():
8383
return 'Naskel'
84+
elif 'cyclone' in product.lower():
85+
return 'Eclipse Foundation'
8486
else:
8587
raise RuntimeError('Impossible to get company name: ' + product)
8688

@@ -104,6 +106,8 @@ def get_product_name(product:str) -> str:
104106
return 'Dust DDS ' + re.search(r'([\d.]+)', product).group(1)
105107
elif 'hdds' in product.lower():
106108
return 'HDDS ' + re.search(r'([\d.]+)', product).group(1)
109+
elif 'cyclone' in product.lower():
110+
return 'Cyclone DDS ' + re.search(r'([\d.]+)', product).group(1)
107111
else:
108112
raise RuntimeError('Impossible to get product name: ' + product)
109113

interoperability_report.py

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -374,6 +374,9 @@ def run_publisher_shape_main(
374374
# Therefore, that sample is added to samples_sent.
375375
pub_string = re.search(r'[0-9]+ [0-9]+ \[[0-9]+\]',
376376
child_pub.before + child_pub.after)
377+
if not pub_string:
378+
produced_code[produced_code_index] = ReturnCode.DATA_NOT_CORRECT
379+
break
377380
last_sample = pub_string.group(0)
378381
samples_sent.put(last_sample)
379382
index = child_pub.expect([
Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
cmake_minimum_required(VERSION 3.16)
2+
project(shape LANGUAGES C)
3+
4+
# Find the CycloneDDS package.
5+
find_package(CycloneDDS REQUIRED)
6+
set(EXECUTABLE_NAME "eclipse_cyclone-${CycloneDDS_VERSION}_shape_main_linux")
7+
idlc_generate(TARGET shape_lib FILES "../shape.idl" WARNINGS no-implicit-extensibility)
8+
9+
add_executable(${EXECUTABLE_NAME} ../shape_main.c)
10+
11+
target_compile_definitions(${EXECUTABLE_NAME} PUBLIC -DCYCLONE_DDS)
12+
13+
target_link_libraries(${EXECUTABLE_NAME} shape_lib CycloneDDS::ddsc m)

srcC/shape.idl

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
@appendable
2+
struct ShapeType {
3+
@key
4+
string<128> color;
5+
int32 x;
6+
int32 y;
7+
int32 shapesize;
8+
sequence<uint8> additional_payload_size;
9+
};

srcC/shape_bounded.idl

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
@appendable
2+
struct ShapeType {
3+
@key
4+
string<128> color;
5+
long x;
6+
long y;
7+
long shapesize;
8+
sequence<uint8, 100000> additional_payload_size;
9+
};
Lines changed: 50 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,50 @@
1+
#ifndef _SHAPE_CONFIG_CYCLONE_
2+
#define _SHAPE_CONFIG_CYCLONE_
3+
4+
#include "shape.h"
5+
#include "dds/dds.h"
6+
#include <string.h>
7+
#include <dds/ddsc/dds_public_qosdefs.h>
8+
#include <dds/ddsc/dds_public_status.h>
9+
#include <dds/ddsc/dds_public_qosdefs.h>
10+
#include <dds/ddsrt/time.h>
11+
#include <stddef.h>
12+
#include <stdint.h>
13+
14+
const char* get_qos_policy_name(uint32_t last_policy_id) {
15+
16+
switch (last_policy_id) {
17+
case DDS_INVALID_QOS_POLICY_ID: return "INVALID";
18+
case DDS_USERDATA_QOS_POLICY_ID: return "USERDATA";
19+
case DDS_DURABILITY_QOS_POLICY_ID: return "DURABILITY";
20+
case DDS_PRESENTATION_QOS_POLICY_ID: return "PRESENTATION";
21+
case DDS_DEADLINE_QOS_POLICY_ID: return "DEADLINE";
22+
case DDS_LATENCYBUDGET_QOS_POLICY_ID: return "LATENCYBUDGET";
23+
case DDS_OWNERSHIP_QOS_POLICY_ID: return "OWNERSHIP";
24+
case DDS_OWNERSHIPSTRENGTH_QOS_POLICY_ID: return "OWNERSHIPSTRENGTH";
25+
case DDS_LIVELINESS_QOS_POLICY_ID: return "LIVELINESS";
26+
case DDS_TIMEBASEDFILTER_QOS_POLICY_ID: return "TIMEBASEDFILTER";
27+
case DDS_PARTITION_QOS_POLICY_ID: return "PARTITION";
28+
case DDS_RELIABILITY_QOS_POLICY_ID: return "RELIABILITY";
29+
case DDS_DESTINATIONORDER_QOS_POLICY_ID: return "DESTINATIONORDER";
30+
case DDS_HISTORY_QOS_POLICY_ID: return "HISTORY";
31+
case DDS_RESOURCELIMITS_QOS_POLICY_ID: return "RESOURCELIMITS";
32+
case DDS_ENTITYFACTORY_QOS_POLICY_ID: return "ENTITYFACTORY";
33+
case DDS_WRITERDATALIFECYCLE_QOS_POLICY_ID: return "WRITERDATALIFECYCLE";
34+
case DDS_READERDATALIFECYCLE_QOS_POLICY_ID: return "READERDATALIFECYCLE";
35+
case DDS_TOPICDATA_QOS_POLICY_ID: return "TOPICDATA";
36+
case DDS_GROUPDATA_QOS_POLICY_ID: return "GROUPDATA";
37+
case DDS_TRANSPORTPRIORITY_QOS_POLICY_ID: return "TRANSPORTPRIORITY";
38+
case DDS_LIFESPAN_QOS_POLICY_ID: return "LIFESPAN";
39+
case DDS_DURABILITYSERVICE_QOS_POLICY_ID: return "DURABILITYSERVICE";
40+
case DDS_PROPERTY_QOS_POLICY_ID: return "PROPERTY";
41+
case DDS_TYPE_CONSISTENCY_ENFORCEMENT_QOS_POLICY_ID: return "TYPE_CONSISTENCY_ENFORCEMENT";
42+
case DDS_DATA_REPRESENTATION_QOS_POLICY_ID: return "DATAREPRESENTATION";
43+
default:
44+
return 0;
45+
}
46+
}
47+
48+
#endif
49+
50+

0 commit comments

Comments
 (0)