Skip to content

Commit

Permalink
7 ➡️ 8 (#155)
Browse files Browse the repository at this point in the history
* Remove warnings using ZMQ 4.3.1 or greater.
* Do not use ZMQ_CPP11
* Win debugging.
* backport improved compiler support for std::filesystem
* Close branch backport_compiler_filesystem
* Restore original Playback::Start and add overload with new parameter to fix ABI
* bump to 7.2.2 and update changelog

* Close branch fix_abi_7

* Write to disk from a background thread in log recorder

* Update Changelog

* Move `dataWriterState = true` to Recorder::Implementation::DataWriterThread() thread.

* Revert moving dataWriterState

* Failing test with incorrect time stamps

* Correctly record message reception time stamp

* Reorder functions

* Specify buffer size in MB rather than number of elements in the data queue

* Flush any remaining data to log file when stopping the Recorder

* Codecheck. The rvalue ref is used to ensure that std::vector is always moved

* Version update

* Added tag ignition-transport7_7.3.0~pre1 for changeset 173fae6c362d

* recorder.cc: include <optional>

* Add console message to indicate buffer being flushed

* Add <numeric>

* Close branch async_recorder

* Prepare for 7.3.0

* Added tag ignition-transport7_7.3.0 for changeset 367d4f1bfcf7

* Configurable buffer sizes.

* Fix typo.

* Changelog.

* Clarify high water mark policy.

* Tweak documentation and error messages.

* Close branch issue_116_transport7

* fix line lengths

* Close branch codecheck7

* Update default values for the high water marks

* Update buffer default values

* Changelog.md edited online with Bitbucket

* Close branch default_hwm

* Adding connection message.

* ConnectionMsg implementation.

* Test

* No control socket.

* Preserve ABI.

* Discard registrations when needed.

* Tweaks.

* Changelog

* Fix issue #114.

* Close branch discovery_extended_p2

* 7.4.0

* Move changelog entry

* Close branch ign-transport7-4

* Added tag ignition-transport7_7.4.0 for changeset 083e7bf41080

* Protobuf warnings

* Close branch proto_deprecations

* Close branch issue_111

* Windows warnings

* revert commit to release branch

* Fix version for send_falgs command

* Close branch ign-transport7_fix_send_flags

* Backport pull request #441

* updates

* Added another check

* Close branch issue_118

* mv hgignore

Signed-off-by: claireyywang <[email protected]>

* add gitignore

Signed-off-by: claireyywang <[email protected]>

* [ign-transport7] Update BitBucket links (#123)

* [ign-transport7] Update BitBucket links

Signed-off-by: Louise Poubel <[email protected]>

* changelog pull-requests

* Apply suggestions from code review

* Update tutorials/07_relay.md

Co-authored-by: Marya Belanger <[email protected]>

* [ign-transport7] Workflow updates (#132)

* [ign-transport7] Workflow updates

Signed-off-by: Louise Poubel <[email protected]>

* Helper function to get a valid topic name (#153)

Signed-off-by: Louise Poubel <[email protected]>

* Remove Windows warnings (#151)

Signed-off-by: Carlos Aguero <[email protected]>

* Remove warnings on Homebrew (#150)

Signed-off-by: Carlos Aguero <[email protected]>
Co-authored-by: Louise Poubel <[email protected]>

* Bump to 7.5.0 (#156)

Signed-off-by: Louise Poubel <[email protected]>

* Modernize actions CI (#158)

Signed-off-by: Louise Poubel <[email protected]>

* remove ci-bionic

Signed-off-by: Louise Poubel <[email protected]>

* add focal

Signed-off-by: Louise Poubel <[email protected]>

* msgs5

Signed-off-by: Louise Poubel <[email protected]>

* Suppress focal-specific warnings (#159)

* Suppress focal-specific warnings

Signed-off-by: Michael Carroll <[email protected]>

* Warn when lsb_release isn't present

Signed-off-by: Michael Carroll <[email protected]>

* Adding header guard.

Signed-off-by: Carlos Agüero <[email protected]>

* Include correct header file for version check

Signed-off-by: Michael Carroll <[email protected]>

* Added more debug output

Signed-off-by: Nate Koenig <[email protected]>

* Fix focal test and codecheck

Signed-off-by: Nate Koenig <[email protected]>

* Change endtime expectation

Signed-off-by: Carlos Agüero <[email protected]>

Co-authored-by: Carlos Agüero <[email protected]>
Co-authored-by: Nate Koenig <[email protected]>

Co-authored-by: Carlos Aguero <[email protected]>
Co-authored-by: Steve Peters <[email protected]>
Co-authored-by: Steve Peters <[email protected]>
Co-authored-by: Carlos Agüero <[email protected]>
Co-authored-by: Addisu Z. Taddese <[email protected]>
Co-authored-by: Nate Koenig <[email protected]>
Co-authored-by: Carlos Aguero <[email protected]>
Co-authored-by: Jose Luis Rivero <[email protected]>
Co-authored-by: claireyywang <[email protected]>
Co-authored-by: Marya Belanger <[email protected]>
Co-authored-by: Michael Carroll <[email protected]>
Co-authored-by: Nate Koenig <[email protected]>
  • Loading branch information
13 people authored Aug 28, 2020
1 parent d4420b8 commit d826963
Show file tree
Hide file tree
Showing 14 changed files with 174 additions and 31 deletions.
11 changes: 11 additions & 0 deletions .github/ci/packages.apt
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
libignition-cmake2-dev
libignition-math6-dev
libignition-msgs5-dev
libignition-tools-dev
libprotobuf-dev
libprotoc-dev
libsqlite3-dev
libzmq3-dev
pkg-config
protobuf-compiler
uuid-dev
17 changes: 0 additions & 17 deletions .github/workflows/ci-bionic.yml

This file was deleted.

27 changes: 27 additions & 0 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,27 @@
name: Ubuntu CI

on: [push]

jobs:
bionic-ci:
runs-on: ubuntu-latest
name: Ubuntu Bionic CI
steps:
- name: Checkout
uses: actions/checkout@v2
- name: Compile and test
id: ci
uses: ignition-tooling/action-ignition-ci@master
with:
codecov-token: ${{ secrets.CODECOV_TOKEN }}
focal-ci:
runs-on: ubuntu-latest
name: Ubuntu Focal CI
steps:
- name: Checkout
uses: actions/checkout@v2
- name: Compile and test
id: ci
uses: ignition-tooling/action-ignition-ci@focal
with:
codecov-token: ${{ secrets.CODECOV_TOKEN }}
14 changes: 14 additions & 0 deletions CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -46,6 +46,20 @@ ign_find_package(IgnProtobuf
# Find ZeroMQ
ign_find_package(ZeroMQ VERSION 4 REQUIRED PRIVATE)

if (UNIX AND NOT APPLE)
execute_process(COMMAND lsb_release -cs
OUTPUT_VARIABLE RELEASE_CODENAME
RESULT_VARIABLE LSB_RESULT
OUTPUT_STRIP_TRAILING_WHITESPACE
)

if( NOT (${LSB_RESULT} STREQUAL "0"))
message(WARNING "lsb_release executable not found. Disabling focal-specific workarounds")
elseif (${RELEASE_CODENAME} STREQUAL "focal")
set(UBUNTU_FOCAL 1)
endif()
endif()

#--------------------------------------
# Find cppzmq
ign_find_package(CPPZMQ REQUIRED PRIVATE
Expand Down
17 changes: 17 additions & 0 deletions Changelog.md
Original file line number Diff line number Diff line change
Expand Up @@ -44,6 +44,23 @@

### Ignition Transport 7.x.x (202x-xx-xx)

### Ignition Transport 7.5.0 (2020-07-29)

1. Helper function to get a valid topic name
* [Pull request 153](https://github.com/ignitionrobotics/ign-transport/pull/153)

1. GitHub migration
* [Pull request 132](https://github.com/ignitionrobotics/ign-transport/pull/132)
* [Pull request 123](https://github.com/ignitionrobotics/ign-transport/pull/123)
* [Pull request 126](https://github.com/ignitionrobotics/ign-transport/pull/126)

1. Fix ZMQ and Protobuf warnings
* [BitBucket pull request 442](https://osrf-migration.github.io/ignition-gh-pages/#!/ignitionrobotics/ign-transport/pull-requests/442)
* [BitBucket pull request 438](https://osrf-migration.github.io/ignition-gh-pages/#!/ignitionrobotics/ign-transport/pull-requests/438)
* [BitBucket pull request 439](https://osrf-migration.github.io/ignition-gh-pages/#!/ignitionrobotics/ign-transport/pull-requests/439)
* [Pull request 150](https://github.com/ignitionrobotics/ign-transport/pull/150)
* [Pull request 151](https://github.com/ignitionrobotics/ign-transport/pull/151)

1. Handle `getpwduid_r` error cases. This addresses issue #118. Solution was
created in pull request #441 by Poh Zhi-Ee.
* [BitBucket pull request 444](https://osrf-migration.github.io/ignition-gh-pages/#!/ignitionrobotics/ign-transport/pull-requests/444)
Expand Down
13 changes: 9 additions & 4 deletions include/ignition/transport/Helpers.hh
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,7 @@
#ifndef IGN_TRANSPORT_HELPERS_HH_
#define IGN_TRANSPORT_HELPERS_HH_

#include <zmq.h>
#include <zmq.hpp>

#include <cstdint>
#include <cstdio>
Expand All @@ -30,14 +30,19 @@
#include "ignition/transport/config.hh"
#include "ignition/transport/Export.hh"

#define STR_HELPER(x) #x
#define STR(x) STR_HELPER(x)

// Avoid using deprecated message send/receive function when possible.
#if ZMQ_VERSION >= ZMQ_MAKE_VERSION(4, 3, 1)
#define IGN_ZMQ_POST_4_3_1
#endif

// Avoid using deprecated set function when possible
#if CPPZMQ_VERSION >= ZMQ_MAKE_VERSION(4, 7, 0)
// Ubuntu Focal (20.04) packages a different "4.7.0"
#ifndef UBUNTU_FOCAL
#define IGN_CPPZMQ_POST_4_7_0
#endif
#endif

namespace ignition
{
namespace transport
Expand Down
8 changes: 8 additions & 0 deletions include/ignition/transport/TopicUtils.hh
Original file line number Diff line number Diff line change
Expand Up @@ -128,6 +128,14 @@ namespace ignition
std::string &_partition,
std::string &_namespaceAndTopic);

/// \brief Convert a topic name to a valid topic. The input topic is
/// modified by:
/// * turning white space into `_`.
/// * removing special characters and combinations.
/// \param[in] _topic Input topic, which may be invalid.
/// \return A valid topic, or empty string if not possible to convert.
public: static std::string AsValidTopic(const std::string &_topic);

/// \brief The kMaxNameLength specifies the maximum number of characters
/// allowed in a namespace, a partition name, a topic name, and a fully
/// qualified topic name.
Expand Down
6 changes: 6 additions & 0 deletions include/ignition/transport/config.hh.in
Original file line number Diff line number Diff line change
@@ -1,5 +1,8 @@
/* Config.hh. Generated by CMake for @PROJECT_NAME@. */

#ifndef IGNITION_${IGN_DESIGNATION_UPPER}_CONFIG_HH_
#define IGNITION_${IGN_DESIGNATION_UPPER}_CONFIG_HH_

/* Version number */
#define IGNITION_TRANSPORT_MAJOR_VERSION ${PROJECT_VERSION_MAJOR}
#define IGNITION_TRANSPORT_MINOR_VERSION ${PROJECT_VERSION_MINOR}
Expand All @@ -17,3 +20,6 @@
#cmakedefine BUILD_TYPE_RELEASE 1

#cmakedefine HAVE_IFADDRS 1
#cmakedefine UBUNTU_FOCAL 1

#endif
3 changes: 2 additions & 1 deletion log/src/Log_TEST.cc
Original file line number Diff line number Diff line change
Expand Up @@ -255,7 +255,8 @@ TEST(Log, OpenCorruptDatabase)
testing::portablePathUnion(IGN_TRANSPORT_LOG_TEST_PATH, "data");
path = testing::portablePathUnion(path, "state.tlog");
logFile.Open(path);
EXPECT_EQ(4806000000ns, logFile.EndTime());
EXPECT_GT(logFile.EndTime(), 0ns) << "logFile.EndTime() == "
<< logFile.EndTime().count() << "ns";;
}


Expand Down
2 changes: 2 additions & 0 deletions src/CIface_TEST.cc
Original file line number Diff line number Diff line change
Expand Up @@ -77,6 +77,7 @@ TEST(CIfaceTest, PubSub)
ignition::msgs::StringMsg msg;
msg.set_data("HELLO");

// Get the size of the serialized message
#if GOOGLE_PROTOBUF_VERSION >= 3004000
int size = msg.ByteSizeLong();
#else
Expand Down Expand Up @@ -132,6 +133,7 @@ TEST(CIfaceTest, PubSubPartitions)
ignition::msgs::StringMsg msg;
msg.set_data("HELLO");

// Get the size of the serialized message
#if GOOGLE_PROTOBUF_VERSION >= 3004000
int size = msg.ByteSizeLong();
#else
Expand Down
2 changes: 1 addition & 1 deletion src/Node.cc
Original file line number Diff line number Diff line change
Expand Up @@ -619,7 +619,7 @@ bool Node::Unsubscribe(const std::string &_topic)
if (!this->dataPtr->shared->localSubscribers
.HasSubscriber(fullyQualifiedTopic))
{
#if (CPPZMQ_VERSION >= 40700)
#ifdef IGN_CPPZMQ_POST_4_7_0
this->dataPtr->shared->dataPtr->subscriber->set(
zmq::sockopt::unsubscribe, fullyQualifiedTopic);
#else
Expand Down
16 changes: 8 additions & 8 deletions src/NodeShared.cc
Original file line number Diff line number Diff line change
Expand Up @@ -1068,7 +1068,7 @@ void NodeShared::OnNewConnection(const MessagePublisher &_pub)
this->dataPtr->subscriber->connect(addr.c_str());

// Add a new filter for the topic.
#if (CPPZMQ_VERSION >= 40700)
#ifdef IGN_CPPZMQ_POST_4_7_0
this->dataPtr->subscriber->set(zmq::sockopt::subscribe, topic);
#else
this->dataPtr->subscriber->setsockopt(ZMQ_SUBSCRIBE,
Expand Down Expand Up @@ -1263,7 +1263,7 @@ bool NodeShared::InitializeSockets()


int lingerVal = 0;
#if (CPPZMQ_VERSION >= 40700)
#ifdef IGN_CPPZMQ_POST_4_7_0
this->dataPtr->publisher->set(zmq::sockopt::linger, lingerVal);
#else
this->dataPtr->publisher->setsockopt(ZMQ_LINGER,
Expand Down Expand Up @@ -1301,7 +1301,7 @@ bool NodeShared::InitializeSockets()
<< std::endl;
}
}
#if (CPPZMQ_VERSION >= 40700)
#ifdef IGN_CPPZMQ_POST_4_7_0
this->dataPtr->subscriber->set(zmq::sockopt::rcvhwm, rcvQueueVal);
#else
this->dataPtr->subscriber->setsockopt(ZMQ_RCVHWM,
Expand Down Expand Up @@ -1339,7 +1339,7 @@ bool NodeShared::InitializeSockets()
<< std::endl;
}
}
#if (CPPZMQ_VERSION >= 40700)
#ifdef IGN_CPPZMQ_POST_4_7_0
this->dataPtr->publisher->set(zmq::sockopt::sndhwm, sndQueueVal);

this->dataPtr->publisher->bind(anyTcpEp.c_str());
Expand Down Expand Up @@ -1439,7 +1439,7 @@ int NodeShared::RcvHwm()
int rcvHwm;
try
{
#if (CPPZMQ_VERSION >= 40700)
#ifdef IGN_CPPZMQ_POST_4_7_0
rcvHwm = this->dataPtr->subscriber->get(zmq::sockopt::rcvhwm);
#else
size_t rcvHwmSize = sizeof(rcvHwm);
Expand All @@ -1460,7 +1460,7 @@ int NodeShared::SndHwm()
int sndHwm;
try
{
#if (CPPZMQ_VERSION >= 40700)
#ifdef IGN_CPPZMQ_POST_4_7_0
sndHwm = this->dataPtr->publisher->get(zmq::sockopt::sndhwm);
#else
size_t sndHwmSize = sizeof(sndHwm);
Expand Down Expand Up @@ -1561,7 +1561,7 @@ void NodeSharedPrivate::SecurityOnNewConnection()
// See issue #74
if (userPass(user, pass))
{
#if (CPPZMQ_VERSION >= 40700)
#ifdef IGN_CPPZMQ_POST_4_7_0
this->subscriber->set(zmq::sockopt::plain_username, user);
this->subscriber->set(zmq::sockopt::plain_password, pass);
#else
Expand All @@ -1586,7 +1586,7 @@ void NodeSharedPrivate::SecurityInit()
int asPlainSecurityServer = static_cast<int>(
ZmqPlainSecurityServerOptions::ZMQ_PLAIN_SECURITY_SERVER_ENABLED);

#if (CPPZMQ_VERSION >= 40700)
#ifdef IGN_CPPZMQ_POST_4_7_0
this->publisher->set(zmq::sockopt::plain_server, asPlainSecurityServer);
this->publisher->set(zmq::sockopt::zap_domain, kIgnAuthDomain);
#else
Expand Down
20 changes: 20 additions & 0 deletions src/TopicUtils.cc
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,7 @@
*
*/

#include <regex>
#include <string>

#include "ignition/transport/TopicUtils.hh"
Expand Down Expand Up @@ -154,3 +155,22 @@ bool TopicUtils::DecomposeFullyQualifiedTopic(
_namespaceAndTopic = possibleTopic;
return true;
}

//////////////////////////////////////////////////
std::string TopicUtils::AsValidTopic(const std::string &_topic)
{
std::string validTopic{_topic};

// Substitute spaces with _
validTopic = std::regex_replace(validTopic, std::regex(" "), "_");

// Remove special characters and combinations
validTopic = std::regex_replace(validTopic, std::regex("@|~|//|:="), "");

if (!IsValidTopic(validTopic))
{
return std::string();
}

return validTopic;
}
49 changes: 49 additions & 0 deletions src/TopicUtils_TEST.cc
Original file line number Diff line number Diff line change
Expand Up @@ -242,6 +242,55 @@ TEST(TopicUtilsTest, testFullyQualifiedName)
}
}

//////////////////////////////////////////////////
TEST(TopicUtilsTest, asValidTopic)
{
for (auto unmodified :
{
"/abc",
"abc/de",
"a",
"ABC/",
"/abc",
"/abc/d",
"/abc/d/e",
"a(bc)d-e_f=h+i.j"
})
{
auto valid = transport::TopicUtils::AsValidTopic(unmodified);
EXPECT_EQ(unmodified, valid);
EXPECT_TRUE(transport::TopicUtils::IsValidTopic(valid)) << valid;
}

std::vector<std::pair<std::string, std::string>> modifiedStrings =
{
{"a b c", "a_b__c"},
{"a@b@c", "abc"},
{"a:=b:=c", "abc"},
{"a//b/c", "ab/c"},
{"a~b~c", "abc"}
};

for (auto modified : modifiedStrings)
{
auto valid = transport::TopicUtils::AsValidTopic(modified.first);
EXPECT_EQ(modified.second, valid);
EXPECT_TRUE(transport::TopicUtils::IsValidTopic(valid)) << valid;
}

for (auto fail :
{
"",
"@@@",
"~@~",
})
{
auto empty = transport::TopicUtils::AsValidTopic(fail);
EXPECT_TRUE(empty.empty());
EXPECT_FALSE(transport::TopicUtils::IsValidTopic(empty));
}
}

//////////////////////////////////////////////////
int main(int argc, char **argv)
{
Expand Down

0 comments on commit d826963

Please sign in to comment.