Source code for schrodinger.test.fakejob

import os
from unittest.mock import patch

from schrodinger.infra import mmjob
from schrodinger.job import jobcontrol
from schrodinger.Qt import QtCore

from . import mmshare_testfile


[docs]def get_fake_job(): return get_job(mmshare_testfile("job_test_files/isabel-0-42f280f5"))
[docs]def get_fake_running_job(): return get_job(mmshare_testfile("job_test_files/isabel-0-42f280f6"))
[docs]def get_job(filename): """ Return a job object from a text file. """ with patch('schrodinger.job.jobcontrol.Job.readAgain'): job = jobcontrol.Job(job_id=os.path.basename(filename)) with open(filename) as fh: job._cpp_job = mmjob.job_from_job_record_text(fh.read()) return job
[docs]class FakeJobDownloader(QtCore.QObject): """ Drop-in replacement for the JobDownloader class, immediately emits a signal indicating a successful download. """ downloadFinished = QtCore.pyqtSignal(str)
[docs] def __init__(self, jobid): super().__init__() self.output = ''
[docs] def download(self): self.downloadFinished.emit(self.output)
[docs]class FakeFailedJobDownloader(FakeJobDownloader): """ Like FakeJobDownloader, but emits its signal with a non-empty string, indicating a download failure. """ FAKE_OUTPUT = 'fake download failed'
[docs] def __init__(self, jobid): super().__init__(jobid) self.output = FakeFailedJobDownloader.FAKE_OUTPUT
[docs]class FakeJobLauncher(QtCore.QObject): """ Drop-in replacement for the JobLauncher class, immediately emits a signal indicating a successful download. """ # hack to provide class var to show last value last_job_cmd = None jobStarted = QtCore.pyqtSignal(jobcontrol.Job) jobLaunchFailed = QtCore.pyqtSignal(str)
[docs] def __init__(self, job_cmd): # set cls variable FakeJobLauncher.last_job_cmd = job_cmd super().__init__()
[docs] def launch(self): QtCore.QTimer.singleShot(0, self._launchFinished)
def _launchFinished(self): self.jobStarted.emit(get_fake_job())