Skip to content

Commit 61abd18

Browse files
committed
Merge branch 'master' into add_new_test_python_0725
2 parents 1b9213e + bee6568 commit 61abd18

27 files changed

+2071
-884
lines changed

.github/workflows/1_run_interoperability_tests.yml

Lines changed: 81 additions & 315 deletions
Large diffs are not rendered by default.

.github/workflows/ci_dustdds.yml

Lines changed: 31 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,31 @@
1+
name: CI DustDDS
2+
3+
on:
4+
workflow_dispatch:
5+
pull_request:
6+
paths:
7+
- 'srcRs/DustDDS/**'
8+
9+
jobs:
10+
create_bin_release:
11+
name: Create binary release
12+
runs-on: ubuntu-latest
13+
defaults:
14+
run:
15+
working-directory: srcRs/DustDDS
16+
steps:
17+
- name: Checkout sources
18+
uses: actions/checkout@v4
19+
- name: Build executable
20+
run: cargo build --package dust_dds_shape_main_linux --release
21+
- name: Rename executable
22+
run: |
23+
version=$( cargo tree --package dust_dds --depth 0 --prefix none | tr -d 'dust_dds v' )
24+
cp ./target/release/dust_dds_shape_main_linux ./dust_dds-${version}_shape_main_linux
25+
mkdir artifacts
26+
zip --junk-paths artifacts/dust_dds-${version}_shape_main_linux.zip ./dust_dds-${version}_shape_main_linux
27+
- name: Upload executable artifact
28+
uses: actions/upload-artifact@v4
29+
with:
30+
name: interoperability_executable
31+
path: srcRs/DustDDS/artifacts/

.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/gcc-problem-matcher@0.3.0
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

.gitignore

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -48,9 +48,16 @@ GeneratedCode
4848

4949
# Generated files
5050
srcCxx/shape.*
51+
!srcCxx/shape.idl
5152
srcCxx/shapePlugin.*
5253
srcCxx/shapeSupport.*
5354

55+
# Generated files Connext Micro
56+
srcCxx/shape_bounded.*
57+
!srcCxx/shape_bounded.idl
58+
srcCxx/shape_boundedPlugin.*
59+
srcCxx/shape_boundedSupport.*
60+
5461
# VSCode default folders
5562
.vscode/
5663
build/

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

doc/test_description.template.rst

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -60,6 +60,9 @@ product versions.
6060

6161
* Content Filtered Topic expression created with single quotes around strings
6262
values
63+
* Content Filtered Topic uses MATCH operator for string comparisons.
64+
* Increased the periodic discovery announcements to 5s in the tests where
65+
the subscriber is OpenDDS and the publisher is Connext DDS.
6366

6467
* **FastDDS**:
6568

0 commit comments

Comments
 (0)