Skip to content

Commit d8ff9e9

Browse files
committed
Merge branch 'master' into micro
2 parents 898631f + 416a368 commit d8ff9e9

29 files changed

+3883
-785
lines changed

.github/workflows/1_run_interoperability_tests.yml

Lines changed: 360 additions & 13 deletions
Large diffs are not rendered by default.

.github/workflows/2_upload_artifact.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@ jobs:
88
- name: Get Artifact
99
uses: dawidd6/action-download-artifact@v6
1010
with:
11-
name: interoperability_report
11+
name: interoperability_report_complete
1212
workflow: 1_run_interoperability_tests.yml
1313
workflow_conclusion: completed
1414
- name: Create files to upload

.github/workflows/ci_opendds.yml

Lines changed: 120 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,120 @@
1+
name: CI OpenDDS
2+
on:
3+
pull_request:
4+
push:
5+
schedule:
6+
- cron: '10 0 * * 0'
7+
workflow_dispatch:
8+
9+
concurrency:
10+
group: ${{ github.workflow }}-${{ github.ref }}
11+
cancel-in-progress: true
12+
13+
jobs:
14+
build:
15+
strategy:
16+
fail-fast: false
17+
matrix:
18+
dds:
19+
- opendds
20+
runner:
21+
- ubuntu-24.04
22+
23+
runs-on: ${{ matrix.runner }}
24+
25+
steps:
26+
- name: 'Checkout dds-rtps'
27+
uses: actions/checkout@v4
28+
- name: 'Checkout MPC'
29+
uses: actions/checkout@v4
30+
with:
31+
repository: DOCGroup/MPC
32+
path: MPC
33+
fetch-depth: 1
34+
- name: 'Checkout ACE_TAO'
35+
uses: actions/checkout@v4
36+
with:
37+
repository: DOCGroup/ACE_TAO
38+
ref: ace6tao2
39+
path: ACE_TAO
40+
fetch-depth: 1
41+
- name: 'Checkout OpenDDS'
42+
uses: actions/checkout@v4
43+
with:
44+
repository: OpenDDS/OpenDDS
45+
ref: latest-release
46+
path: OpenDDS
47+
fetch-depth: 1
48+
submodules: true
49+
- name: 'Set environment variables'
50+
shell: bash
51+
run: |-
52+
echo "ACE_ROOT=$GITHUB_WORKSPACE/ACE_TAO/ACE" >> $GITHUB_ENV
53+
echo "TAO_ROOT=$GITHUB_WORKSPACE/ACE_TAO/TAO" >> $GITHUB_ENV
54+
echo "DDS_ROOT=$GITHUB_WORKSPACE/OpenDDS" >> $GITHUB_ENV
55+
echo "MPC_ROOT=$GITHUB_WORKSPACE/MPC" >> $GITHUB_ENV
56+
export COMPILER_VERSION=$(c++ --version 2>&1 | head -n 1)
57+
echo "COMPILER_VERSION=$COMPILER_VERSION" >> $GITHUB_ENV
58+
echo "OBJ_EXT=\\.o" >> $GITHUB_ENV
59+
cd ACE_TAO
60+
export ACE_COMMIT=$(git rev-parse HEAD)
61+
echo "ACE_COMMIT=$ACE_COMMIT" >> $GITHUB_ENV
62+
cd ../OpenDDS
63+
export DDS_COMMIT=$(git rev-parse HEAD)
64+
echo "DDS_COMMIT=$DDS_COMMIT" >> $GITHUB_ENV
65+
export MATRIX_MD5=$(echo "${{ matrix }}" | md5sum | cut -d ' ' -f 1)
66+
echo "MATRIX_MD5=$MATRIX_MD5" >> $GITHUB_ENV
67+
export COMPILER_MD5=$(echo "$COMPILER_VERSION" | md5sum | cut -d ' ' -f 1)
68+
echo "COMPILER_MD5=$COMPILER_MD5" >> $GITHUB_ENV
69+
export CONFIG_OPTIONS="--optimize --no-debug --static --no-inline"
70+
echo "CONFIG_OPTIONS=$CONFIG_OPTIONS" >> $GITHUB_ENV
71+
export CONFIG_MD5=$(echo "$CONFIG_OPTIONS" | md5sum | cut -d ' ' -f 1)
72+
echo "CONFIG_MD5=$CONFIG_MD5" >> $GITHUB_ENV
73+
- name: 'Check Build Cache'
74+
id: cache-build
75+
uses: actions/cache@v4
76+
with:
77+
path: ${{ env.MATRIX_MD5 }}.tar.xz
78+
key: c01_${{ env.MATRIX_MD5 }}_${{ env.COMPILER_MD5 }}_${{ env.ACE_COMMIT }}_${{ env.DDS_COMMIT }}_${{ env.CONFIG_MD5 }}
79+
- name: 'Extract Build Cache'
80+
if: steps.cache-build.outputs.cache-hit == 'true'
81+
shell: bash
82+
run: |
83+
tar xvfJ ${{ env.MATRIX_MD5 }}.tar.xz
84+
- name: 'Configure OpenDDS'
85+
if: steps.cache-build.outputs.cache-hit != 'true'
86+
shell: bash
87+
run: |-
88+
cd OpenDDS
89+
./configure ${{ env.CONFIG_OPTIONS }}
90+
tools/scripts/show_build_config.pl
91+
- name: 'Build OpenDDS'
92+
if: steps.cache-build.outputs.cache-hit != 'true'
93+
shell: bash
94+
run: |-
95+
cd OpenDDS
96+
. setenv.sh
97+
make -j3 OpenDDS_Rtps_Udp
98+
- name: 'Create Build Cache'
99+
if: steps.cache-build.outputs.cache-hit != 'true'
100+
shell: bash
101+
run: |
102+
cd ACE_TAO
103+
find . -iname "*$OBJ_EXT" | xargs rm
104+
git clean -xdn | cut -d ' ' -f 3- | sed 's/^/ACE_TAO\//g' | tee ../ACE_TAO_files.txt
105+
cd ..
106+
tar cvf ${{ env.MATRIX_MD5 }}.tar ACE_TAO/ACE/ace/config.h
107+
cat ACE_TAO_files.txt | xargs tar uvf ${{ env.MATRIX_MD5 }}.tar
108+
cd OpenDDS
109+
find . -iname "*$OBJ_EXT" | xargs rm
110+
git clean -xdn | cut -d ' ' -f 3- | sed 's/^/OpenDDS\//g' | tee ../OpenDDS_files.txt
111+
cd ..
112+
cat OpenDDS_files.txt | xargs tar uvf ${{ env.MATRIX_MD5 }}.tar
113+
xz -3 ${{ env.MATRIX_MD5 }}.tar
114+
- name: 'Set Up Problem Matcher'
115+
uses: ammaraskar/[email protected]
116+
- name: 'Build Application'
117+
shell: bash
118+
run: |-
119+
cmake -G Ninja -S srcCxx/opendds-cmake -B build -D OpenDDS_ROOT=OpenDDS
120+
cmake --build build

