From 4b748688411aa11b9afd29fa45e6134cd371a707 Mon Sep 17 00:00:00 2001 From: Mingxin Zheng Date: Tue, 25 Mar 2025 08:22:08 +0000 Subject: [PATCH 1/6] Add a skipper requires_rti Signed-off-by: Mingxin Zheng --- workflows/robotic_ultrasound/tests/helpers.py | 21 +++++++++++++++++++ .../tests/test_dds/test_publisher.py | 15 ++++--------- .../tests/test_dds/test_subscriber.py | 19 ++++++----------- 3 files changed, 31 insertions(+), 24 deletions(-) create mode 100644 workflows/robotic_ultrasound/tests/helpers.py diff --git a/workflows/robotic_ultrasound/tests/helpers.py b/workflows/robotic_ultrasound/tests/helpers.py new file mode 100644 index 00000000..72ce1457 --- /dev/null +++ b/workflows/robotic_ultrasound/tests/helpers.py @@ -0,0 +1,21 @@ +# SPDX-FileCopyrightText: Copyright (c) 2025 NVIDIA CORPORATION & AFFILIATES. All rights reserved. +# SPDX-License-Identifier: Apache-2.0 + +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at + +# http://www.apache.org/licenses/LICENSE-2.0 + +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +import os +from unittest import skipUnless + +def requires_rti(func): + RTI_AVAILABLE = bool(os.getenv("RTI_LICENSE_FILE") and os.path.exists(os.getenv("RTI_LICENSE_FILE"))) + return skipUnless(RTI_AVAILABLE, "RTI Connext DDS is not installed or license not found")(func) diff --git a/workflows/robotic_ultrasound/tests/test_dds/test_publisher.py b/workflows/robotic_ultrasound/tests/test_dds/test_publisher.py index b671a8b1..4db1673e 100644 --- a/workflows/robotic_ultrasound/tests/test_dds/test_publisher.py +++ b/workflows/robotic_ultrasound/tests/test_dds/test_publisher.py @@ -13,21 +13,14 @@ # See the License for the specific language governing permissions and # limitations under the License. -import os import time import unittest -from unittest import skipUnless +import rti.connextdds as dds # noqa: F401 +import rti.idl as idl from dds.publisher import Publisher -try: - import rti.connextdds as dds # noqa: F401 - import rti.idl as idl - - license_path = os.getenv("RTI_LICENSE_FILE") - RTI_AVAILABLE = bool(license_path and os.path.exists(license_path)) -except ImportError: - RTI_AVAILABLE = False +from ..helpers import requires_rti @idl.struct @@ -36,7 +29,7 @@ class _TestData: message: str = "" -@skipUnless(RTI_AVAILABLE, "RTI Connext DDS is not installed or license not found") +@requires_rti class TestPublisher(unittest.TestCase): class TestDataPublisher(Publisher): """Concrete implementation of Publisher for testing""" diff --git a/workflows/robotic_ultrasound/tests/test_dds/test_subscriber.py b/workflows/robotic_ultrasound/tests/test_dds/test_subscriber.py index c6112cd0..0cccb3cc 100644 --- a/workflows/robotic_ultrasound/tests/test_dds/test_subscriber.py +++ b/workflows/robotic_ultrasound/tests/test_dds/test_subscriber.py @@ -13,22 +13,15 @@ # See the License for the specific language governing permissions and # limitations under the License. -import os import queue import time import unittest -from unittest import skipUnless +import rti.connextdds as dds # noqa: F401 +import rti.idl as idl from dds.subscriber import Subscriber, SubscriberWithCallback, SubscriberWithQueue -try: - import rti.connextdds as dds # noqa: F401 - import rti.idl as idl - - license_path = os.getenv("RTI_LICENSE_FILE") - RTI_AVAILABLE = bool(license_path and os.path.exists(license_path)) -except ImportError: - RTI_AVAILABLE = False +from ..helpers import requires_rti @idl.struct @@ -44,7 +37,7 @@ def consume(self, data) -> None: return data -@skipUnless(RTI_AVAILABLE, "RTI Connext DDS is not installed or license not found") +@requires_rti class TestDDSSubscriber(unittest.TestCase): def setUp(self): """Set up test fixtures before each test method""" @@ -94,7 +87,7 @@ def test_start_stop(self): self.assertIsNone(self.subscriber.stop_event) -@skipUnless(RTI_AVAILABLE, "RTI Connext DDS is not installed or license not found") +@requires_rti class TestSubscriberWithQueue(unittest.TestCase): def setUp(self): self.domain_id = 100 @@ -140,7 +133,7 @@ def test_read_data(self): self.fail("No data received after multiple retries") -@skipUnless(RTI_AVAILABLE, "RTI Connext DDS is not installed or license not found") +@requires_rti class TestSubscriberWithCallback(unittest.TestCase): def setUp(self): self.domain_id = 200 # Use a unique domain ID From fd547a6d713a17c7996dba39e790a2593acaba58 Mon Sep 17 00:00:00 2001 From: Mingxin Zheng Date: Tue, 25 Mar 2025 08:25:51 +0000 Subject: [PATCH 2/6] format Signed-off-by: Mingxin Zheng --- workflows/robotic_ultrasound/tests/helpers.py | 1 + 1 file changed, 1 insertion(+) diff --git a/workflows/robotic_ultrasound/tests/helpers.py b/workflows/robotic_ultrasound/tests/helpers.py index 72ce1457..2b51f69d 100644 --- a/workflows/robotic_ultrasound/tests/helpers.py +++ b/workflows/robotic_ultrasound/tests/helpers.py @@ -16,6 +16,7 @@ import os from unittest import skipUnless + def requires_rti(func): RTI_AVAILABLE = bool(os.getenv("RTI_LICENSE_FILE") and os.path.exists(os.getenv("RTI_LICENSE_FILE"))) return skipUnless(RTI_AVAILABLE, "RTI Connext DDS is not installed or license not found")(func) From f3cf1782a8e7dd11bb8c6696d88c09aecb3820c7 Mon Sep 17 00:00:00 2001 From: Mingxin Zheng Date: Sun, 30 Mar 2025 06:23:23 +0000 Subject: [PATCH 3/6] fix other scripts Signed-off-by: Mingxin Zheng --- .../test_holoscan_apps/test_realsense_camera.py | 10 ++-------- .../tests/test_policy_runner/test_pi0.py | 10 ++-------- .../tests/test_simulation/test_base.py | 12 +++--------- .../tests/test_simulation/test_camera.py | 12 +++--------- .../tests/test_simulation/test_franka.py | 11 ++--------- .../tests/test_simulation/test_sim_with_dds.py | 11 ++--------- .../tests/test_simulation/test_target.py | 11 ++--------- .../tests/test_simulation/test_ultrasound.py | 12 +++--------- .../tests/test_utils/test_visualization.py | 11 ++--------- 9 files changed, 21 insertions(+), 79 deletions(-) diff --git a/workflows/robotic_ultrasound/tests/test_holoscan_apps/test_realsense_camera.py b/workflows/robotic_ultrasound/tests/test_holoscan_apps/test_realsense_camera.py index c4f4cad1..ab86ce34 100644 --- a/workflows/robotic_ultrasound/tests/test_holoscan_apps/test_realsense_camera.py +++ b/workflows/robotic_ultrasound/tests/test_holoscan_apps/test_realsense_camera.py @@ -21,18 +21,12 @@ from holoscan_apps.realsense.camera import RealsenseApp from holoscan_apps.realsense.enumerate import count_devices -try: - RTI_AVAILABLE = bool(find_spec("rti.connextdds")) - if RTI_AVAILABLE: - license_path = os.getenv("RTI_LICENSE_FILE") - RTI_AVAILABLE = bool(license_path and os.path.exists(license_path)) -except ImportError: - RTI_AVAILABLE = False +from ..helpers import requires_rti DEVICES_AVAILABLE = count_devices() > 0 -@skipUnless(RTI_AVAILABLE, "RTI Connext DDS is not installed or license not found") +@requires_rti @skipUnless(DEVICES_AVAILABLE, "No Intel RealSense devices found") class TestRealSenseCamera(unittest.TestCase): def test_realsense_camera(self): diff --git a/workflows/robotic_ultrasound/tests/test_policy_runner/test_pi0.py b/workflows/robotic_ultrasound/tests/test_policy_runner/test_pi0.py index 2aa70090..044b4d0c 100644 --- a/workflows/robotic_ultrasound/tests/test_policy_runner/test_pi0.py +++ b/workflows/robotic_ultrasound/tests/test_policy_runner/test_pi0.py @@ -25,14 +25,8 @@ from dds.schemas.franka_info import FrankaInfo from dds.subscriber import SubscriberWithCallback from PIL import Image +from ..helpers import requires_rti -try: - import rti.connextdds as dds # noqa: F401 - - license_path = os.getenv("RTI_LICENSE_FILE") - RTI_AVAILABLE = bool(license_path and os.path.exists(license_path)) -except ImportError: - RTI_AVAILABLE = False """ Must execute the pi0 policy runner in another process before execute this test. @@ -80,7 +74,7 @@ def produce(self, dt: float, sim_time: float): return output -@skipUnless(RTI_AVAILABLE, "RTI Connext DDS is not installed or license not found") +@requires_rti class TestRunPI0Policy(unittest.TestCase): def setUp(self): def cb(topic, data): diff --git a/workflows/robotic_ultrasound/tests/test_simulation/test_base.py b/workflows/robotic_ultrasound/tests/test_simulation/test_base.py index 9ee67afe..0925a38b 100644 --- a/workflows/robotic_ultrasound/tests/test_simulation/test_base.py +++ b/workflows/robotic_ultrasound/tests/test_simulation/test_base.py @@ -29,22 +29,16 @@ import omni.usd from pxr import Usd from simulation.annotators.base import Annotator +from ..helpers import requires_rti + TEST_CASES = [ ("none_publishers_subscribers", None, None, 0, 0, None), ("mixed_none_publishers", [None, MagicMock(spec=Publisher), None], [MagicMock(spec=Subscriber)], 1, 1, 0), ] -try: - RTI_AVAILABLE = bool(find_spec("rti.connextdds")) - if RTI_AVAILABLE: - license_path = os.getenv("RTI_LICENSE_FILE") - RTI_AVAILABLE = bool(license_path and os.path.exists(license_path)) -except ImportError: - RTI_AVAILABLE = False - -@skipUnless(RTI_AVAILABLE, "RTI Connext DDS is not installed or license not found") +@requires_rti class TestAnnotator(unittest.TestCase): @classmethod def setUpClass(cls): diff --git a/workflows/robotic_ultrasound/tests/test_simulation/test_camera.py b/workflows/robotic_ultrasound/tests/test_simulation/test_camera.py index 1e359d16..e61d1417 100644 --- a/workflows/robotic_ultrasound/tests/test_simulation/test_camera.py +++ b/workflows/robotic_ultrasound/tests/test_simulation/test_camera.py @@ -24,22 +24,16 @@ from isaacsim import SimulationApp from parameterized import parameterized from simulation.utils.assets import robotic_ultrasound_assets as robot_us_assets +from ..helpers import requires_rti + simulation_app = SimulationApp({"headless": True}) import omni.usd from simulation.annotators.camera import CameraPublisher, CameraSubscriber -try: - RTI_AVAILABLE = bool(find_spec("rti.connextdds")) - if RTI_AVAILABLE: - license_path = os.getenv("RTI_LICENSE_FILE") - RTI_AVAILABLE = bool(license_path and os.path.exists(license_path)) -except ImportError: - RTI_AVAILABLE = False - -@skipUnless(RTI_AVAILABLE, "RTI Connext DDS is not installed or license not found") +@requires_rti class TestCameraBase(unittest.TestCase): @classmethod def setUpClass(cls): diff --git a/workflows/robotic_ultrasound/tests/test_simulation/test_franka.py b/workflows/robotic_ultrasound/tests/test_simulation/test_franka.py index d08ce591..3fce0026 100644 --- a/workflows/robotic_ultrasound/tests/test_simulation/test_franka.py +++ b/workflows/robotic_ultrasound/tests/test_simulation/test_franka.py @@ -23,6 +23,7 @@ from dds.schemas.franka_info import FrankaInfo from isaacsim import SimulationApp from simulation.utils.assets import robotic_ultrasound_assets as robot_us_assets +from ..helpers import requires_rti simulation_app = SimulationApp({"headless": True}) @@ -31,16 +32,8 @@ from omni.isaac.core.robots import Robot from simulation.annotators.franka import FrankaPublisher, FrankaSubscriber -try: - RTI_AVAILABLE = bool(find_spec("rti.connextdds")) - if RTI_AVAILABLE: - license_path = os.getenv("RTI_LICENSE_FILE") - RTI_AVAILABLE = bool(license_path and os.path.exists(license_path)) -except ImportError: - RTI_AVAILABLE = False - -@skipUnless(RTI_AVAILABLE, "RTI Connext DDS is not installed or license not found") +@requires_rti class TestFrankaBase(unittest.TestCase): @classmethod def setUpClass(cls): diff --git a/workflows/robotic_ultrasound/tests/test_simulation/test_sim_with_dds.py b/workflows/robotic_ultrasound/tests/test_simulation/test_sim_with_dds.py index 8e7c444f..2792a6ed 100644 --- a/workflows/robotic_ultrasound/tests/test_simulation/test_sim_with_dds.py +++ b/workflows/robotic_ultrasound/tests/test_simulation/test_sim_with_dds.py @@ -22,14 +22,7 @@ from dds.schemas.camera_info import CameraInfo from dds.schemas.franka_info import FrankaInfo from dds.subscriber import SubscriberWithCallback - -try: - import rti.connextdds as dds # noqa: F401 - - license_path = os.getenv("RTI_LICENSE_FILE") - RTI_AVAILABLE = bool(license_path and os.path.exists(license_path)) -except ImportError: - RTI_AVAILABLE = False +from ..helpers import requires_rti """ Must immediately execute the `sim_with_dds.py` in another process after executing this test. @@ -37,7 +30,7 @@ """ -@skipUnless(RTI_AVAILABLE, "RTI Connext DDS is not installed or license not found") +@requires_rti class TestSimWithDDS(unittest.TestCase): def setUp(self): topic1 = "topic_room_camera_data_rgb" diff --git a/workflows/robotic_ultrasound/tests/test_simulation/test_target.py b/workflows/robotic_ultrasound/tests/test_simulation/test_target.py index bb6af96b..bc301889 100644 --- a/workflows/robotic_ultrasound/tests/test_simulation/test_target.py +++ b/workflows/robotic_ultrasound/tests/test_simulation/test_target.py @@ -22,22 +22,15 @@ from dds.schemas.target_info import TargetInfo from isaacsim import SimulationApp from simulation.utils.assets import robotic_ultrasound_assets as robot_us_assets +from ..helpers import requires_rti simulation_app = SimulationApp({"headless": True}) import omni.usd from simulation.annotators.target import TargetPublisher, TargetSubscriber -try: - RTI_AVAILABLE = bool(find_spec("rti.connextdds")) - if RTI_AVAILABLE: - license_path = os.getenv("RTI_LICENSE_FILE") - RTI_AVAILABLE = bool(license_path and os.path.exists(license_path)) -except ImportError: - RTI_AVAILABLE = False - -@skipUnless(RTI_AVAILABLE, "RTI Connext DDS is not installed or license not found") +@requires_rti class TestTargetBase(unittest.TestCase): @classmethod def setUpClass(cls): diff --git a/workflows/robotic_ultrasound/tests/test_simulation/test_ultrasound.py b/workflows/robotic_ultrasound/tests/test_simulation/test_ultrasound.py index b95fb8d1..2dff3c8f 100644 --- a/workflows/robotic_ultrasound/tests/test_simulation/test_ultrasound.py +++ b/workflows/robotic_ultrasound/tests/test_simulation/test_ultrasound.py @@ -21,21 +21,15 @@ from dds.schemas.usp_info import UltraSoundProbeInfo from isaacsim import SimulationApp from simulation.utils.assets import robotic_ultrasound_assets as robot_us_assets +from ..helpers import requires_rti + simulation_app = SimulationApp({"headless": True}) import omni.usd from simulation.annotators.ultrasound import UltraSoundPublisher -try: - RTI_AVAILABLE = bool(find_spec("rti.connextdds")) - if RTI_AVAILABLE: - license_path = os.getenv("RTI_LICENSE_FILE") - RTI_AVAILABLE = bool(license_path and os.path.exists(license_path)) -except ImportError: - RTI_AVAILABLE = False - -@skipUnless(RTI_AVAILABLE, "RTI Connext DDS is not installed or license not found") +@requires_rti class TestUltraSoundBase(unittest.TestCase): @classmethod def setUpClass(cls): diff --git a/workflows/robotic_ultrasound/tests/test_utils/test_visualization.py b/workflows/robotic_ultrasound/tests/test_utils/test_visualization.py index 147fddbd..7c3284dd 100644 --- a/workflows/robotic_ultrasound/tests/test_utils/test_visualization.py +++ b/workflows/robotic_ultrasound/tests/test_utils/test_visualization.py @@ -23,6 +23,7 @@ import numpy as np from simulation.configs.basic import config +from ..helpers import requires_rti # Mock sys.argv before importing the module original_argv = sys.argv @@ -41,16 +42,8 @@ from workflows.robotic_ultrasound.scripts.utils.visualization import VisualizationApp -try: - RTI_AVAILABLE = bool(find_spec("rti.connextdds")) - if RTI_AVAILABLE: - license_path = os.getenv("RTI_LICENSE_FILE") - RTI_AVAILABLE = bool(license_path and os.path.exists(license_path)) -except ImportError: - RTI_AVAILABLE = False - -@skipUnless(RTI_AVAILABLE, "RTI Connext DDS is not installed or license not found") +@requires_rti class TestVisualizationApp(unittest.TestCase): def setUp(self): dpg.destroy_context() From e348d5f0cd967ad0f20263ee912ea2a98c6bce18 Mon Sep 17 00:00:00 2001 From: Mingxin Zheng Date: Sun, 30 Mar 2025 06:25:23 +0000 Subject: [PATCH 4/6] format Signed-off-by: Mingxin Zheng --- .../tests/test_holoscan_apps/test_realsense_camera.py | 2 -- .../robotic_ultrasound/tests/test_policy_runner/test_pi0.py | 3 +-- .../robotic_ultrasound/tests/test_simulation/test_base.py | 4 +--- .../robotic_ultrasound/tests/test_simulation/test_camera.py | 4 +--- .../robotic_ultrasound/tests/test_simulation/test_franka.py | 3 +-- .../tests/test_simulation/test_sim_with_dds.py | 3 +-- .../robotic_ultrasound/tests/test_simulation/test_target.py | 3 +-- .../tests/test_simulation/test_ultrasound.py | 4 +--- .../tests/test_utils/test_visualization.py | 5 ++--- 9 files changed, 9 insertions(+), 22 deletions(-) diff --git a/workflows/robotic_ultrasound/tests/test_holoscan_apps/test_realsense_camera.py b/workflows/robotic_ultrasound/tests/test_holoscan_apps/test_realsense_camera.py index ab86ce34..eca48bd6 100644 --- a/workflows/robotic_ultrasound/tests/test_holoscan_apps/test_realsense_camera.py +++ b/workflows/robotic_ultrasound/tests/test_holoscan_apps/test_realsense_camera.py @@ -13,9 +13,7 @@ # See the License for the specific language governing permissions and # limitations under the License. -import os import unittest -from importlib.util import find_spec from unittest import skipUnless from holoscan_apps.realsense.camera import RealsenseApp diff --git a/workflows/robotic_ultrasound/tests/test_policy_runner/test_pi0.py b/workflows/robotic_ultrasound/tests/test_policy_runner/test_pi0.py index 044b4d0c..417d2ccd 100644 --- a/workflows/robotic_ultrasound/tests/test_policy_runner/test_pi0.py +++ b/workflows/robotic_ultrasound/tests/test_policy_runner/test_pi0.py @@ -16,7 +16,6 @@ import os import time import unittest -from unittest import skipUnless import numpy as np from dds.publisher import Publisher @@ -25,8 +24,8 @@ from dds.schemas.franka_info import FrankaInfo from dds.subscriber import SubscriberWithCallback from PIL import Image -from ..helpers import requires_rti +from ..helpers import requires_rti """ Must execute the pi0 policy runner in another process before execute this test. diff --git a/workflows/robotic_ultrasound/tests/test_simulation/test_base.py b/workflows/robotic_ultrasound/tests/test_simulation/test_base.py index 0925a38b..f57d45b5 100644 --- a/workflows/robotic_ultrasound/tests/test_simulation/test_base.py +++ b/workflows/robotic_ultrasound/tests/test_simulation/test_base.py @@ -15,8 +15,6 @@ import os import unittest -from importlib.util import find_spec -from unittest import skipUnless from unittest.mock import MagicMock from dds.publisher import Publisher @@ -29,8 +27,8 @@ import omni.usd from pxr import Usd from simulation.annotators.base import Annotator -from ..helpers import requires_rti +from ..helpers import requires_rti TEST_CASES = [ ("none_publishers_subscribers", None, None, 0, 0, None), diff --git a/workflows/robotic_ultrasound/tests/test_simulation/test_camera.py b/workflows/robotic_ultrasound/tests/test_simulation/test_camera.py index e61d1417..6685c511 100644 --- a/workflows/robotic_ultrasound/tests/test_simulation/test_camera.py +++ b/workflows/robotic_ultrasound/tests/test_simulation/test_camera.py @@ -15,8 +15,6 @@ import os import unittest -from importlib.util import find_spec -from unittest import skipUnless import numpy as np from dds.schemas.camera_ctrl import CameraCtrlInput @@ -24,8 +22,8 @@ from isaacsim import SimulationApp from parameterized import parameterized from simulation.utils.assets import robotic_ultrasound_assets as robot_us_assets -from ..helpers import requires_rti +from ..helpers import requires_rti simulation_app = SimulationApp({"headless": True}) diff --git a/workflows/robotic_ultrasound/tests/test_simulation/test_franka.py b/workflows/robotic_ultrasound/tests/test_simulation/test_franka.py index 3fce0026..6b93b104 100644 --- a/workflows/robotic_ultrasound/tests/test_simulation/test_franka.py +++ b/workflows/robotic_ultrasound/tests/test_simulation/test_franka.py @@ -15,14 +15,13 @@ import os import unittest -from importlib.util import find_spec -from unittest import skipUnless import numpy as np from dds.schemas.franka_ctrl import FrankaCtrlInput from dds.schemas.franka_info import FrankaInfo from isaacsim import SimulationApp from simulation.utils.assets import robotic_ultrasound_assets as robot_us_assets + from ..helpers import requires_rti simulation_app = SimulationApp({"headless": True}) diff --git a/workflows/robotic_ultrasound/tests/test_simulation/test_sim_with_dds.py b/workflows/robotic_ultrasound/tests/test_simulation/test_sim_with_dds.py index 2792a6ed..5ff532ed 100644 --- a/workflows/robotic_ultrasound/tests/test_simulation/test_sim_with_dds.py +++ b/workflows/robotic_ultrasound/tests/test_simulation/test_sim_with_dds.py @@ -13,15 +13,14 @@ # See the License for the specific language governing permissions and # limitations under the License. -import os import time import unittest -from unittest import skipUnless import numpy as np from dds.schemas.camera_info import CameraInfo from dds.schemas.franka_info import FrankaInfo from dds.subscriber import SubscriberWithCallback + from ..helpers import requires_rti """ diff --git a/workflows/robotic_ultrasound/tests/test_simulation/test_target.py b/workflows/robotic_ultrasound/tests/test_simulation/test_target.py index bc301889..2ac9cd63 100644 --- a/workflows/robotic_ultrasound/tests/test_simulation/test_target.py +++ b/workflows/robotic_ultrasound/tests/test_simulation/test_target.py @@ -15,13 +15,12 @@ import os import unittest -from importlib.util import find_spec -from unittest import skipUnless from dds.schemas.target_ctrl import TargetCtrlInput from dds.schemas.target_info import TargetInfo from isaacsim import SimulationApp from simulation.utils.assets import robotic_ultrasound_assets as robot_us_assets + from ..helpers import requires_rti simulation_app = SimulationApp({"headless": True}) diff --git a/workflows/robotic_ultrasound/tests/test_simulation/test_ultrasound.py b/workflows/robotic_ultrasound/tests/test_simulation/test_ultrasound.py index 2dff3c8f..b40c138d 100644 --- a/workflows/robotic_ultrasound/tests/test_simulation/test_ultrasound.py +++ b/workflows/robotic_ultrasound/tests/test_simulation/test_ultrasound.py @@ -15,14 +15,12 @@ import os import unittest -from importlib.util import find_spec -from unittest import skipUnless from dds.schemas.usp_info import UltraSoundProbeInfo from isaacsim import SimulationApp from simulation.utils.assets import robotic_ultrasound_assets as robot_us_assets -from ..helpers import requires_rti +from ..helpers import requires_rti simulation_app = SimulationApp({"headless": True}) import omni.usd diff --git a/workflows/robotic_ultrasound/tests/test_utils/test_visualization.py b/workflows/robotic_ultrasound/tests/test_utils/test_visualization.py index 7c3284dd..e3c4edb7 100644 --- a/workflows/robotic_ultrasound/tests/test_utils/test_visualization.py +++ b/workflows/robotic_ultrasound/tests/test_utils/test_visualization.py @@ -13,16 +13,15 @@ # See the License for the specific language governing permissions and # limitations under the License. -import os import sys import threading import time import unittest -from importlib.util import find_spec -from unittest import mock, skipUnless +from unittest import mock import numpy as np from simulation.configs.basic import config + from ..helpers import requires_rti # Mock sys.argv before importing the module From be5ae822a101c7b037ad86368104840d8364ad68 Mon Sep 17 00:00:00 2001 From: Mingxin Zheng Date: Sun, 30 Mar 2025 06:46:05 +0000 Subject: [PATCH 5/6] fix comments Signed-off-by: Mingxin Zheng --- workflows/robotic_ultrasound/tests/test_dds/test_publisher.py | 2 +- workflows/robotic_ultrasound/tests/test_dds/test_subscriber.py | 2 +- .../tests/test_holoscan_apps/test_realsense_camera.py | 2 +- .../robotic_ultrasound/tests/test_policy_runner/test_pi0.py | 2 +- workflows/robotic_ultrasound/tests/test_simulation/test_base.py | 2 +- .../robotic_ultrasound/tests/test_simulation/test_camera.py | 2 +- .../robotic_ultrasound/tests/test_simulation/test_franka.py | 2 +- .../tests/test_simulation/test_sim_with_dds.py | 2 +- .../robotic_ultrasound/tests/test_simulation/test_target.py | 2 +- .../robotic_ultrasound/tests/test_simulation/test_ultrasound.py | 2 +- .../robotic_ultrasound/tests/test_utils/test_visualization.py | 2 +- 11 files changed, 11 insertions(+), 11 deletions(-) diff --git a/workflows/robotic_ultrasound/tests/test_dds/test_publisher.py b/workflows/robotic_ultrasound/tests/test_dds/test_publisher.py index 4db1673e..9276d1b6 100644 --- a/workflows/robotic_ultrasound/tests/test_dds/test_publisher.py +++ b/workflows/robotic_ultrasound/tests/test_dds/test_publisher.py @@ -20,7 +20,7 @@ import rti.idl as idl from dds.publisher import Publisher -from ..helpers import requires_rti +from helpers import requires_rti @idl.struct diff --git a/workflows/robotic_ultrasound/tests/test_dds/test_subscriber.py b/workflows/robotic_ultrasound/tests/test_dds/test_subscriber.py index 0cccb3cc..4dee32ee 100644 --- a/workflows/robotic_ultrasound/tests/test_dds/test_subscriber.py +++ b/workflows/robotic_ultrasound/tests/test_dds/test_subscriber.py @@ -21,7 +21,7 @@ import rti.idl as idl from dds.subscriber import Subscriber, SubscriberWithCallback, SubscriberWithQueue -from ..helpers import requires_rti +from helpers import requires_rti @idl.struct diff --git a/workflows/robotic_ultrasound/tests/test_holoscan_apps/test_realsense_camera.py b/workflows/robotic_ultrasound/tests/test_holoscan_apps/test_realsense_camera.py index eca48bd6..31cea748 100644 --- a/workflows/robotic_ultrasound/tests/test_holoscan_apps/test_realsense_camera.py +++ b/workflows/robotic_ultrasound/tests/test_holoscan_apps/test_realsense_camera.py @@ -19,7 +19,7 @@ from holoscan_apps.realsense.camera import RealsenseApp from holoscan_apps.realsense.enumerate import count_devices -from ..helpers import requires_rti +from helpers import requires_rti DEVICES_AVAILABLE = count_devices() > 0 diff --git a/workflows/robotic_ultrasound/tests/test_policy_runner/test_pi0.py b/workflows/robotic_ultrasound/tests/test_policy_runner/test_pi0.py index 417d2ccd..273dcf64 100644 --- a/workflows/robotic_ultrasound/tests/test_policy_runner/test_pi0.py +++ b/workflows/robotic_ultrasound/tests/test_policy_runner/test_pi0.py @@ -25,7 +25,7 @@ from dds.subscriber import SubscriberWithCallback from PIL import Image -from ..helpers import requires_rti +from helpers import requires_rti """ Must execute the pi0 policy runner in another process before execute this test. diff --git a/workflows/robotic_ultrasound/tests/test_simulation/test_base.py b/workflows/robotic_ultrasound/tests/test_simulation/test_base.py index f57d45b5..f60c903f 100644 --- a/workflows/robotic_ultrasound/tests/test_simulation/test_base.py +++ b/workflows/robotic_ultrasound/tests/test_simulation/test_base.py @@ -28,7 +28,7 @@ from pxr import Usd from simulation.annotators.base import Annotator -from ..helpers import requires_rti +from helpers import requires_rti TEST_CASES = [ ("none_publishers_subscribers", None, None, 0, 0, None), diff --git a/workflows/robotic_ultrasound/tests/test_simulation/test_camera.py b/workflows/robotic_ultrasound/tests/test_simulation/test_camera.py index 6685c511..dbb08f39 100644 --- a/workflows/robotic_ultrasound/tests/test_simulation/test_camera.py +++ b/workflows/robotic_ultrasound/tests/test_simulation/test_camera.py @@ -23,7 +23,7 @@ from parameterized import parameterized from simulation.utils.assets import robotic_ultrasound_assets as robot_us_assets -from ..helpers import requires_rti +from helpers import requires_rti simulation_app = SimulationApp({"headless": True}) diff --git a/workflows/robotic_ultrasound/tests/test_simulation/test_franka.py b/workflows/robotic_ultrasound/tests/test_simulation/test_franka.py index 6b93b104..24d9f41b 100644 --- a/workflows/robotic_ultrasound/tests/test_simulation/test_franka.py +++ b/workflows/robotic_ultrasound/tests/test_simulation/test_franka.py @@ -22,7 +22,7 @@ from isaacsim import SimulationApp from simulation.utils.assets import robotic_ultrasound_assets as robot_us_assets -from ..helpers import requires_rti +from helpers import requires_rti simulation_app = SimulationApp({"headless": True}) diff --git a/workflows/robotic_ultrasound/tests/test_simulation/test_sim_with_dds.py b/workflows/robotic_ultrasound/tests/test_simulation/test_sim_with_dds.py index 5ff532ed..77c4d330 100644 --- a/workflows/robotic_ultrasound/tests/test_simulation/test_sim_with_dds.py +++ b/workflows/robotic_ultrasound/tests/test_simulation/test_sim_with_dds.py @@ -21,7 +21,7 @@ from dds.schemas.franka_info import FrankaInfo from dds.subscriber import SubscriberWithCallback -from ..helpers import requires_rti +from helpers import requires_rti """ Must immediately execute the `sim_with_dds.py` in another process after executing this test. diff --git a/workflows/robotic_ultrasound/tests/test_simulation/test_target.py b/workflows/robotic_ultrasound/tests/test_simulation/test_target.py index 2ac9cd63..70b2b5c7 100644 --- a/workflows/robotic_ultrasound/tests/test_simulation/test_target.py +++ b/workflows/robotic_ultrasound/tests/test_simulation/test_target.py @@ -21,7 +21,7 @@ from isaacsim import SimulationApp from simulation.utils.assets import robotic_ultrasound_assets as robot_us_assets -from ..helpers import requires_rti +from helpers import requires_rti simulation_app = SimulationApp({"headless": True}) diff --git a/workflows/robotic_ultrasound/tests/test_simulation/test_ultrasound.py b/workflows/robotic_ultrasound/tests/test_simulation/test_ultrasound.py index b40c138d..f3978510 100644 --- a/workflows/robotic_ultrasound/tests/test_simulation/test_ultrasound.py +++ b/workflows/robotic_ultrasound/tests/test_simulation/test_ultrasound.py @@ -20,7 +20,7 @@ from isaacsim import SimulationApp from simulation.utils.assets import robotic_ultrasound_assets as robot_us_assets -from ..helpers import requires_rti +from helpers import requires_rti simulation_app = SimulationApp({"headless": True}) import omni.usd diff --git a/workflows/robotic_ultrasound/tests/test_utils/test_visualization.py b/workflows/robotic_ultrasound/tests/test_utils/test_visualization.py index e3c4edb7..40a503f9 100644 --- a/workflows/robotic_ultrasound/tests/test_utils/test_visualization.py +++ b/workflows/robotic_ultrasound/tests/test_utils/test_visualization.py @@ -22,7 +22,7 @@ import numpy as np from simulation.configs.basic import config -from ..helpers import requires_rti +from helpers import requires_rti # Mock sys.argv before importing the module original_argv = sys.argv From 69fc06762aefa47463ee79c3a9f69d98223d7a03 Mon Sep 17 00:00:00 2001 From: Mingxin Zheng Date: Sun, 30 Mar 2025 06:47:00 +0000 Subject: [PATCH 6/6] format Signed-off-by: Mingxin Zheng --- workflows/robotic_ultrasound/tests/test_dds/test_publisher.py | 1 - workflows/robotic_ultrasound/tests/test_dds/test_subscriber.py | 1 - .../tests/test_holoscan_apps/test_realsense_camera.py | 3 +-- .../robotic_ultrasound/tests/test_policy_runner/test_pi0.py | 3 +-- .../robotic_ultrasound/tests/test_simulation/test_base.py | 3 +-- .../robotic_ultrasound/tests/test_simulation/test_camera.py | 3 +-- .../robotic_ultrasound/tests/test_simulation/test_franka.py | 3 +-- .../tests/test_simulation/test_sim_with_dds.py | 1 - .../robotic_ultrasound/tests/test_simulation/test_target.py | 3 +-- .../tests/test_simulation/test_ultrasound.py | 3 +-- .../robotic_ultrasound/tests/test_utils/test_visualization.py | 3 +-- 11 files changed, 8 insertions(+), 19 deletions(-) diff --git a/workflows/robotic_ultrasound/tests/test_dds/test_publisher.py b/workflows/robotic_ultrasound/tests/test_dds/test_publisher.py index 9276d1b6..c84d88ee 100644 --- a/workflows/robotic_ultrasound/tests/test_dds/test_publisher.py +++ b/workflows/robotic_ultrasound/tests/test_dds/test_publisher.py @@ -19,7 +19,6 @@ import rti.connextdds as dds # noqa: F401 import rti.idl as idl from dds.publisher import Publisher - from helpers import requires_rti diff --git a/workflows/robotic_ultrasound/tests/test_dds/test_subscriber.py b/workflows/robotic_ultrasound/tests/test_dds/test_subscriber.py index 4dee32ee..7bf849b9 100644 --- a/workflows/robotic_ultrasound/tests/test_dds/test_subscriber.py +++ b/workflows/robotic_ultrasound/tests/test_dds/test_subscriber.py @@ -20,7 +20,6 @@ import rti.connextdds as dds # noqa: F401 import rti.idl as idl from dds.subscriber import Subscriber, SubscriberWithCallback, SubscriberWithQueue - from helpers import requires_rti diff --git a/workflows/robotic_ultrasound/tests/test_holoscan_apps/test_realsense_camera.py b/workflows/robotic_ultrasound/tests/test_holoscan_apps/test_realsense_camera.py index 31cea748..91b233a2 100644 --- a/workflows/robotic_ultrasound/tests/test_holoscan_apps/test_realsense_camera.py +++ b/workflows/robotic_ultrasound/tests/test_holoscan_apps/test_realsense_camera.py @@ -16,11 +16,10 @@ import unittest from unittest import skipUnless +from helpers import requires_rti from holoscan_apps.realsense.camera import RealsenseApp from holoscan_apps.realsense.enumerate import count_devices -from helpers import requires_rti - DEVICES_AVAILABLE = count_devices() > 0 diff --git a/workflows/robotic_ultrasound/tests/test_policy_runner/test_pi0.py b/workflows/robotic_ultrasound/tests/test_policy_runner/test_pi0.py index 273dcf64..2a8aded1 100644 --- a/workflows/robotic_ultrasound/tests/test_policy_runner/test_pi0.py +++ b/workflows/robotic_ultrasound/tests/test_policy_runner/test_pi0.py @@ -23,9 +23,8 @@ from dds.schemas.franka_ctrl import FrankaCtrlInput from dds.schemas.franka_info import FrankaInfo from dds.subscriber import SubscriberWithCallback -from PIL import Image - from helpers import requires_rti +from PIL import Image """ Must execute the pi0 policy runner in another process before execute this test. diff --git a/workflows/robotic_ultrasound/tests/test_simulation/test_base.py b/workflows/robotic_ultrasound/tests/test_simulation/test_base.py index f60c903f..872fe6a6 100644 --- a/workflows/robotic_ultrasound/tests/test_simulation/test_base.py +++ b/workflows/robotic_ultrasound/tests/test_simulation/test_base.py @@ -25,11 +25,10 @@ simulation_app = SimulationApp({"headless": True}) import omni.usd +from helpers import requires_rti from pxr import Usd from simulation.annotators.base import Annotator -from helpers import requires_rti - TEST_CASES = [ ("none_publishers_subscribers", None, None, 0, 0, None), ("mixed_none_publishers", [None, MagicMock(spec=Publisher), None], [MagicMock(spec=Subscriber)], 1, 1, 0), diff --git a/workflows/robotic_ultrasound/tests/test_simulation/test_camera.py b/workflows/robotic_ultrasound/tests/test_simulation/test_camera.py index dbb08f39..85002cb8 100644 --- a/workflows/robotic_ultrasound/tests/test_simulation/test_camera.py +++ b/workflows/robotic_ultrasound/tests/test_simulation/test_camera.py @@ -19,12 +19,11 @@ import numpy as np from dds.schemas.camera_ctrl import CameraCtrlInput from dds.schemas.camera_info import CameraInfo +from helpers import requires_rti from isaacsim import SimulationApp from parameterized import parameterized from simulation.utils.assets import robotic_ultrasound_assets as robot_us_assets -from helpers import requires_rti - simulation_app = SimulationApp({"headless": True}) import omni.usd diff --git a/workflows/robotic_ultrasound/tests/test_simulation/test_franka.py b/workflows/robotic_ultrasound/tests/test_simulation/test_franka.py index 24d9f41b..4fbcbd12 100644 --- a/workflows/robotic_ultrasound/tests/test_simulation/test_franka.py +++ b/workflows/robotic_ultrasound/tests/test_simulation/test_franka.py @@ -19,11 +19,10 @@ import numpy as np from dds.schemas.franka_ctrl import FrankaCtrlInput from dds.schemas.franka_info import FrankaInfo +from helpers import requires_rti from isaacsim import SimulationApp from simulation.utils.assets import robotic_ultrasound_assets as robot_us_assets -from helpers import requires_rti - simulation_app = SimulationApp({"headless": True}) import omni.usd diff --git a/workflows/robotic_ultrasound/tests/test_simulation/test_sim_with_dds.py b/workflows/robotic_ultrasound/tests/test_simulation/test_sim_with_dds.py index 77c4d330..3c7eb3be 100644 --- a/workflows/robotic_ultrasound/tests/test_simulation/test_sim_with_dds.py +++ b/workflows/robotic_ultrasound/tests/test_simulation/test_sim_with_dds.py @@ -20,7 +20,6 @@ from dds.schemas.camera_info import CameraInfo from dds.schemas.franka_info import FrankaInfo from dds.subscriber import SubscriberWithCallback - from helpers import requires_rti """ diff --git a/workflows/robotic_ultrasound/tests/test_simulation/test_target.py b/workflows/robotic_ultrasound/tests/test_simulation/test_target.py index 70b2b5c7..0eac6d35 100644 --- a/workflows/robotic_ultrasound/tests/test_simulation/test_target.py +++ b/workflows/robotic_ultrasound/tests/test_simulation/test_target.py @@ -18,11 +18,10 @@ from dds.schemas.target_ctrl import TargetCtrlInput from dds.schemas.target_info import TargetInfo +from helpers import requires_rti from isaacsim import SimulationApp from simulation.utils.assets import robotic_ultrasound_assets as robot_us_assets -from helpers import requires_rti - simulation_app = SimulationApp({"headless": True}) import omni.usd diff --git a/workflows/robotic_ultrasound/tests/test_simulation/test_ultrasound.py b/workflows/robotic_ultrasound/tests/test_simulation/test_ultrasound.py index f3978510..24f78713 100644 --- a/workflows/robotic_ultrasound/tests/test_simulation/test_ultrasound.py +++ b/workflows/robotic_ultrasound/tests/test_simulation/test_ultrasound.py @@ -17,11 +17,10 @@ import unittest from dds.schemas.usp_info import UltraSoundProbeInfo +from helpers import requires_rti from isaacsim import SimulationApp from simulation.utils.assets import robotic_ultrasound_assets as robot_us_assets -from helpers import requires_rti - simulation_app = SimulationApp({"headless": True}) import omni.usd from simulation.annotators.ultrasound import UltraSoundPublisher diff --git a/workflows/robotic_ultrasound/tests/test_utils/test_visualization.py b/workflows/robotic_ultrasound/tests/test_utils/test_visualization.py index 40a503f9..b3dfcec2 100644 --- a/workflows/robotic_ultrasound/tests/test_utils/test_visualization.py +++ b/workflows/robotic_ultrasound/tests/test_utils/test_visualization.py @@ -20,9 +20,8 @@ from unittest import mock import numpy as np -from simulation.configs.basic import config - from helpers import requires_rti +from simulation.configs.basic import config # Mock sys.argv before importing the module original_argv = sys.argv