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>
This commit is contained in:
parent
219cb6cf4f
commit
231cb8c9f7
21 changed files with 1417 additions and 187 deletions
27
.travis.yml
27
.travis.yml
|
@ -142,33 +142,33 @@ windows_vs2017: &windows_vs2017
|
|||
jobs:
|
||||
include:
|
||||
- <<: *linux_gcc8
|
||||
env: [ ARCH=x86_64, ASAN=none, BUILD_TYPE=Debug, SSL=YES, LIFESPAN=YES, GENERATOR="Unix Makefiles", COVERITY_SCAN=true ]
|
||||
env: [ ARCH=x86_64, ASAN=none, BUILD_TYPE=Debug, SSL=YES, LIFESPAN=YES, DEADLINE=YES, GENERATOR="Unix Makefiles", COVERITY_SCAN=true ]
|
||||
if: type = cron
|
||||
- <<: *linux_gcc8
|
||||
env: [ ARCH=x86_64, ASAN=none, BUILD_TYPE=Debug, SSL=YES, LIFESPAN=YES, GENERATOR="Unix Makefiles" ]
|
||||
env: [ ARCH=x86_64, ASAN=none, BUILD_TYPE=Debug, SSL=YES, LIFESPAN=YES, DEADLINE=YES, GENERATOR="Unix Makefiles" ]
|
||||
- <<: *linux_gcc8
|
||||
env: [ ARCH=x86_64, ASAN=none, BUILD_TYPE=Release, SSL=YES, LIFESPAN=YES, GENERATOR="Unix Makefiles" ]
|
||||
env: [ ARCH=x86_64, ASAN=none, BUILD_TYPE=Release, SSL=YES, LIFESPAN=YES, DEADLINE=YES, GENERATOR="Unix Makefiles" ]
|
||||
- <<: *linux_gcc8
|
||||
env: [ ARCH=x86_64, ASAN=none, BUILD_TYPE=Debug, SSL=NO, LIFESPAN=NO, GENERATOR="Unix Makefiles" ]
|
||||
env: [ ARCH=x86_64, ASAN=none, BUILD_TYPE=Debug, SSL=NO, LIFESPAN=NO, DEADLINE=NO, GENERATOR="Unix Makefiles" ]
|
||||
- <<: *linux_clang
|
||||
env: [ ARCH=x86_64, ASAN=address, BUILD_TYPE=Debug, SSL=YES, LIFESPAN=YES, GENERATOR="Unix Makefiles" ]
|
||||
env: [ ARCH=x86_64, ASAN=address, BUILD_TYPE=Debug, SSL=YES, LIFESPAN=YES, DEADLINE=YES, GENERATOR="Unix Makefiles" ]
|
||||
- <<: *linux_clang
|
||||
env: [ ARCH=x86_64, ASAN=none, BUILD_TYPE=Release, SSL=YES, LIFESPAN=YES, GENERATOR="Unix Makefiles" ]
|
||||
env: [ ARCH=x86_64, ASAN=none, BUILD_TYPE=Release, SSL=YES, LIFESPAN=YES, DEADLINE=YES, GENERATOR="Unix Makefiles" ]
|
||||
- <<: *osx_xcode9
|
||||
env: [ ARCH=x86_64, ASAN=none, BUILD_TYPE=Release, SSL=NO, LIFESPAN=YES, GENERATOR="Unix Makefiles" ]
|
||||
env: [ ARCH=x86_64, ASAN=none, BUILD_TYPE=Release, SSL=NO, LIFESPAN=YES, DEADLINE=YES, GENERATOR="Unix Makefiles" ]
|
||||
if: type = cron
|
||||
- <<: *osx_xcode
|
||||
env: [ ARCH=x86_64, ASAN=none, BUILD_TYPE=Release, SSL=NO, LIFESPAN=YES, GENERATOR="Unix Makefiles", MACOSX_DEPLOYMENT_TARGET=10.12 ]
|
||||
env: [ ARCH=x86_64, ASAN=none, BUILD_TYPE=Release, SSL=NO, LIFESPAN=YES, DEADLINE=YES, GENERATOR="Unix Makefiles", MACOSX_DEPLOYMENT_TARGET=10.12 ]
|
||||
- <<: *osx_xcode
|
||||
env: [ ARCH=x86_64, ASAN=address, BUILD_TYPE=Debug, SSL=YES, LIFESPAN=YES, GENERATOR="Unix Makefiles" ]
|
||||
env: [ ARCH=x86_64, ASAN=address, BUILD_TYPE=Debug, SSL=YES, LIFESPAN=YES, DEADLINE=YES, GENERATOR="Unix Makefiles" ]
|
||||
- <<: *osx_xcode
|
||||
env: [ ARCH=x86_64, ASAN=none, BUILD_TYPE=Release, SSL=YES, LIFESPAN=YES, GENERATOR="Unix Makefiles" ]
|
||||
env: [ ARCH=x86_64, ASAN=none, BUILD_TYPE=Release, SSL=YES, LIFESPAN=YES, DEADLINE=YES, GENERATOR="Unix Makefiles" ]
|
||||
- <<: *windows_vs2017
|
||||
env: [ ARCH=x86, ASAN=none, BUILD_TYPE=Debug, SSL=YES, LIFESPAN=YES, GENERATOR="Visual Studio 15 2017" ]
|
||||
env: [ ARCH=x86, ASAN=none, BUILD_TYPE=Debug, SSL=YES, LIFESPAN=YES, DEADLINE=YES, GENERATOR="Visual Studio 15 2017" ]
|
||||
- <<: *windows_vs2017
|
||||
env: [ ARCH=x86_64, ASAN=none, BUILD_TYPE=Debug, SSL=YES, LIFESPAN=YES, GENERATOR="Visual Studio 15 2017 Win64" ]
|
||||
env: [ ARCH=x86_64, ASAN=none, BUILD_TYPE=Debug, SSL=YES, LIFESPAN=YES, DEADLINE=YES, GENERATOR="Visual Studio 15 2017 Win64" ]
|
||||
- <<: *windows_vs2017
|
||||
env: [ ARCH=x86_64, ASAN=none, BUILD_TYPE=Release, SSL=YES, LIFESPAN=YES, GENERATOR="Visual Studio 15 2017 Win64" ]
|
||||
env: [ ARCH=x86_64, ASAN=none, BUILD_TYPE=Release, SSL=YES, LIFESPAN=YES, DEADLINE=YES, GENERATOR="Visual Studio 15 2017 Win64" ]
|
||||
|
||||
before_script:
|
||||
- conan profile new default --detect
|
||||
|
@ -200,6 +200,7 @@ script:
|
|||
-DUSE_SANITIZER=${ASAN}
|
||||
-DENABLE_SSL=${SSL}
|
||||
-DENABLE_LIFESPAN=${LIFESPAN}
|
||||
-DENABLE_DEADLINE_MISSED=${DEADLINE}
|
||||
-DBUILD_TESTING=on
|
||||
-DWERROR=on
|
||||
-G "${GENERATOR}" ..
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue