|
19 | 19 | import pytest |
20 | 20 | from torchx.schedulers.api import AppDryRunInfo |
21 | 21 | from torchx.specs import AppDef, Role |
| 22 | +from torchx.specs.api import AppState |
22 | 23 |
|
23 | 24 | from nemo_run.core.execution.docker import DockerExecutor |
24 | 25 | from nemo_run.run.torchx_backend.schedulers.docker import ( |
@@ -125,6 +126,33 @@ def test_describe(docker_scheduler, docker_executor): |
125 | 126 | assert len(response.roles) == 1 |
126 | 127 |
|
127 | 128 |
|
| 129 | +def test_describe_running(docker_scheduler, docker_executor): |
| 130 | + with ( |
| 131 | + mock.patch.object(DockerJobRequest, "load") as mock_load, |
| 132 | + mock.patch.object(DockerContainer, "get_container") as mock_get_container, |
| 133 | + mock.patch.object(PersistentDockerScheduler, "_get_app_state") as mock_get_app_state, |
| 134 | + ): |
| 135 | + container = DockerContainer( |
| 136 | + name="test_role", |
| 137 | + command=["test"], |
| 138 | + executor=docker_executor, |
| 139 | + extra_env={}, |
| 140 | + ) |
| 141 | + mock_load.return_value = DockerJobRequest( |
| 142 | + id="test_session___test_role___test_container_id", |
| 143 | + executor=docker_executor, |
| 144 | + containers=[container], |
| 145 | + ) |
| 146 | + mock_get_container.return_value = container |
| 147 | + mock_get_app_state.return_value = AppState.RUNNING |
| 148 | + |
| 149 | + response = docker_scheduler.describe("test_session___test_role___test_container_id") |
| 150 | + assert response is not None |
| 151 | + assert response.app_id == "test_session___test_role___test_container_id" |
| 152 | + assert "RUNNING" in str(response.state) |
| 153 | + assert len(response.roles) == 1 |
| 154 | + |
| 155 | + |
128 | 156 | def test_save_and_get_job_dirs(): |
129 | 157 | with tempfile.TemporaryDirectory() as temp_dir: |
130 | 158 | from nemo_run.config import set_nemorun_home |
|
0 commit comments