Skip to content

Commit bc1f58a

Browse files
committed
adding tests for job and pjm platform files
1 parent a40aad4 commit bc1f58a

File tree

2 files changed

+58
-0
lines changed

2 files changed

+58
-0
lines changed

test/unit/test_job.py

Lines changed: 34 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -51,6 +51,7 @@
5151
from autosubmit.platforms.platform import Platform
5252
from autosubmit.platforms.psplatform import PsPlatform
5353
from autosubmit.platforms.slurmplatform import SlurmPlatform
54+
from test.conftest import AutosubmitConfigFactory
5455

5556
"""Tests for the Autosubmit ``Job`` class."""
5657

@@ -2414,3 +2415,36 @@ def test_submit_ready_jobs(autosubmit_exp, mocker):
24142415
assert error_message == ''
24152416
assert len(valid_packages_to_submit) == 1
24162417
assert any_job_submitted
2418+
2419+
2420+
@pytest.mark.parametrize("create_jobs", [[1, 2]], indirect=True)
2421+
@pytest.mark.parametrize(
2422+
'status,failed_file',
2423+
[
2424+
(Status.RUNNING, False),
2425+
(Status.QUEUING, False),
2426+
(Status.HELD, False),
2427+
(Status.FAILED, False),
2428+
(Status.FAILED, True),
2429+
(Status.UNKNOWN, False),
2430+
(Status.SUBMITTED, False)
2431+
]
2432+
)
2433+
def test_update_status(create_jobs: list[Job], status: Status, failed_file,
2434+
autosubmit_config: 'AutosubmitConfigFactory', local: 'LocalPlatform'):
2435+
as_conf = autosubmit_config('t000', experiment_data={
2436+
'PLATFORMS': {
2437+
local.name: {
2438+
'DISABLE_RECOVERY_THREADS': False
2439+
}
2440+
}
2441+
})
2442+
job = create_jobs[0]
2443+
job.id = 0
2444+
job.platform = local
2445+
job.platform_name = local.name
2446+
job.new_status = status
2447+
2448+
assert job.status != status
2449+
job.update_status(as_conf=as_conf, failed_file=failed_file)
2450+
assert job.status == status

test/unit/test_pjm.py

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@
2020

2121
import pytest
2222

23+
from autosubmit.config.configcommon import AutosubmitConfig
2324
from autosubmit.config.yamlparser import YAMLParserFactory
2425
from autosubmit.job.job import Job
2526
from autosubmit.job.job_common import Status
@@ -187,3 +188,26 @@ def test_process_batch_ready_jobs_valid_packages_to_submit(mocker, pjm_platform,
187188
else:
188189
assert job.wrapper_name is None
189190
assert failed_packages == []
191+
192+
193+
@pytest.mark.parametrize("create_jobs", [[3, 5]], indirect=True)
194+
@pytest.mark.parametrize('parse_queue_reason, result', [
195+
('ASHOLD', 3),
196+
('WAITING ASHOLD', 6),
197+
('(Invalid)', -1)
198+
], ids=['ASHOLD', 'WAITING ASHOLD', 'AssociationJobLimit'])
199+
def test_get_queue_status(mocker, create_jobs: list[Job], pjm_platform: 'PJMPlatform', as_conf: 'AutosubmitConfig',
200+
parse_queue_reason, result):
201+
in_queue_jobs = create_jobs
202+
jobs_id = []
203+
mocker.patch('autosubmit.platforms.platform.Platform.add_job_to_log_recover', return_value = True)
204+
for job in in_queue_jobs:
205+
job.platform = pjm_platform
206+
jobs_id.append(job.id)
207+
if 'WAITING' in parse_queue_reason:
208+
job.hold = True
209+
mocker.patch('autosubmit.platforms.pjmplatform.PJMPlatform.send_command', return_value = True)
210+
mocker.patch('autosubmit.platforms.pjmplatform.PJMPlatform.parse_queue_reason', return_value = parse_queue_reason)
211+
pjm_platform.get_queue_status(in_queue_jobs, jobs_id, as_conf)
212+
assert result == in_queue_jobs[0].new_status
213+

0 commit comments

Comments
 (0)