• Home
  • Features
  • Pricing
  • Docs
  • Announcements
  • Sign In

Clinical-Genomics / trailblazer / 10403778022

15 Aug 2024 12:29PM UTC coverage: 86.292%. First build
10403778022

Pull #463

github

seallard
Add integration test
Pull Request #463: Clean up tower and slurm interactions

156 of 221 new or added lines in 20 files covered. (70.59%)

2027 of 2349 relevant lines covered (86.29%)

0.86 hits per line

Source File
Press 'n' to go to next uncovered line, 'b' for previous

53.33
/trailblazer/services/slurm/slurm_api_service/slurm_api_service.py
1
from trailblazer.clients.slurm_api_client.dto.job_response import SlurmJobResponse
1✔
2
from trailblazer.clients.slurm_api_client.slurm_api_client import SlurmAPIClient
1✔
3
from trailblazer.services.slurm.dtos import SlurmJobInfo
1✔
4
from trailblazer.services.slurm.slurm_api_service.mappers import create_job
1✔
5
from trailblazer.services.slurm.slurm_api_service.utils import create_job_info_dto
1✔
6
from trailblazer.services.slurm.slurm_service import SlurmService
1✔
7
from trailblazer.services.slurm.utils import get_slurm_job_ids
1✔
8
from trailblazer.store.models import Analysis, Job
1✔
9
from trailblazer.store.store import Store
1✔
10

11

12
class SlurmAPIService(SlurmService):
1✔
13
    def __init__(self, client: SlurmAPIClient, store: Store):
1✔
14
        self.client = client
1✔
15
        self.store = store
1✔
16

17
    def get_job(self, job_id: int) -> SlurmJobInfo:
1✔
18
        job_response: SlurmJobResponse = self.client.get_job(job_id)
×
19
        return create_job_info_dto(job_response)
×
20

21
    def update_jobs(self, analysis_id: int) -> None:
1✔
NEW
22
        analysis: Analysis = self.store.get_analysis_with_id(analysis_id)
×
NEW
23
        job_ids: list[int] = get_slurm_job_ids(analysis.config_path)
×
24

NEW
25
        dtos: list[SlurmJobInfo] = []
×
26
        for job_id in job_ids:
×
NEW
27
            if job := self.get_job(job_id):
×
NEW
28
                dtos.append(job)
×
29

NEW
30
        jobs: list[Job] = [create_job(dto) for dto in dtos]
×
NEW
31
        self.store.replace_jobs(analysis_id=analysis_id, jobs=jobs)
×
32

33
    def cancel_jobs(self, analysis_id: int) -> None:
1✔
NEW
34
        analysis: Analysis = self.store.get_analysis_with_id(analysis_id)
×
NEW
35
        jobs: list[Job] = analysis.jobs
×
36

NEW
37
        for job in jobs:
×
NEW
38
            self.client.cancel_job(job.slurm_id)
×
STATUS · Troubleshooting · Open an Issue · Sales · Support · CAREERS · ENTERPRISE · START FREE · SCHEDULE DEMO
ANNOUNCEMENTS · TWITTER · TOS & SLA · Supported CI Services · What's a CI service? · Automated Testing

© 2025 Coveralls, Inc