Skip to content

Commit d5c1b2f

Browse files
committed
fix: ram tests structure
1 parent 50ccd81 commit d5c1b2f

7 files changed

Lines changed: 37 additions & 28 deletions

test/conftest.py

Lines changed: 9 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
"""Utility functions to transition the Manager to a specific state for testing."""
22

33
import pytest
4-
from manager.manager.manager import Manager
4+
from robotics_application_manager.manager.manager import Manager
55

66

77
class DummyServer:
@@ -76,8 +76,8 @@ def stop(self):
7676
def manager(monkeypatch):
7777
"""Fixture to provide a Manager instance with patched dependencies for testing."""
7878

79-
monkeypatch.setattr("manager.comms.websocket_server.WebsocketServer", DummyServer)
80-
monkeypatch.setattr("manager.manager.manager.ManagerConsumer", DummyConsumer)
79+
monkeypatch.setattr("robotics_application_manager.comms.websocket_server.WebsocketServer", DummyServer)
80+
monkeypatch.setattr("robotics_application_manager.manager.manager.ManagerConsumer", DummyConsumer)
8181

8282
# Patch subprocess.check_output for ROS_DISTRO and IMAGE_TAG
8383
def fake_check_output(cmd, *a, **k):
@@ -91,14 +91,14 @@ def fake_check_output(cmd, *a, **k):
9191

9292
# Patch check_gpu_acceleration where it is used
9393
monkeypatch.setattr(
94-
"manager.manager.manager.check_gpu_acceleration", lambda x=None: "OFF"
94+
"robotics_application_manager.manager.manager.check_gpu_acceleration", lambda x=None: "OFF"
9595
)
9696

9797
def dummy_run(self, start_pose=None):
9898
print("run around")
9999

100100
monkeypatch.setattr(
101-
"manager.manager.launcher.launcher_robot.LauncherRobot.run", dummy_run
101+
"robotics_application_manager.manager.launcher.launcher_robot.LauncherRobot.run", dummy_run
102102
)
103103

104104
# Patch os.makedirs and os.path.isdir to avoid real FS operations
@@ -121,7 +121,7 @@ def run(self):
121121
def terminate(self):
122122
pass
123123

124-
monkeypatch.setattr("manager.manager.manager.LauncherWorld", DummyLauncherWorld)
124+
monkeypatch.setattr("robotics_application_manager.manager.manager.LauncherWorld", DummyLauncherWorld)
125125

126126
class DummyFileWatchdog:
127127
def __init__(self, path, update_callback):
@@ -146,10 +146,10 @@ def run(self, consumer):
146146
def terminate(self):
147147
pass
148148

149-
monkeypatch.setattr("manager.manager.manager.LauncherTools", DummyToolsLauncher)
149+
monkeypatch.setattr("robotics_application_manager.manager.manager.LauncherTools", DummyToolsLauncher)
150150
# Deprecated
151-
# monkeypatch.setattr("manager.manager.manager.Server", DummyServer)
152-
# monkeypatch.setattr("manager.manager.manager.FileWatchdog", DummyFileWatchdog)
151+
# monkeypatch.setattr("robotics_application_manager.manager.manager.Server", DummyServer)
152+
# monkeypatch.setattr("robotics_application_manager.manager.manager.FileWatchdog", DummyFileWatchdog)
153153

154154
# Setup Manager with dummy consumer
155155
m = Manager(host="localhost", port=12345)

test/test_connect_disconnect_transitions.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -84,7 +84,7 @@ def test_disconnect_invalid_process(manager, monkeypatch):
8484
# Mock needed methods and attributes
8585
monkeypatch.setattr("os.execl", lambda *args: None)
8686
monkeypatch.setattr(
87-
"manager.manager.manager.stop_process_and_children",
87+
"robotics_application_manager.manager.manager.stop_process_and_children",
8888
lambda proc: (_ for _ in ()).throw(Exception("Process cannot be stopped")),
8989
)
9090
manager.application_process = DummyProc()

test/test_connected_to_world_ready.py

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,9 @@
11
"""Tests for transitioning Manager from 'connected' to 'world_ready' state."""
22

33
import pytest
4-
from manager.libs.launch_world_model import ConfigurationModel
4+
from robotics_application_manager.libs.launch_world_model import ConfigurationModel
55
from test_utils import setup_manager_to_connected
6-
from manager.manager.launcher.launcher_robot import worlds
6+
from robotics_application_manager.manager.launcher.launcher_robot import worlds
77

