2018-08-05 22:30:52 +02:00
|
|
|
language: c
|
|
|
|
|
2019-05-21 23:14:14 +02:00
|
|
|
# Coverity Scan can be configured through Travis addons, but this allows for
|
|
|
|
# more control over the build instructions and does not require the addition
|
|
|
|
# of a coverity_scan branch in the repository. travisci_build_coverity_scan.sh
|
|
|
|
# does more checks before it decides to download Coverity (around 500M), but
|
|
|
|
# these instructions assume Coverity Scan is not installed if the directory
|
|
|
|
# does not exist and expects the download to fail if the token is incorrect.
|
|
|
|
# Coverity Scan quota are not checked as the Coverity enabled build must only
|
|
|
|
# run from cron.
|
|
|
|
install_coverity: &install_coverity
|
2019-08-27 18:23:33 +02:00
|
|
|
if [ "${COVERITY_SCAN}" = "true" ]; then
|
|
|
|
COV_DIR="/tmp/coverity-scan-analysis";
|
|
|
|
COV_ARC="/tmp/cov-analysis-${COV_PLATFORM}.tgz";
|
|
|
|
test ! -d "${COV_DIR}" &&
|
|
|
|
mkdir -p "${COV_DIR}" &&
|
|
|
|
curl -s -S -F project="${TRAVIS_REPO_SLUG}"
|
2019-05-21 23:14:14 +02:00
|
|
|
-F token="${COVERITY_SCAN_TOKEN}"
|
2019-08-27 18:23:33 +02:00
|
|
|
-o "${COV_ARC}"
|
2019-05-21 23:14:14 +02:00
|
|
|
"https://scan.coverity.com/download/cxx/${COV_PLATFORM}" &&
|
2019-08-27 18:23:33 +02:00
|
|
|
tar -xzf "${COV_ARC}" -C "${COV_DIR}";
|
|
|
|
COV_ANALYSIS=$(find "${COV_DIR}" -type d -name "cov-analysis*");
|
|
|
|
eval "export PATH=\"${PATH}:${COV_ANALYSIS}/bin\"";
|
2019-05-21 23:14:14 +02:00
|
|
|
eval "export SCAN_BUILD=\"cov-build --dir cov-int\"";
|
|
|
|
cov-configure --comptype ${COV_COMPTYPE} --compiler ${CC} --template;
|
|
|
|
fi
|
|
|
|
|
|
|
|
submit_to_coverity_scan: &submit_to_coverity_scan
|
2019-08-27 18:23:33 +02:00
|
|
|
if [ "${COVERITY_SCAN}" = "true" ]; then
|
2019-05-21 23:14:14 +02:00
|
|
|
tar -czf analysis-results.tgz cov-int &&
|
2019-08-27 18:23:33 +02:00
|
|
|
curl -s -S -F project="${TRAVIS_REPO_SLUG}"
|
2019-05-21 23:14:14 +02:00
|
|
|
-F token="${COVERITY_SCAN_TOKEN}"
|
|
|
|
-F file=@analysis-results.tgz
|
|
|
|
-F version=$(git rev-parse --short HEAD)
|
|
|
|
-F description="Travis CI build"
|
2019-08-27 18:23:33 +02:00
|
|
|
-F email="${COVERITY_SCAN_EMAIL:=cyclonedds-inbox@eclipse.org}"
|
2019-05-21 23:14:14 +02:00
|
|
|
"https://scan.coverity.com/builds";
|
|
|
|
fi
|
|
|
|
|
2018-08-05 22:30:52 +02:00
|
|
|
linux_gcc8: &linux_gcc8
|
|
|
|
os: linux
|
2019-01-31 18:09:49 +01:00
|
|
|
dist: xenial
|
2018-08-05 22:30:52 +02:00
|
|
|
compiler: gcc
|
|
|
|
addons:
|
|
|
|
apt:
|
|
|
|
update: true
|
|
|
|
sources: [ ubuntu-toolchain-r-test ]
|
2019-01-31 18:09:49 +01:00
|
|
|
packages: [ gcc-8 g++-8 ]
|
2019-05-21 23:14:14 +02:00
|
|
|
before_install:
|
|
|
|
- eval "export CC=gcc-8"
|
|
|
|
- eval "export CXX=g++-8"
|
|
|
|
- eval "export COV_COMPTYPE=gcc COV_PLATFORM=linux64"
|
|
|
|
install:
|
|
|
|
- *install_coverity
|
|
|
|
- pip install conan --upgrade --user
|
2018-08-05 22:30:52 +02:00
|
|
|
|
2019-01-31 18:09:49 +01:00
|
|
|
linux_clang: &linux_clang
|
2018-08-05 22:30:52 +02:00
|
|
|
os: linux
|
2019-01-31 18:09:49 +01:00
|
|
|
dist: xenial
|
2018-08-05 22:30:52 +02:00
|
|
|
compiler: clang
|
|
|
|
addons:
|
|
|
|
apt:
|
|
|
|
update: true
|
2019-05-21 23:14:14 +02:00
|
|
|
before_install:
|
|
|
|
- eval "export CC=clang"
|
|
|
|
- eval "export CXX=clang++"
|
|
|
|
- eval "export COV_COMPTYPE=clang COV_PLATFORM=linux64"
|
|
|
|
install:
|
|
|
|
- pip install conan --upgrade --user
|
2018-08-05 22:30:52 +02:00
|
|
|
|
2019-10-31 08:08:39 +01:00
|
|
|
osx_xcode: &osx_xcode
|
2018-08-05 22:30:52 +02:00
|
|
|
os: osx
|
2019-10-31 08:08:39 +01:00
|
|
|
osx_image: xcode11.1
|
2018-08-05 22:30:52 +02:00
|
|
|
compiler: clang
|
2019-01-31 18:09:49 +01:00
|
|
|
addons:
|
|
|
|
homebrew:
|
2019-10-02 12:59:14 +02:00
|
|
|
packages: [ python3 ]
|
2019-05-21 23:14:14 +02:00
|
|
|
before_install:
|
|
|
|
- eval "export CC=clang"
|
|
|
|
- eval "export CXX=clang++"
|
|
|
|
- eval "export COV_COMPTYPE=clang COV_PLATFORM=macOSX"
|
2019-10-02 12:59:14 +02:00
|
|
|
- eval "export PATH=\"${PATH}:$(python3 -m site --user-base)/bin\""
|
2019-05-21 23:14:14 +02:00
|
|
|
install:
|
2019-10-18 20:50:53 -05:00
|
|
|
- python3 -m pip install conan --upgrade --user
|
2019-10-02 12:59:14 +02:00
|
|
|
|
|
|
|
osx_xcode9: &osx_xcode9
|
2019-10-31 08:08:39 +01:00
|
|
|
<<: *osx_xcode
|
2019-10-02 12:59:14 +02:00
|
|
|
osx_image: xcode9
|
|
|
|
addons:
|
|
|
|
homebrew:
|
|
|
|
packages: [ python3 ]
|
|
|
|
# Homebrew must be updated before packages can be installed on outdated
|
|
|
|
# macOS images. The update process unfortunately takes a VERY long time
|
|
|
|
# and can even cause Travis to terminate the build. Travis caching is
|
|
|
|
# used to ensure Homebrew is kept up-to-date and build times are kept to
|
|
|
|
# a minimum.
|
|
|
|
update: true
|
2018-08-05 22:30:52 +02:00
|
|
|
|
2019-02-17 23:41:37 +01:00
|
|
|
windows_vs2017: &windows_vs2017
|
|
|
|
os: windows
|
2019-05-21 23:14:14 +02:00
|
|
|
# Conan will automatically determine the best compiler for a given platform
|
|
|
|
# based on educated guesses. The first check is based on the CC and CXX
|
|
|
|
# environment variables, the second (on Windows) is to check if Microsoft
|
|
|
|
# Visual Studio is installed. On Travis CC and CXX are set to gcc on
|
|
|
|
# Microsoft Windows targets as well, this has the undesired effect that MSVC
|
|
|
|
# is not detected, unsetting CC and CXX solves that problem.
|
|
|
|
#
|
|
|
|
#
|
|
|
|
# !!! IMPORTANT !!!
|
|
|
|
#
|
|
|
|
# Microsoft Windows instances freeze at "install:" if secure environment
|
|
|
|
# variables are used. There is no option to export secrets only for
|
|
|
|
# specified platforms. The "filter_secrets: false" option is used to disable
|
|
|
|
# the filter for Microsoft Windows instances. This is not an issue if the
|
|
|
|
# secret is removed from the environment at the earliest opportunity, before
|
|
|
|
# risk of exposure, as secrets are always removed from the environment for
|
|
|
|
# pull requests and are still filtered when exported to the environment. The
|
|
|
|
# secret of course will not be available for Microsoft Windows builds, but
|
|
|
|
# for Coverity Scan, that is fine.
|
|
|
|
filter_secrets: false
|
|
|
|
before_install:
|
|
|
|
- eval "unset COVERITY_SCAN_TOKEN"
|
2019-08-27 18:23:33 +02:00
|
|
|
- eval "unset COVERITY_SCAN_EMAIL"
|
2019-05-21 23:14:14 +02:00
|
|
|
- eval "unset CC"
|
|
|
|
- eval "unset CXX"
|
|
|
|
- eval "export COV_COMPTYPE=msvc COV_PLATFORM=win64"
|
|
|
|
- JAVA_HOME=$(find "/c/Program Files/Android/jdk/" -name "*openjdk*" | sort | head -n 1)
|
|
|
|
- export JAVA_HOME
|
|
|
|
- export PATH="${PATH}:${JAVA_HOME}/bin"
|
|
|
|
# Windows targets in Travis are still very much in beta and Python is not yet
|
|
|
|
# available and installation of Python through Chocolaty does not work well.
|
|
|
|
# The real fix is to wait until Python and pip are both available on the
|
|
|
|
# target. Until then download Conan from the official website and simply add
|
|
|
|
# the extracted folder to the path.
|
|
|
|
install:
|
|
|
|
- choco install innoextract
|
|
|
|
- choco install maven --ignore-dependencies
|
|
|
|
- wget -q https://dl.bintray.com/conan/installers/conan-win-64_1_10_0.exe
|
|
|
|
- innoextract conan-win-64_1_10_0.exe
|
|
|
|
- eval "export PATH=\"$(pwd)/app/conan:${PATH}\""
|
2019-02-17 23:41:37 +01:00
|
|
|
|
2019-05-21 23:14:14 +02:00
|
|
|
jobs:
|
2018-08-05 22:30:52 +02:00
|
|
|
include:
|
|
|
|
- <<: *linux_gcc8
|
Deadline Missed QoS implementation
This commit contains the implementation of the deadline QoS
for readers and writers. The description of this QoS in
the DDS specification (section 2.2.3.7):
"This policy is useful for cases where a Topic is expected to
have each instance updated periodically. On the publishing side this
setting establishes a contract that the application must meet.
On the subscribing side the setting establishes a minimum
requirement for the remote publishers that are expected to supply
the data values."
On the writer side, the deadline missed event also needs to trigger in
case only local readers exist. The implementation for this inserts
the sample in the writer history cache temporary, so that an instance
is created in the whc. Immediately after inserting the sample, it is
removed again. With the creation of the instance, the deadline missed event
is created, which will take care of triggering the deadline missed
callback if required. In case the instance already existed, the timer
of the event is renewed.
To verify the changes to the writer history cache, add an additional
test to check the write history cache state. This test checks the state
of the whc after writing samples by a writer with specific combinations
of qos settings. The state of the whc is checked for stored
samples (min/max sequence number) and the absence of unacked data, after
writing samples and wait for acks by the local and/or remote
readers (which is also a parameter for this test). This test is
introduced as part of the deadline implementation, but its scope is
wider than only the changes that were made in the whc implementation for
the deadline qos.
This test showed that even before the deadline support was added,
whc_default_remove_acked_messages_full data was not marked as acked in
case of transient-local keep-all. This resulted in data in whc that
never gets in acked state. This has been fixed as well.
Signed-off-by: Dennis Potman <dennis.potman@adlinktech.com>
2019-12-18 16:22:31 +01:00
|
|
|
env: [ ARCH=x86_64, ASAN=none, BUILD_TYPE=Debug, SSL=YES, LIFESPAN=YES, DEADLINE=YES, GENERATOR="Unix Makefiles", COVERITY_SCAN=true ]
|
2019-05-21 23:14:14 +02:00
|
|
|
if: type = cron
|
|
|
|
- <<: *linux_gcc8
|
Deadline Missed QoS implementation
This commit contains the implementation of the deadline QoS
for readers and writers. The description of this QoS in
the DDS specification (section 2.2.3.7):
"This policy is useful for cases where a Topic is expected to
have each instance updated periodically. On the publishing side this
setting establishes a contract that the application must meet.
On the subscribing side the setting establishes a minimum
requirement for the remote publishers that are expected to supply
the data values."
On the writer side, the deadline missed event also needs to trigger in
case only local readers exist. The implementation for this inserts
the sample in the writer history cache temporary, so that an instance
is created in the whc. Immediately after inserting the sample, it is
removed again. With the creation of the instance, the deadline missed event
is created, which will take care of triggering the deadline missed
callback if required. In case the instance already existed, the timer
of the event is renewed.
To verify the changes to the writer history cache, add an additional
test to check the write history cache state. This test checks the state
of the whc after writing samples by a writer with specific combinations
of qos settings. The state of the whc is checked for stored
samples (min/max sequence number) and the absence of unacked data, after
writing samples and wait for acks by the local and/or remote
readers (which is also a parameter for this test). This test is
introduced as part of the deadline implementation, but its scope is
wider than only the changes that were made in the whc implementation for
the deadline qos.
This test showed that even before the deadline support was added,
whc_default_remove_acked_messages_full data was not marked as acked in
case of transient-local keep-all. This resulted in data in whc that
never gets in acked state. This has been fixed as well.
Signed-off-by: Dennis Potman <dennis.potman@adlinktech.com>
2019-12-18 16:22:31 +01:00
|
|
|
env: [ ARCH=x86_64, ASAN=none, BUILD_TYPE=Debug, SSL=YES, LIFESPAN=YES, DEADLINE=YES, GENERATOR="Unix Makefiles" ]
|
2018-08-05 22:30:52 +02:00
|
|
|
- <<: *linux_gcc8
|
Deadline Missed QoS implementation
This commit contains the implementation of the deadline QoS
for readers and writers. The description of this QoS in
the DDS specification (section 2.2.3.7):
"This policy is useful for cases where a Topic is expected to
have each instance updated periodically. On the publishing side this
setting establishes a contract that the application must meet.
On the subscribing side the setting establishes a minimum
requirement for the remote publishers that are expected to supply
the data values."
On the writer side, the deadline missed event also needs to trigger in
case only local readers exist. The implementation for this inserts
the sample in the writer history cache temporary, so that an instance
is created in the whc. Immediately after inserting the sample, it is
removed again. With the creation of the instance, the deadline missed event
is created, which will take care of triggering the deadline missed
callback if required. In case the instance already existed, the timer
of the event is renewed.
To verify the changes to the writer history cache, add an additional
test to check the write history cache state. This test checks the state
of the whc after writing samples by a writer with specific combinations
of qos settings. The state of the whc is checked for stored
samples (min/max sequence number) and the absence of unacked data, after
writing samples and wait for acks by the local and/or remote
readers (which is also a parameter for this test). This test is
introduced as part of the deadline implementation, but its scope is
wider than only the changes that were made in the whc implementation for
the deadline qos.
This test showed that even before the deadline support was added,
whc_default_remove_acked_messages_full data was not marked as acked in
case of transient-local keep-all. This resulted in data in whc that
never gets in acked state. This has been fixed as well.
Signed-off-by: Dennis Potman <dennis.potman@adlinktech.com>
2019-12-18 16:22:31 +01:00
|
|
|
env: [ ARCH=x86_64, ASAN=none, BUILD_TYPE=Release, SSL=YES, LIFESPAN=YES, DEADLINE=YES, GENERATOR="Unix Makefiles" ]
|
2019-08-06 10:46:58 +02:00
|
|
|
- <<: *linux_gcc8
|
Deadline Missed QoS implementation
This commit contains the implementation of the deadline QoS
for readers and writers. The description of this QoS in
the DDS specification (section 2.2.3.7):
"This policy is useful for cases where a Topic is expected to
have each instance updated periodically. On the publishing side this
setting establishes a contract that the application must meet.
On the subscribing side the setting establishes a minimum
requirement for the remote publishers that are expected to supply
the data values."
On the writer side, the deadline missed event also needs to trigger in
case only local readers exist. The implementation for this inserts
the sample in the writer history cache temporary, so that an instance
is created in the whc. Immediately after inserting the sample, it is
removed again. With the creation of the instance, the deadline missed event
is created, which will take care of triggering the deadline missed
callback if required. In case the instance already existed, the timer
of the event is renewed.
To verify the changes to the writer history cache, add an additional
test to check the write history cache state. This test checks the state
of the whc after writing samples by a writer with specific combinations
of qos settings. The state of the whc is checked for stored
samples (min/max sequence number) and the absence of unacked data, after
writing samples and wait for acks by the local and/or remote
readers (which is also a parameter for this test). This test is
introduced as part of the deadline implementation, but its scope is
wider than only the changes that were made in the whc implementation for
the deadline qos.
This test showed that even before the deadline support was added,
whc_default_remove_acked_messages_full data was not marked as acked in
case of transient-local keep-all. This resulted in data in whc that
never gets in acked state. This has been fixed as well.
Signed-off-by: Dennis Potman <dennis.potman@adlinktech.com>
2019-12-18 16:22:31 +01:00
|
|
|
env: [ ARCH=x86_64, ASAN=none, BUILD_TYPE=Debug, SSL=NO, LIFESPAN=NO, DEADLINE=NO, GENERATOR="Unix Makefiles" ]
|
2019-01-31 18:09:49 +01:00
|
|
|
- <<: *linux_clang
|
Deadline Missed QoS implementation
This commit contains the implementation of the deadline QoS
for readers and writers. The description of this QoS in
the DDS specification (section 2.2.3.7):
"This policy is useful for cases where a Topic is expected to
have each instance updated periodically. On the publishing side this
setting establishes a contract that the application must meet.
On the subscribing side the setting establishes a minimum
requirement for the remote publishers that are expected to supply
the data values."
On the writer side, the deadline missed event also needs to trigger in
case only local readers exist. The implementation for this inserts
the sample in the writer history cache temporary, so that an instance
is created in the whc. Immediately after inserting the sample, it is
removed again. With the creation of the instance, the deadline missed event
is created, which will take care of triggering the deadline missed
callback if required. In case the instance already existed, the timer
of the event is renewed.
To verify the changes to the writer history cache, add an additional
test to check the write history cache state. This test checks the state
of the whc after writing samples by a writer with specific combinations
of qos settings. The state of the whc is checked for stored
samples (min/max sequence number) and the absence of unacked data, after
writing samples and wait for acks by the local and/or remote
readers (which is also a parameter for this test). This test is
introduced as part of the deadline implementation, but its scope is
wider than only the changes that were made in the whc implementation for
the deadline qos.
This test showed that even before the deadline support was added,
whc_default_remove_acked_messages_full data was not marked as acked in
case of transient-local keep-all. This resulted in data in whc that
never gets in acked state. This has been fixed as well.
Signed-off-by: Dennis Potman <dennis.potman@adlinktech.com>
2019-12-18 16:22:31 +01:00
|
|
|
env: [ ARCH=x86_64, ASAN=address, BUILD_TYPE=Debug, SSL=YES, LIFESPAN=YES, DEADLINE=YES, GENERATOR="Unix Makefiles" ]
|
2019-01-31 18:09:49 +01:00
|
|
|
- <<: *linux_clang
|
Deadline Missed QoS implementation
This commit contains the implementation of the deadline QoS
for readers and writers. The description of this QoS in
the DDS specification (section 2.2.3.7):
"This policy is useful for cases where a Topic is expected to
have each instance updated periodically. On the publishing side this
setting establishes a contract that the application must meet.
On the subscribing side the setting establishes a minimum
requirement for the remote publishers that are expected to supply
the data values."
On the writer side, the deadline missed event also needs to trigger in
case only local readers exist. The implementation for this inserts
the sample in the writer history cache temporary, so that an instance
is created in the whc. Immediately after inserting the sample, it is
removed again. With the creation of the instance, the deadline missed event
is created, which will take care of triggering the deadline missed
callback if required. In case the instance already existed, the timer
of the event is renewed.
To verify the changes to the writer history cache, add an additional
test to check the write history cache state. This test checks the state
of the whc after writing samples by a writer with specific combinations
of qos settings. The state of the whc is checked for stored
samples (min/max sequence number) and the absence of unacked data, after
writing samples and wait for acks by the local and/or remote
readers (which is also a parameter for this test). This test is
introduced as part of the deadline implementation, but its scope is
wider than only the changes that were made in the whc implementation for
the deadline qos.
This test showed that even before the deadline support was added,
whc_default_remove_acked_messages_full data was not marked as acked in
case of transient-local keep-all. This resulted in data in whc that
never gets in acked state. This has been fixed as well.
Signed-off-by: Dennis Potman <dennis.potman@adlinktech.com>
2019-12-18 16:22:31 +01:00
|
|
|
env: [ ARCH=x86_64, ASAN=none, BUILD_TYPE=Release, SSL=YES, LIFESPAN=YES, DEADLINE=YES, GENERATOR="Unix Makefiles" ]
|
2019-10-02 12:59:14 +02:00
|
|
|
- <<: *osx_xcode9
|
Deadline Missed QoS implementation
This commit contains the implementation of the deadline QoS
for readers and writers. The description of this QoS in
the DDS specification (section 2.2.3.7):
"This policy is useful for cases where a Topic is expected to
have each instance updated periodically. On the publishing side this
setting establishes a contract that the application must meet.
On the subscribing side the setting establishes a minimum
requirement for the remote publishers that are expected to supply
the data values."
On the writer side, the deadline missed event also needs to trigger in
case only local readers exist. The implementation for this inserts
the sample in the writer history cache temporary, so that an instance
is created in the whc. Immediately after inserting the sample, it is
removed again. With the creation of the instance, the deadline missed event
is created, which will take care of triggering the deadline missed
callback if required. In case the instance already existed, the timer
of the event is renewed.
To verify the changes to the writer history cache, add an additional
test to check the write history cache state. This test checks the state
of the whc after writing samples by a writer with specific combinations
of qos settings. The state of the whc is checked for stored
samples (min/max sequence number) and the absence of unacked data, after
writing samples and wait for acks by the local and/or remote
readers (which is also a parameter for this test). This test is
introduced as part of the deadline implementation, but its scope is
wider than only the changes that were made in the whc implementation for
the deadline qos.
This test showed that even before the deadline support was added,
whc_default_remove_acked_messages_full data was not marked as acked in
case of transient-local keep-all. This resulted in data in whc that
never gets in acked state. This has been fixed as well.
Signed-off-by: Dennis Potman <dennis.potman@adlinktech.com>
2019-12-18 16:22:31 +01:00
|
|
|
env: [ ARCH=x86_64, ASAN=none, BUILD_TYPE=Release, SSL=NO, LIFESPAN=YES, DEADLINE=YES, GENERATOR="Unix Makefiles" ]
|
2019-11-05 14:22:42 +01:00
|
|
|
if: type = cron
|
|
|
|
- <<: *osx_xcode
|
Deadline Missed QoS implementation
This commit contains the implementation of the deadline QoS
for readers and writers. The description of this QoS in
the DDS specification (section 2.2.3.7):
"This policy is useful for cases where a Topic is expected to
have each instance updated periodically. On the publishing side this
setting establishes a contract that the application must meet.
On the subscribing side the setting establishes a minimum
requirement for the remote publishers that are expected to supply
the data values."
On the writer side, the deadline missed event also needs to trigger in
case only local readers exist. The implementation for this inserts
the sample in the writer history cache temporary, so that an instance
is created in the whc. Immediately after inserting the sample, it is
removed again. With the creation of the instance, the deadline missed event
is created, which will take care of triggering the deadline missed
callback if required. In case the instance already existed, the timer
of the event is renewed.
To verify the changes to the writer history cache, add an additional
test to check the write history cache state. This test checks the state
of the whc after writing samples by a writer with specific combinations
of qos settings. The state of the whc is checked for stored
samples (min/max sequence number) and the absence of unacked data, after
writing samples and wait for acks by the local and/or remote
readers (which is also a parameter for this test). This test is
introduced as part of the deadline implementation, but its scope is
wider than only the changes that were made in the whc implementation for
the deadline qos.
This test showed that even before the deadline support was added,
whc_default_remove_acked_messages_full data was not marked as acked in
case of transient-local keep-all. This resulted in data in whc that
never gets in acked state. This has been fixed as well.
Signed-off-by: Dennis Potman <dennis.potman@adlinktech.com>
2019-12-18 16:22:31 +01:00
|
|
|
env: [ ARCH=x86_64, ASAN=none, BUILD_TYPE=Release, SSL=NO, LIFESPAN=YES, DEADLINE=YES, GENERATOR="Unix Makefiles", MACOSX_DEPLOYMENT_TARGET=10.12 ]
|
2019-10-31 08:08:39 +01:00
|
|
|
- <<: *osx_xcode
|
Deadline Missed QoS implementation
This commit contains the implementation of the deadline QoS
for readers and writers. The description of this QoS in
the DDS specification (section 2.2.3.7):
"This policy is useful for cases where a Topic is expected to
have each instance updated periodically. On the publishing side this
setting establishes a contract that the application must meet.
On the subscribing side the setting establishes a minimum
requirement for the remote publishers that are expected to supply
the data values."
On the writer side, the deadline missed event also needs to trigger in
case only local readers exist. The implementation for this inserts
the sample in the writer history cache temporary, so that an instance
is created in the whc. Immediately after inserting the sample, it is
removed again. With the creation of the instance, the deadline missed event
is created, which will take care of triggering the deadline missed
callback if required. In case the instance already existed, the timer
of the event is renewed.
To verify the changes to the writer history cache, add an additional
test to check the write history cache state. This test checks the state
of the whc after writing samples by a writer with specific combinations
of qos settings. The state of the whc is checked for stored
samples (min/max sequence number) and the absence of unacked data, after
writing samples and wait for acks by the local and/or remote
readers (which is also a parameter for this test). This test is
introduced as part of the deadline implementation, but its scope is
wider than only the changes that were made in the whc implementation for
the deadline qos.
This test showed that even before the deadline support was added,
whc_default_remove_acked_messages_full data was not marked as acked in
case of transient-local keep-all. This resulted in data in whc that
never gets in acked state. This has been fixed as well.
Signed-off-by: Dennis Potman <dennis.potman@adlinktech.com>
2019-12-18 16:22:31 +01:00
|
|
|
env: [ ARCH=x86_64, ASAN=address, BUILD_TYPE=Debug, SSL=YES, LIFESPAN=YES, DEADLINE=YES, GENERATOR="Unix Makefiles" ]
|
2019-10-31 08:08:39 +01:00
|
|
|
- <<: *osx_xcode
|
Deadline Missed QoS implementation
This commit contains the implementation of the deadline QoS
for readers and writers. The description of this QoS in
the DDS specification (section 2.2.3.7):
"This policy is useful for cases where a Topic is expected to
have each instance updated periodically. On the publishing side this
setting establishes a contract that the application must meet.
On the subscribing side the setting establishes a minimum
requirement for the remote publishers that are expected to supply
the data values."
On the writer side, the deadline missed event also needs to trigger in
case only local readers exist. The implementation for this inserts
the sample in the writer history cache temporary, so that an instance
is created in the whc. Immediately after inserting the sample, it is
removed again. With the creation of the instance, the deadline missed event
is created, which will take care of triggering the deadline missed
callback if required. In case the instance already existed, the timer
of the event is renewed.
To verify the changes to the writer history cache, add an additional
test to check the write history cache state. This test checks the state
of the whc after writing samples by a writer with specific combinations
of qos settings. The state of the whc is checked for stored
samples (min/max sequence number) and the absence of unacked data, after
writing samples and wait for acks by the local and/or remote
readers (which is also a parameter for this test). This test is
introduced as part of the deadline implementation, but its scope is
wider than only the changes that were made in the whc implementation for
the deadline qos.
This test showed that even before the deadline support was added,
whc_default_remove_acked_messages_full data was not marked as acked in
case of transient-local keep-all. This resulted in data in whc that
never gets in acked state. This has been fixed as well.
Signed-off-by: Dennis Potman <dennis.potman@adlinktech.com>
2019-12-18 16:22:31 +01:00
|
|
|
env: [ ARCH=x86_64, ASAN=none, BUILD_TYPE=Release, SSL=YES, LIFESPAN=YES, DEADLINE=YES, GENERATOR="Unix Makefiles" ]
|
2019-02-17 23:41:37 +01:00
|
|
|
- <<: *windows_vs2017
|
Deadline Missed QoS implementation
This commit contains the implementation of the deadline QoS
for readers and writers. The description of this QoS in
the DDS specification (section 2.2.3.7):
"This policy is useful for cases where a Topic is expected to
have each instance updated periodically. On the publishing side this
setting establishes a contract that the application must meet.
On the subscribing side the setting establishes a minimum
requirement for the remote publishers that are expected to supply
the data values."
On the writer side, the deadline missed event also needs to trigger in
case only local readers exist. The implementation for this inserts
the sample in the writer history cache temporary, so that an instance
is created in the whc. Immediately after inserting the sample, it is
removed again. With the creation of the instance, the deadline missed event
is created, which will take care of triggering the deadline missed
callback if required. In case the instance already existed, the timer
of the event is renewed.
To verify the changes to the writer history cache, add an additional
test to check the write history cache state. This test checks the state
of the whc after writing samples by a writer with specific combinations
of qos settings. The state of the whc is checked for stored
samples (min/max sequence number) and the absence of unacked data, after
writing samples and wait for acks by the local and/or remote
readers (which is also a parameter for this test). This test is
introduced as part of the deadline implementation, but its scope is
wider than only the changes that were made in the whc implementation for
the deadline qos.
This test showed that even before the deadline support was added,
whc_default_remove_acked_messages_full data was not marked as acked in
case of transient-local keep-all. This resulted in data in whc that
never gets in acked state. This has been fixed as well.
Signed-off-by: Dennis Potman <dennis.potman@adlinktech.com>
2019-12-18 16:22:31 +01:00
|
|
|
env: [ ARCH=x86, ASAN=none, BUILD_TYPE=Debug, SSL=YES, LIFESPAN=YES, DEADLINE=YES, GENERATOR="Visual Studio 15 2017" ]
|
2019-02-17 23:41:37 +01:00
|
|
|
- <<: *windows_vs2017
|
Deadline Missed QoS implementation
This commit contains the implementation of the deadline QoS
for readers and writers. The description of this QoS in
the DDS specification (section 2.2.3.7):
"This policy is useful for cases where a Topic is expected to
have each instance updated periodically. On the publishing side this
setting establishes a contract that the application must meet.
On the subscribing side the setting establishes a minimum
requirement for the remote publishers that are expected to supply
the data values."
On the writer side, the deadline missed event also needs to trigger in
case only local readers exist. The implementation for this inserts
the sample in the writer history cache temporary, so that an instance
is created in the whc. Immediately after inserting the sample, it is
removed again. With the creation of the instance, the deadline missed event
is created, which will take care of triggering the deadline missed
callback if required. In case the instance already existed, the timer
of the event is renewed.
To verify the changes to the writer history cache, add an additional
test to check the write history cache state. This test checks the state
of the whc after writing samples by a writer with specific combinations
of qos settings. The state of the whc is checked for stored
samples (min/max sequence number) and the absence of unacked data, after
writing samples and wait for acks by the local and/or remote
readers (which is also a parameter for this test). This test is
introduced as part of the deadline implementation, but its scope is
wider than only the changes that were made in the whc implementation for
the deadline qos.
This test showed that even before the deadline support was added,
whc_default_remove_acked_messages_full data was not marked as acked in
case of transient-local keep-all. This resulted in data in whc that
never gets in acked state. This has been fixed as well.
Signed-off-by: Dennis Potman <dennis.potman@adlinktech.com>
2019-12-18 16:22:31 +01:00
|
|
|
env: [ ARCH=x86_64, ASAN=none, BUILD_TYPE=Debug, SSL=YES, LIFESPAN=YES, DEADLINE=YES, GENERATOR="Visual Studio 15 2017 Win64" ]
|
2019-02-17 23:41:37 +01:00
|
|
|
- <<: *windows_vs2017
|
Deadline Missed QoS implementation
This commit contains the implementation of the deadline QoS
for readers and writers. The description of this QoS in
the DDS specification (section 2.2.3.7):
"This policy is useful for cases where a Topic is expected to
have each instance updated periodically. On the publishing side this
setting establishes a contract that the application must meet.
On the subscribing side the setting establishes a minimum
requirement for the remote publishers that are expected to supply
the data values."
On the writer side, the deadline missed event also needs to trigger in
case only local readers exist. The implementation for this inserts
the sample in the writer history cache temporary, so that an instance
is created in the whc. Immediately after inserting the sample, it is
removed again. With the creation of the instance, the deadline missed event
is created, which will take care of triggering the deadline missed
callback if required. In case the instance already existed, the timer
of the event is renewed.
To verify the changes to the writer history cache, add an additional
test to check the write history cache state. This test checks the state
of the whc after writing samples by a writer with specific combinations
of qos settings. The state of the whc is checked for stored
samples (min/max sequence number) and the absence of unacked data, after
writing samples and wait for acks by the local and/or remote
readers (which is also a parameter for this test). This test is
introduced as part of the deadline implementation, but its scope is
wider than only the changes that were made in the whc implementation for
the deadline qos.
This test showed that even before the deadline support was added,
whc_default_remove_acked_messages_full data was not marked as acked in
case of transient-local keep-all. This resulted in data in whc that
never gets in acked state. This has been fixed as well.
Signed-off-by: Dennis Potman <dennis.potman@adlinktech.com>
2019-12-18 16:22:31 +01:00
|
|
|
env: [ ARCH=x86_64, ASAN=none, BUILD_TYPE=Release, SSL=YES, LIFESPAN=YES, DEADLINE=YES, GENERATOR="Visual Studio 15 2017 Win64" ]
|
2018-08-05 22:30:52 +02:00
|
|
|
|
|
|
|
before_script:
|
2019-05-21 23:14:14 +02:00
|
|
|
- conan profile new default --detect
|
2018-08-05 22:30:52 +02:00
|
|
|
- conan remote add bincrafters https://api.bintray.com/conan/bincrafters/public-conan
|
|
|
|
|
2019-09-10 19:08:54 +02:00
|
|
|
# Notes on test settings:
|
|
|
|
# - CYCLONEDDS_URI:
|
|
|
|
# - EnableExpensiveChecks: for the few horrendously expensive (but pretty thorough)
|
|
|
|
# integrity checks, in particular on the WHC and the RHC, but there may be more
|
|
|
|
# - config to stderr: gives the configuration used when running the test in conjunction
|
|
|
|
# with "--output-on-failure" (sadly that still doesn't output the failed
|
|
|
|
# assertions ...)
|
|
|
|
# - -j 4: run 4 tests in parallel, this saves quite a bit of time because the VMs are
|
|
|
|
# all dual-core
|
|
|
|
# - --output-on-failed: print whatever output the test generated when it failed, which
|
|
|
|
# can obviously be quite helpful for debugging
|
|
|
|
# - -E ...: regex of tests to exclude:
|
|
|
|
# CUnit_ddsrt_random_default_random: performs a Chi-square test on the output of
|
|
|
|
# the random generator, but this does produce the odd failure (it should!). The
|
|
|
|
# code has been vetted, the test has been run a great many times (with the odd
|
|
|
|
# failure), and so we now simply skip the test to avoid the spurious failures.
|
2018-08-05 22:30:52 +02:00
|
|
|
script:
|
2019-11-17 21:27:45 +01:00
|
|
|
- INSTALLPREFIX="$(pwd)/install"
|
2018-08-05 22:30:52 +02:00
|
|
|
- mkdir build
|
|
|
|
- cd build
|
2019-02-17 23:41:37 +01:00
|
|
|
- conan install -b missing -s arch=${ARCH} -s build_type=${BUILD_TYPE} ..
|
|
|
|
- cmake -DCMAKE_BUILD_TYPE=${BUILD_TYPE}
|
2019-11-17 21:27:45 +01:00
|
|
|
-DCMAKE_INSTALL_PREFIX=${INSTALLPREFIX}
|
2019-05-21 23:14:14 +02:00
|
|
|
-DUSE_SANITIZER=${ASAN}
|
2019-08-06 10:46:58 +02:00
|
|
|
-DENABLE_SSL=${SSL}
|
2019-12-17 12:06:05 +01:00
|
|
|
-DENABLE_LIFESPAN=${LIFESPAN}
|
Deadline Missed QoS implementation
This commit contains the implementation of the deadline QoS
for readers and writers. The description of this QoS in
the DDS specification (section 2.2.3.7):
"This policy is useful for cases where a Topic is expected to
have each instance updated periodically. On the publishing side this
setting establishes a contract that the application must meet.
On the subscribing side the setting establishes a minimum
requirement for the remote publishers that are expected to supply
the data values."
On the writer side, the deadline missed event also needs to trigger in
case only local readers exist. The implementation for this inserts
the sample in the writer history cache temporary, so that an instance
is created in the whc. Immediately after inserting the sample, it is
removed again. With the creation of the instance, the deadline missed event
is created, which will take care of triggering the deadline missed
callback if required. In case the instance already existed, the timer
of the event is renewed.
To verify the changes to the writer history cache, add an additional
test to check the write history cache state. This test checks the state
of the whc after writing samples by a writer with specific combinations
of qos settings. The state of the whc is checked for stored
samples (min/max sequence number) and the absence of unacked data, after
writing samples and wait for acks by the local and/or remote
readers (which is also a parameter for this test). This test is
introduced as part of the deadline implementation, but its scope is
wider than only the changes that were made in the whc implementation for
the deadline qos.
This test showed that even before the deadline support was added,
whc_default_remove_acked_messages_full data was not marked as acked in
case of transient-local keep-all. This resulted in data in whc that
never gets in acked state. This has been fixed as well.
Signed-off-by: Dennis Potman <dennis.potman@adlinktech.com>
2019-12-18 16:22:31 +01:00
|
|
|
-DENABLE_DEADLINE_MISSED=${DEADLINE}
|
2019-02-17 23:41:37 +01:00
|
|
|
-DBUILD_TESTING=on
|
2019-06-05 12:13:10 +02:00
|
|
|
-DWERROR=on
|
2019-07-26 09:43:53 +02:00
|
|
|
-G "${GENERATOR}" ..
|
2019-08-05 13:22:49 +02:00
|
|
|
- case "${GENERATOR}" in
|
|
|
|
"Unix Makefiles")
|
|
|
|
${SCAN_BUILD} cmake --build . --config ${BUILD_TYPE} --target install -- -j 4
|
|
|
|
;;
|
|
|
|
"Visual Studio "*)
|
|
|
|
${SCAN_BUILD} cmake --build . --config ${BUILD_TYPE} --target install -- -nologo -verbosity:minimal -maxcpucount -p:CL_MPCount=2
|
|
|
|
;;
|
|
|
|
*)
|
|
|
|
${SCAN_BUILD} cmake --build . --config ${BUILD_TYPE} --target install
|
|
|
|
;;
|
|
|
|
esac
|
2020-01-15 12:50:01 +01:00
|
|
|
- CYCLONEDDS_URI='<CycloneDDS><Domain><Internal><EnableExpensiveChecks>all</EnableExpensiveChecks><LivelinessMonitoring>true</LivelinessMonitoring></Internal><Tracing><Verbosity>config</Verbosity><OutputFile>stderr</OutputFile></Tracing></Domain></CycloneDDS>' ctest -j 4 --output-on-failure -T test -E '^CUnit_ddsrt_random_default_random$' -C ${BUILD_TYPE}
|
2019-05-21 23:14:14 +02:00
|
|
|
- if [ "${ASAN}" != "none" ]; then
|
2019-02-17 23:41:37 +01:00
|
|
|
CMAKE_LINKER_FLAGS="-DCMAKE_LINKER_FLAGS=-fsanitize=${USE_SANITIZER}";
|
|
|
|
CMAKE_C_FLAGS="-DCMAKE_C_FLAGS=-fsanitize=${USE_SANITIZER}";
|
2019-01-18 14:19:22 +01:00
|
|
|
fi
|
2019-11-17 21:27:45 +01:00
|
|
|
- cd ..
|
|
|
|
- mkdir helloworld_build
|
|
|
|
- cd helloworld_build
|
|
|
|
- cmake -DCMAKE_PREFIX_PATH=${INSTALLPREFIX}
|
|
|
|
-DCMAKE_BUILD_TYPE=${BUILD_TYPE}
|
2019-02-17 23:41:37 +01:00
|
|
|
${CMAKE_C_FLAGS}
|
|
|
|
${CMAKE_LINKER_FLAGS}
|
2019-11-17 21:27:45 +01:00
|
|
|
-G "${GENERATOR}"
|
|
|
|
${INSTALLPREFIX}/share/CycloneDDS/examples/helloworld
|
2019-02-17 23:41:37 +01:00
|
|
|
- cmake --build . --config ${BUILD_TYPE}
|
2019-05-21 23:14:14 +02:00
|
|
|
- cd "${TRAVIS_BUILD_DIR}/build"
|
|
|
|
|
2019-08-27 18:23:33 +02:00
|
|
|
after_success:
|
|
|
|
- *submit_to_coverity_scan
|
2019-02-17 23:41:37 +01:00
|
|
|
|