Coverage for tests / test_sites.py: 22%
19 statements
« prev ^ index » next coverage.py v7.13.1, created at 2026-01-20 01:46 -0800
« prev ^ index » next coverage.py v7.13.1, created at 2026-01-20 01:46 -0800
1# This file is part of ctrl_bps_parsl.
2#
3# Developed for the LSST Data Management System.
4# This product includes software developed by the LSST Project
5# (https://www.lsst.org) and the LSST DESC (https://www.lsstdesc.org/).
6# See the COPYRIGHT file at the top-level directory of this distribution
7# for details of code ownership.
8#
9# This software is dual licensed under the GNU General Public License and also
10# under a 3-clause BSD license. Recipients may choose which of these licenses
11# to use; please see the files gpl-3.0.txt and/or bsd_license.txt,
12# respectively. If you choose the GPL option then the following text applies
13# (but note that there is still no warranty even if you opt for BSD instead):
14#
15# This program is free software: you can redistribute it and/or modify
16# it under the terms of the GNU General Public License as published by
17# the Free Software Foundation, either version 3 of the License, or
18# (at your option) any later version.
19#
20# This program is distributed in the hope that it will be useful,
21# but WITHOUT ANY WARRANTY; without even the implied warranty of
22# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
23# GNU General Public License for more details.
24#
25# You should have received a copy of the GNU General Public License
26# along with this program. If not, see <https://www.gnu.org/licenses/>.
29import platform
31from parsl.executors import HighThroughputExecutor, WorkQueueExecutor
33from lsst.ctrl.bps import BpsConfig
34from lsst.ctrl.bps.parsl.sites import Ccin2p3, Local, LocalSrunWorkQueue, Slurm, Torque
37def testSiteResourceLists():
38 """Test compute site resource lists."""
39 # Provide a minimal config that allows compute site classes to be created.
40 config = BpsConfig(
41 {
42 "submitPath": ".",
43 "operator": "operator",
44 "computeSite": "local",
45 "site": {
46 "local": {
47 "class": "lsst.ctrl.bps.parsl.sites.Local",
48 "cores": 1,
49 "nodes": 1,
50 "walltime": "00:01:00",
51 }
52 },
53 }
54 )
56 expected_resources = {
57 HighThroughputExecutor: {"priority"},
58 WorkQueueExecutor: {"memory", "cores", "disk", "running_time_min", "priority"},
59 }
61 site_classes = [Local, Slurm, Torque]
62 if platform.machine() in ("aarch64", "x86_64"):
63 # If running on a supported architecture, then add Ccin2p3 site class.
64 site_classes.append(Ccin2p3)
66 try:
67 # If the ndcctools module is available, then add WorkQueue
68 # subclasses to the site_classes list.
69 import ndcctools # noqa F401
71 site_classes.append(LocalSrunWorkQueue)
72 except ImportError:
73 pass
75 for site_class in site_classes:
76 compute_site = site_class(config)
77 executor_type = type(compute_site.get_executors()[0])
78 assert expected_resources[executor_type] == set(compute_site.resource_list)