10. Compatibility
RTI Perftest 4.1.1 is designed to be compatible with the RTI Connext DDS middleware. It has been compiled and tested against:
RTI Connext DDS Professional 6.0.0 and above. Nonetheless previous versions starting after 5.2.X should be compatible with certain exceptions.
RTI Connext DDS Micro 3.0.0 and above versions. Versions for 2.4.11 and above should also be compatible by adding the --micro-24x-compatibility command-line option.
RTI Connext TSS 3.1.2 over RTI Connext Pro 6.1.1.4, or over RTI Connext Micro 2.4.13.4. The only supported FACE profile is GeneralPurpose.
10.1. Using Security
Governance and Permission files have been updated to be compatible with the latest release for RTI Connext DDS, and are compatible with RTI Connext DDS Professional 5.2.7 and greater.
If you are compiling RTI Perftest against 5.2.5, you will need to get
the certificates from the release/2.0
branch. You can do that by
using the following git command from the top-level directory of your
repository:
git checkout release/2.0 -- resource/secure
10.2. RTI Connext DDS 6.0.1 Security Plugins Changes
In order to add compatibility for RTI Connext DDS 6.0.1 including the Security Plugins on Windows, a change that breaks compatibility was made:
When building a Windows application, RTI Perftest must now link against
libssl
and libcrypto
instead of ssleay32
and libeay32
, as documented
here.
This breaks compatibility against previous versions of RTI Connext DDS. In order
to compile against previous versions a manual change has to be made in the build.bat
script:
Search and replace all references for crypt32 libcryptoz libsslz
with libeay32z ssleay32z
.
10.3. Compilation Restrictions
RTI Perftest is designed to compile and work against the RTI Connext DDS 5.2.x, 5.3.x and 6.0.0 releases.
Certain features, however, are not compatible with all the RTI Connext DDS versions, since the build scripts make use of certain specific parameters in rtiddsgen that might change or not be present between releases:
The
--openssl-home
command-line option will not work for versions prior to RTI Connext DDS 5.2.5.The
--wolfssl-home
command-line option will not work for versions prior to RTI Connext DDS 6.1.1.Java code generation against RTI Connext DDS 5.2.0.x will fail out-of-the-box. You can disable this by adding the
--skip-java-build
flag. See the Known Issues section for more information and alternatives.C# code generation against RTI Connext DDS 5.2.0.x is not supported. You can disable this by adding the
--skip-cs-build
flag.
10.4. New C# Implementation .NET compatibility
The C# implementation has been compiled and tested against RTI Perftest .NET 3.1 and above.
Performance testing, feature development and performance data acquisition have been done using .NET 5.0.
10.5. Using the Old C# Implementation
Starting in release 3.3, RTI Perftest will stop supporting the legacy C# implementation and adopt the new one provided in RTI ConnextDDS 6.1.0. However, the old implementation can still be tested using the existing code provided in the RTI Perftest 3.2 release branch. You can easily access that code by doing:
git clean -xdf -- srcCs
git checkout -b feature/3.2 -- srcCs
git checkout -b feature/3.2 -- build.bat
For compiling:
build.bat --platform <platform> --nddshome <ConnextDDS installation directory> --cs-build
Note: Recall that the legacy C# implementation is only compatible with Windows.
10.6. Known Issues
10.6.1. Compilation Errors in Microsoft Visual Studio 2017 Express
Due to this issue documented in the Know Issues for RTI Connext DDS, when compiling with Visual Studio 2017 Express, you need to set the RTI_VS_WINDOWS_TARGET_PLATFORM_VERSION as follows to avoid compilation errors:
set RTI_VS_WINDOWS_TARGET_PLATFORM_VERSION=10.0.16299.0
[RTI Issue ID CODEGENII-800]
10.6.3. Warning when compiling the Traditional C++ API Implementation
RTI Perftest might show these warnings when compiling the Traditional C++ API implementation for RTI Connext DDS Pro (in versions prior to 6.0.0) and for RTI Connext DDS Micro:
In file included from perftestSupport.h:15:0,
from perftestSupport.cxx:11:
perftest.h:29:25: warning: ‘THROUGHPUT_TOPIC_NAME’ defined but not used [-Wunused-variable]
static const DDS_Char * THROUGHPUT_TOPIC_NAME= "Throughput";
^
perftest.h:30:25: warning: ‘LATENCY_TOPIC_NAME’ defined but not used [-Wunused-variable]
static const DDS_Char * LATENCY_TOPIC_NAME= "Latency";
^
perftest.h:31:25: warning: ‘ANNOUNCEMENT_TOPIC_NAME’ defined but not used [-Wunused-variable]
static const DDS_Char * ANNOUNCEMENT_TOPIC_NAME= "Announcement";
^
These warnings are the result of a known issue in RTI Code Generator (rtiddsgen) (CODEGENII-873) related to the way in which the code for a const string is generated. This issue will be fixed in future releases of RTI Connext DDS Micro and has been already fixed for RTI Connext DDS Pro 6.0.0.
10.6.4. Building RTI Perftest Java API against RTI Connext DDS 5.2.0.x
Due to the changes added to support larger data sizes, RTI Perftest now makes use of Unbounded Sequences. This feature was not added to RTI Connext DDS in 5.2.0.x, so the following error will be reported when trying to compile the Java API:
[INFO]: Generating types and makefiles for java.
[INFO]: Command: "/home/test/nevada/bin/rtiddsgen" -language java -unboundedSupport -replace -package com.rti.perftest.gen -d "/home/test/test-antonio/srcJava" "/home/test/test-antonio/srcIdl/perftest.idl"
ERROR com.rti.ndds.nddsgen.Main Fail: -unboundedSupport is only supported with C, C++, C++/CLI, or C# code generation
rtiddsgen version 2.3.0
Usage: rtiddsgen [-help]
. . .
INFO com.rti.ndds.nddsgen.Main Done (failures)
[ERROR]: Failure generating code for java.
To avoid this compilation error, two changes are needed:
In the
build.sh
orbuild.bat
scripts, modify the call for rtiddsgen and remove the-unboundedSupport
flag.In the
srcIdl/perftest.idl
file, modify theTestDataLarge_t
andTestDataLargeKeyed_t
types, and add a bound to thebin_data
member:sequence<octet,LIMIT> bin_data;
.
10.6.5. Publication rate precision on Windows systems when using "sleep" instead of "spin"
When using the -pubRate <#>:sleep
or -sleep
command-line
parameters on Windows systems, the sleep()
precision will be accurate
up to 10 milliseconds. This means that for publication rates of more
than 10,000 samples per second we recommend using the "<#>:spin" option
instead.
10.6.6. Compiling manually on Windows systems when using the RTI Security plugin
rtiddsgen-generated solutions for Windows systems allow four different configurations:
Debug
Debug DLL
Release
Release DLL
The new RTI Perftest build system, however, is focused on compiling
only one of those modes at a time. To choose the compilation mode,
use the -debug
and -dynamic
flags.
10.6.7. Warnings Compiling on Windows systems when using the RTI Security plugin
We have found that in certain installations of Openssl a missing pdb
file
causes several warnings when compiling statically RTI Perftest for C++
(Traditional and Modern implementations). The warning that will show should be
similar to this one:
libeay32z.lib(wp_block.obj) : warning LNK4099: PDB 'lib.pdb' was not found with
'libeay32z.lib(wp_block.obj)' or at 'rtiperftest\srcCpp11\objs\i86Win32VS2015\lib.pdb';
linking object as if no debug info [srcCpp11\perftest_publisher-i86Win32VS2015.vcxproj]
403 Warning(s)
0 Error(s)
This warning should be innocuous.
10.6.8. Dynamic compilation modes for RTI Connext DDS Micro
When building against the RTI Connext DDS Micro libraries, only the static
compilation modes are supported. Therefore the --dynamic
option will have
no effect.
rtiddsgen
code generator will fail with the following message: Option
-sharedLib is not supported by this version of rtiddsgen
.
10.6.9. Warnings compiling RTI Connext DDS Secure in static mode
In order to force the use of static SSL libraries (OpenSSL or wolfSSL) in
Pertest, we use the -static
linker option. That causes in some operative
systems the linker to show the following warning:
/bin/ld: /libnddscorez.a(Library.c.o): in function `RTIOsapiLibrary_openEx':
Library.c:(.text+0x379): warning: Using 'dlopen' in statically linked applications requires at runtime the shared libraries from the glibc version used for linking
/bin/ld: /libnddscorez.a(SocketUtil.c.o): in function `NDDS_Transport_SocketUtil_V6StringAddress_to_transportAddress':
SocketUtil.c:(.text+0x331): warning: Using 'getaddrinfo' in statically linked applications requires at runtime the shared libraries from the glibc version used for linking
/bin/ld: /libcrypto.a(b_sock.o): in function `BIO_gethostbyname':
b_sock.c:(.text+0x71): warning: Using 'gethostbyname' in statically linked applications requires at runtime the shared libraries from the glibc version used for linking
This warning should be innocuous.