Skip to content

Commit 83b467b

Browse files
authored
Fixes in the rosbag2_performance_benchmarking message data generator (#2078)
* Fixes in performance benchmarking msg_utils::helpers::generate_data - Clear data before generating a new data - Correctly calculate the size need for the payload Signed-off-by: Michael Orlov <[email protected]> * Bugfix: Don't override process env variable with 'PYTHONUNBUFFERED=1' - In previous implementation the process environment variable was override with the 'PYTHONUNBUFFERED=1' value. Signed-off-by: Michael Orlov <[email protected]> --------- Signed-off-by: Michael Orlov <[email protected]>
1 parent 6d8b963 commit 83b467b

File tree

2 files changed

+12
-10
lines changed

2 files changed

+12
-10
lines changed

rosbag2_performance/rosbag2_performance_benchmarking/src/msg_utils/helpers.cpp

Lines changed: 11 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,7 @@ namespace helpers
2222
{
2323
void generate_data(rosbag2_performance_benchmarking_msgs::msg::ByteArray & array, size_t size)
2424
{
25+
array.data.clear();
2526
array.data.reserve(size);
2627
for (auto i = 0u; i < size; ++i) {
2728
array.data.emplace_back(std::rand() % 255);
@@ -30,18 +31,22 @@ void generate_data(rosbag2_performance_benchmarking_msgs::msg::ByteArray & array
3031

3132
void generate_data(sensor_msgs::msg::Image & msg, size_t size)
3233
{
33-
// TODO(carlossvg): calculate message base size to set total size
34-
msg.data.reserve(size);
35-
for (auto i = 0u; i < size; ++i) {
34+
msg.data.clear();
35+
auto msg_type_size = sizeof(msg);
36+
auto data_size = (size > msg_type_size) ? size - msg_type_size : 0;
37+
msg.data.reserve(data_size);
38+
for (auto i = 0u; i < data_size; ++i) {
3639
msg.data.emplace_back(std::rand() % 255);
3740
}
3841
}
3942

4043
void generate_data(sensor_msgs::msg::PointCloud2 & msg, size_t size)
4144
{
42-
// TODO(carlossvg): calculate message base size to set total size
43-
msg.data.reserve(size);
44-
for (auto i = 0u; i < size; ++i) {
45+
msg.data.clear();
46+
auto msg_type_size = sizeof(msg);
47+
auto data_size = (size > msg_type_size) ? size - msg_type_size : 0;
48+
msg.data.reserve(data_size);
49+
for (auto i = 0u; i < data_size; ++i) {
4550
msg.data.emplace_back(std::rand() % 255);
4651
}
4752
}

rosbag2_performance/rosbag2_performance_benchmarking/test/benchmark_test.py

Lines changed: 1 addition & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -332,9 +332,6 @@ def set_expectations(self, benchmark, producer, expectation):
332332

333333

334334
def generate_test_description():
335-
proc_env = os.environ.copy()
336-
proc_env['PYTHONUNBUFFERED'] = '1'
337-
338335
config_path = os.path.join(
339336
ament_index_python.get_package_share_directory('rosbag2_performance_benchmarking'),
340337
'config'
@@ -375,7 +372,7 @@ def generate_test_description():
375372
process = launch.actions.ExecuteProcess(
376373
cmd=['ros2', 'launch', 'rosbag2_performance_benchmarking',
377374
'benchmark_launch.py'] + args,
378-
env=proc_env,
375+
additional_env={'PYTHONUNBUFFERED': '1'},
379376
output='screen'
380377
)
381378
benchmark_processes.append(process)

0 commit comments

Comments
 (0)