CLA/CLA_S2E_Software_Systems.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: S2E Software Systems B.V.
49+
50+
Address: St. Jacobstraat 125, 3511 BP Utrecht, The Netherlands
51+
52+
("**You**")
53+
54+
**By:**
55+
56+
Name: Stefan Kimmer
57+
58+
Title: Director
59+
60+
Date: August 26, 2024
61+

COPYRIGHT.md

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,9 +13,16 @@ Copyright holders
1313
-----------------
1414

1515
© 2024 Real-Time Innovations, Inc.
16+
1617
© 2024 Atostek Oy.
18+
1719
© 2024 Proyectos y Sistemas de Mantenimiento SL (eProsima).
20+
1821
© 2024 Kongsberg Defence & Aerospace.
22+
1923
© 2024 Object Computing, Inc.
24+
2025
© 2024 OpenDDS Foundation.
26+
2127
© 2024 Twin Oaks Computing, Inc.
28+
© 2024 S2E Software Systems B.V.

README.md

Lines changed: 80 additions & 36 deletions
Original file line numberDiff line numberDiff line change
@@ -169,15 +169,15 @@ The Shape application allows the following parameters:
169169

170170
~~~
171171
--help, -h : print this menu
172+
-v [e|d] : set log message verbosity [e: ERROR, d: DEBUG]
172173
-P : publish samples
173174
-S : subscribe samples
174175
-d <int> : domain id (default: 0)
175176
-b : BEST_EFFORT reliability
176177
-r : RELIABLE reliability
177178
-k <depth> : keep history depth [0: KEEP_ALL]
178-
-f <interval> : set a 'deadline' with interval (seconds) [0: OFF]
179-
-i <interval> : apply 'time based filter' with interval (seconds) [0: OFF]
180-
-s <int> : set ownership strength [-1: SHARED]
179+
-f <interval> : set a 'deadline' with interval (ms) [0: OFF]
180+
-s <strength> : set ownership strength [-1: SHARED]
181181
-t <topic_name> : set the topic name
182182
-c <color> : set color to publish (filter if subscriber)
183183
-p <partition> : set a 'partition' string
@@ -191,8 +191,42 @@ The Shape application allows the following parameters:
191191
Default: 33ms
192192
--read-period <ms> : waiting period between 'read()' or 'take()' operations
193193
in ms. Default: 100ms
194-
-v [e|d] : set log message verbosity [e: ERROR, d: DEBUG]
195-
194+
--time-filter <interval> : apply 'time based filter' with interval
195+
in ms [0: OFF]
196+
--lifespan <int> : indicates the lifespan of a sample in ms
197+
--num-iterations <int>: indicates the number of iterations of the main loop
198+
After that, the application will exit.
199+
Default: infinite
200+
--num-instances <int>: indicates the number of instances a DataWriter writes
201+
If the value is > 1, the additional instances are
202+
created by appending a number. For example, if the
203+
original color is "BLUE" the instances used are
204+
"BLUE", "BLUE1", "BLUE2"...
205+
--num-topics <int>: indicates the number of topics created (using the same
206+
type). This also creates a DataReader or DataWriter per
207+
topic. If the value is > 1, the additional topic names
208+
are created by appending a number: For example, if the
209+
original topic name is "Square", the topics created are
210+
"Square", "Square1", "Square2"...
211+
--final-instance-state [u|d]: indicates the action performed after the
212+
DataWriter finishes its execution (before
213+
deleting it):
214+
- u: unregister
215+
- d: dispose
216+
--access-scope [i|t|g]: sets Presentation.access_scope to INSTANCE, TOPIC
217+
or GROUP
218+
--coherent : sets Presentation.coherent_access = true
219+
--ordered : sets Presentation.ordered_access = true
220+
--coherent-sample-count <int>: amount of samples sent for each DataWriter
221+
and instance that are grouped in a coherent
222+
set
223+
--additional-payload-size <bytes>: indicates the amount of bytes added to
224+
the samples written (for example to use
225+
large data)
226+
--take-read : uses take()/read() instead of take_next_instance()
227+
read_next_instance()
228+
--periodic-announcement <ms> : indicates the periodic participant
229+
announcement period in ms. Default 0 (off)
196230
~~~
197231

