Skip to content

Commit

Permalink
Fix for false negative tests in rosbag2_py (#1592)
Browse files Browse the repository at this point in the history
* Fix for false negative tests in rosbag2_py

-  wait_for(condition: Callable, timout) was incorrectly returning True
after the first iteration even if condition was false.

Signed-off-by: Michael Orlov <michael.orlov@apex.ai>

* Address review comments in regards bag_path optimization

Signed-off-by: Michael Orlov <michael.orlov@apex.ai>

---------

Signed-off-by: Michael Orlov <michael.orlov@apex.ai>
(cherry picked from commit 66af399)

# Conflicts:
#	rosbag2_py/test/test_transport.py
  • Loading branch information
MichaelOrlov authored and mergify[bot] committed Jun 4, 2024
1 parent 8c94497 commit ec88f13
Show file tree
Hide file tree
Showing 2 changed files with 24 additions and 1 deletion.
2 changes: 1 addition & 1 deletion rosbag2_py/test/common.py
Original file line number Diff line number Diff line change
Expand Up @@ -41,4 +41,4 @@ def wait_for(
if clock.now() - start > timeout:
return False
time.sleep(sleep_time)
return True
return True
23 changes: 23 additions & 0 deletions rosbag2_py/test/test_transport.py
Original file line number Diff line number Diff line change
Expand Up @@ -13,9 +13,12 @@
# limitations under the License.

import datetime
<<<<<<< HEAD
import os
from pathlib import Path
import sys
=======
>>>>>>> 66af3999 (Fix for false negative tests in rosbag2_py (#1592))
import threading


Expand Down Expand Up @@ -49,6 +52,7 @@ def test_options_qos_conversion():
assert record_options.topic_qos_profile_overrides == simple_overrides


<<<<<<< HEAD
def test_player_log_level():
rosbag2_py.Player() # Test for default constructor
valid_log_level = 'debug'
Expand All @@ -72,6 +76,12 @@ def test_recoder_log_level():
def test_record_cancel(tmp_path):
bag_path = str(tmp_path / 'test_record_cancel')
storage_options, converter_options = get_rosbag_options(bag_path)
=======
@pytest.mark.parametrize('storage_id', TESTED_STORAGE_IDS)
def test_record_cancel(tmp_path, storage_id):
bag_path = tmp_path / 'test_record_cancel'
storage_options, converter_options = get_rosbag_options(str(bag_path), storage_id)
>>>>>>> 66af3999 (Fix for false negative tests in rosbag2_py (#1592))

recorder = rosbag2_py.Recorder()

Expand Down Expand Up @@ -102,8 +112,21 @@ def test_record_cancel(tmp_path):

recorder.cancel()

<<<<<<< HEAD
metadata_path = Path(bag_path) / 'metadata.yaml'
db3_path = Path(bag_path) / 'test_record_cancel_0.db3'
assert wait_for(lambda: metadata_path.is_file() and db3_path.is_file(),
timeout=rclpy.duration.Duration(seconds=3))
record_thread.join()
=======
metadata_io = rosbag2_py.MetadataIo()
assert wait_for(lambda: metadata_io.metadata_file_exists(str(bag_path)),
timeout=rclpy.duration.Duration(seconds=3))
record_thread.join()

metadata = metadata_io.read_metadata(str(bag_path))
assert len(metadata.relative_file_paths)
storage_path = bag_path / metadata.relative_file_paths[0]
assert wait_for(lambda: storage_path.is_file(),
timeout=rclpy.duration.Duration(seconds=3))
>>>>>>> 66af3999 (Fix for false negative tests in rosbag2_py (#1592))

0 comments on commit ec88f13

Please sign in to comment.