88
valid_world_cfg = ConfigurationModel(
99
type=next(iter(worlds)), launch_file_path="/path/to/launch_file.launch"
@@ -62,7 +62,8 @@ def fake_prepare_custom_universe(cfg):
6262
raise ValueError("Invalid world configuration")
6363

6464
monkeypatch.setattr(
65-
"manager.libs.launch_world_model.ConfigurationManager.validate", fake_validate
65+
"robotics_application_manager.libs.launch_world_model.ConfigurationManager.validate",
66+
fake_validate,
6667
)
6768
manager.prepare_custom_universe = fake_prepare_custom_universe
6869

@@ -94,7 +95,8 @@ def fake_validate(cfg):
9495
return DummyConfig()
9596

9697
monkeypatch.setattr(
97-
"manager.libs.launch_world_model.ConfigurationManager.validate", fake_validate
98+
"robotics_application_manager.libs.launch_world_model.ConfigurationManager.validate",
99+
fake_validate,
98100
)
99101

100102
invalid_robot_cfg = {"name": "", "type": ""} # Invalid robot config

test/test_resume_and_pause_transitions.py

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,10 @@
99
class DummyProc:
1010
"""Dummy process class for testing suspend and resume methods."""
1111

12+
def children(self, recursive=True):
13+
"""Simulate psutil child-process lookup."""
14+
return []
15+
1216
def suspend(self):
1317
"""Simulate suspending the process."""
1418
pass

test/test_terminate_transitions.py

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -46,7 +46,7 @@ def dummy_stop_process_and_children(proc):
4646
pass
4747

4848
monkeypatch.setattr(
49-
"manager.manager.manager.stop_process_and_children",
49+
"robotics_application_manager.manager.manager.stop_process_and_children",
5050
dummy_stop_process_and_children,
5151
)
5252
manager.pause_sim = lambda: None
@@ -72,7 +72,7 @@ def dummy_stop_process_and_children(proc):
7272
pass
7373

7474
monkeypatch.setattr(
75-
"manager.manager.manager.stop_process_and_children",
75+
"robotics_application_manager.manager.manager.stop_process_and_children",
7676
dummy_stop_process_and_children,
7777
)
7878
manager.pause_sim = lambda: None
@@ -106,7 +106,7 @@ def test_terminate_tools_invalid_machine_error(manager, monkeypatch):
106106
Ensure that the transition raises an error when executed from an invalid state.
107107
"""
108108
monkeypatch.setattr(
109-
"manager.libs.applications.compatibility.server.Server", DummyServer
109+
"robotics_application_manager.libs.server.Server", DummyServer
110110
)
111111
# Ensure the manager is in a state where it can stop
112112
setup_manager_to_application_running(manager, monkeypatch)

test/test_tools_ready_to_application_running.py

Lines changed: 9 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -47,7 +47,7 @@ def fake_open(file, mode="r", *args, **kwargs):
4747
monkeypatch.setattr("subprocess.Popen", lambda *a, **k: DummyProc())
4848
monkeypatch.setattr("os.mkdir", lambda path: None)
4949
monkeypatch.setattr("os.path.exists", lambda path: True)
50-
monkeypatch.setattr("shutil.rmtree", lambda path: None)
50+
monkeypatch.setattr("shutil.rmtree", lambda path, ignore_errors=False: None)
5151
monkeypatch.setattr(
5252
"zipfile.ZipFile",
5353
lambda *a, **k: type(
@@ -58,7 +58,8 @@ def fake_open(file, mode="r", *args, **kwargs):
5858
)
5959
monkeypatch.setattr("base64.b64decode", lambda s: b"print('hello')")
6060
monkeypatch.setattr(
61-
"manager.manager.manager.Manager.unpause_sim", lambda self: None
61+
"robotics_application_manager.manager.manager.Manager.unpause_sim",
62+
lambda self: None,
6263
)
6364
# Mock linter to return no errors
6465
manager.linter.evaluate_code = lambda code, ros_version: ""
@@ -93,7 +94,7 @@ def fake_open(file, mode="r", *args, **kwargs):
9394
monkeypatch.setattr("subprocess.Popen", lambda *a, **k: None)
9495
monkeypatch.setattr("os.mkdir", lambda path: None)
9596
monkeypatch.setattr("os.path.exists", lambda path: True)
96-
monkeypatch.setattr("shutil.rmtree", lambda path: None)
97+
monkeypatch.setattr("shutil.rmtree", lambda path, ignore_errors=False: None)
9798
monkeypatch.setattr(
9899
"zipfile.ZipFile",
99100
lambda *a, **k: type(
@@ -104,7 +105,8 @@ def fake_open(file, mode="r", *args, **kwargs):
104105
)
105106
monkeypatch.setattr("base64.b64decode", lambda s: b"print('hello')")
106107
monkeypatch.setattr(
107-
"manager.manager.manager.Manager.unpause_sim", lambda self: None
108+
"robotics_application_manager.manager.manager.Manager.unpause_sim",
109+
lambda self: None,
108110
)
109111
# Mock linter to return no errors
110112
manager.linter.evaluate_code = lambda code, ros_version: ""
@@ -127,7 +129,7 @@ def test_on_run_application_corrupt_zip(manager, monkeypatch):
127129
monkeypatch.setattr("os.path.exists", lambda path: True)
128130
monkeypatch.setattr("os.mkdir", lambda path: None)
129131
monkeypatch.setattr("os.listdir", lambda path: ["0", "1", "2"])
130-
monkeypatch.setattr("shutil.rmtree", lambda path: None)
132+
monkeypatch.setattr("shutil.rmtree", lambda path, ignore_errors=False: None)
131133
# Mock open for app.zip to avoid FileNotFoundError
132134
original_open = builtins.open
133135

@@ -153,7 +155,8 @@ def fake_open(file, mode="r", *args, **kwargs):
153155
)(),
154156
)
155157
monkeypatch.setattr(
156-
"manager.manager.manager.Manager.unpause_sim", lambda self: None
158+
"robotics_application_manager.manager.manager.Manager.unpause_sim",
159+
lambda self: None,
157160
)
158161
manager.linter.evaluate_code = lambda code, ros_version: ""
159162
data = valid_app_data

test/test_utils.py

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33
import builtins
44
import io
55

6-
from manager.manager.launcher.launcher_robot import worlds
6+
from robotics_application_manager.manager.launcher.launcher_robot import worlds
77

88

99
def setup_manager_to_connected(manager, monkeypatch):
@@ -18,7 +18,7 @@ def setup_manager_to_world_ready(manager, monkeypatch):
1818
setup_manager_to_connected(manager, monkeypatch)
1919

2020
# Use ConfigurationModel for valid world config
21-
from manager.libs.launch_world_model import ConfigurationModel
21+
from robotics_application_manager.libs.launch_world_model import ConfigurationModel
2222

2323
valid_world_cfg = ConfigurationModel(
2424
type=next(iter(worlds)), # Use the first world type
@@ -70,7 +70,7 @@ def run(self, consumer=None):
7070
def terminate(self):
7171
pass
7272

73-
monkeypatch.setattr("manager.manager.manager.LauncherTools", DummyToolsLauncher)
73+
monkeypatch.setattr("robotics_application_manager.manager.manager.LauncherTools", DummyToolsLauncher)
7474

7575
# Trigger visualization ready state
7676
manager.trigger(
@@ -116,7 +116,7 @@ def fake_open(file, mode="r", *args, **kwargs):
116116
monkeypatch.setattr("subprocess.Popen", lambda *a, **k: DummyProc())
117117
monkeypatch.setattr("os.mkdir", lambda path: None)
118118
monkeypatch.setattr("os.path.exists", lambda path: True)
119-
monkeypatch.setattr("shutil.rmtree", lambda path: None)
119+
monkeypatch.setattr("shutil.rmtree", lambda path, ignore_errors=False: None)
120120
monkeypatch.setattr(
121121
"zipfile.ZipFile",
122122
lambda *a, **k: type(
@@ -127,7 +127,7 @@ def fake_open(file, mode="r", *args, **kwargs):
127127
)
128128
monkeypatch.setattr("base64.b64decode", lambda s: b"print('hello')")
129129
monkeypatch.setattr(
130-
"manager.manager.manager.Manager.unpause_sim", lambda self: None
130+
"robotics_application_manager.manager.manager.Manager.unpause_sim", lambda self: None
131131
)
132132
# Mock linter to return no errors
133133
manager.linter.evaluate_code = lambda code, ros_version: ""

0 commit comments

Comments
 (0)