198232
## Return Code
@@ -323,62 +357,72 @@ The `interoperability_report.py` may configure the following options:
323357
$ python3 interoperability_report.py -h
324358
325359
usage: interoperability_report.py [-h] -P publisher_executable_name -S subscriber_executable_name
326-
[-v] [-s test_suite_dictionary_file]
327-
[-t test_cases [test_cases ...] | -d
328-
test_cases_disabled
329-
[test_cases_disabled ...]] [-o filename]
360+
[-v] [-x {1,2}] [-a periodic_announcement_period]
361+
[-s test_suite_dictionary_file]
362+
[-t test_cases [test_cases ...] | -d test_cases_disabled [test_cases_disabled ...]]
363+
[-o filename]
330364
331-
Validation of interoperability of products compliant with OMG DDS-RTPS
332-
standard. This script generates automatically the verification between two
333-
shape_main executables. It also generates an XML report in JUnit format.
365+
Validation of interoperability of products compliant with OMG DDS-RTPS standard.
366+
This script generates automatically the verification between two shape_main
367+
executables. It also generates an XML report in JUnit format.
334368
335369
optional arguments:
336370
-h, --help show this help message and exit
337371
338372
general options:
339373
-P publisher_executable_name, --publisher publisher_executable_name
340-
Path to the Publisher shape_main application. It may
341-
be absolute or relative path. Example: if the
342-
executable is in the same folder as the script: "-P
343-
./rti_connext_dds-6.1.1_shape_main_linux".
374+
Path to the Publisher shape_main application. It may be
375+
absolute or relative path. Example: if the executable is
376+
in the same folder as the script:
377+
"-P ./rti_connext_dds-6.1.1_shape_main_linux".
344378
-S subscriber_executable_name, --subscriber subscriber_executable_name
345-
Path to the Subscriber shape_main application. It may
346-
be absolute or relative path. Example: if the
347-
executable is in the same folder as the script: "-S
348-
./rti_connext_dds-6.1.1_shape_main_linux".
379+
Path to the Subscriber shape_main application. It may be
380+
absolute or relative path. Example: if the executable is
381+
in the same folder as the script:
382+
"-S ./rti_connext_dds-6.1.1_shape_main_linux".
349383
350384
optional parameters:
351385
-v, --verbose Print debug information to stdout. This option also
352386
shows the shape_main application output in case of
353-
error. If this option is not used, only the test
354-
results are printed in the stdout. (Default: False).
387+
error. If this option is not used, only the test results
388+
are printed in the stdout.
389+
Default: False.
390+
-x {1,2}, --data-representation {1,2}
391+
Data Representation used if no provided when running the
392+
shape_main application. If this application already sets
393+
the data representation, this parameter is not used. The
394+
potential values are 1 for XCDR1 and 2 for XCDR2.
395+
Default value 2.
396+
-a periodic_announcement_period, --periodic-announcement periodic_announcement_ms
397+
Indicates the periodic participant announcement period in ms.
398+
Default: 0 (off).
355399
356400
Test Case and Test Suite:
357401
-s test_suite_dictionary_file, --suite test_suite_dictionary_file
358402
Test Suite that is going to be tested. Test Suite is a
359403
file with a Python dictionary defined. It must be
360-
located on the same directory as
361-
interoperability_report. This value should not contain
362-
the extension ".py", only the name of the file. It
363-
will run all the dictionaries defined in the file.
364-
(Default: test_suite).
404+
located on the same directory as interoperability_report.
405+
This value should not contain the extension ".py", only
406+
the name of the file. It will run all the dictionaries
407+
defined in the file.
408+
Default: test_suite.
365409
-t test_cases [test_cases ...], --test test_cases [test_cases ...]
366410
Test Case that the script will run. This option is not
367411
supported with --disable-test. This allows to set
368-
multiple values separated by a space. (Default: run
369-
all Test Cases from the Test Suite.)
412+
multiple values separated by a space.
413+
Default: run all Test Cases from the Test Suite.
370414
-d test_cases_disabled [test_cases_disabled ...], --disable-test test_cases_disabled [test_cases_disabled ...]
371-
Test Case that the script will skip. This allows to
372-
set multiple values separated by a space. This option
373-
is not supported with --test. (Default: None)
415+
Test Case that the script will skip. This allows to set
416+
multiple values separated by a space. This option is not
417+
supported with --test.
418+
Default: None
374419
375420
output options:
376421
-o filename, --output-name filename
377422
Name of the xml report that will be generated. If the
378-
file passed already exists, it will add the new
379-
results to it. In other case it will create a new
380-
file. (Default:
381-
<publisher_name>-<subscriber_name>-date.xml)
423+
file passed already exists, it will add the new results
424+
to it. In other case it will create a new file.
425+
Default: <publisher_name>-<subscriber_name>-date.xml
382426
```
383427

384428

0 commit comments

Comments
 (0)