Coverage for tests/test_ingest.py : 49%

Hot-keys on this page
r m x p toggle line displays
j k next/prev highlighted chunk
0 (zero) top of page
1 (one) first highlighted chunk
1# This file is part of obs_decam.
2#
3# Developed for the LSST Data Management System.
4# This product includes software developed by the LSST Project
5# (http://www.lsst.org).
6# See the COPYRIGHT file at the top-level directory of this distribution
7# for details of code ownership.
8#
9# This program is free software: you can redistribute it and/or modify
10# it under the terms of the GNU General Public License as published by
11# the Free Software Foundation, either version 3 of the License, or
12# (at your option) any later version.
13#
14# This program is distributed in the hope that it will be useful,
15# but WITHOUT ANY WARRANTY; without even the implied warranty of
16# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
17# GNU General Public License for more details.
18#
19# You should have received a copy of the GNU General Public License
20# along with this program. If not, see <http://www.gnu.org/licenses/>.
22"""Unit tests for gen3 DECam raw data ingest.
23"""
25import unittest
26import os
27import lsst.utils.tests
29from lsst.daf.butler import Butler, DataCoordinate
30from lsst.obs.base.ingest_tests import IngestTestBase
31import lsst.obs.decam
33testDataPackage = "testdata_decam"
34try:
35 testDataDirectory = lsst.utils.getPackageDir(testDataPackage)
36except LookupError:
37 testDataDirectory = None
40@unittest.skipIf(testDataDirectory is None, "testdata_decam must be set up")
41class DecamIngestTestCase(IngestTestBase, lsst.utils.tests.TestCase):
42 curatedCalibrationDatasetTypes = ("camera", "defects")
44 def setUp(self):
45 self.ingestDir = os.path.dirname(__file__)
46 self.instrument = "lsst.obs.decam.DarkEnergyCamera"
47 self.instrumentName = "DECam"
48 # DecamRawIngestTask ingests every detector in each raw file, so we
49 # only have to specify one file here, but should get two dataIds
50 # in the output repo.
51 self.file = os.path.join(testDataDirectory, "rawData", "raw", "raw.fits")
52 self.dataIds = [dict(instrument="DECam", exposure=229388, detector=25),
53 dict(instrument="DECam", exposure=229388, detector=1)]
54 self.RawIngestTask = "lsst.obs.decam.DecamRawIngestTask"
56 super().setUp()
57 butler = Butler(self.root, run=self.outputRun)
58 self.visits = {
59 DataCoordinate.standardize(
60 instrument="DECam",
61 visit=229388,
62 universe=butler.registry.dimensions
63 ): [
64 DataCoordinate.standardize(
65 instrument="DECam",
66 exposure=229388,
67 universe=butler.registry.dimensions
68 )
69 ]
70 }
73@unittest.skipIf(testDataDirectory is None, "testdata_decam must be set up")
74class DecamIngestFullFileTestCase(IngestTestBase, lsst.utils.tests.TestCase):
75 """Test ingesting a file that contains all "normal" DECam HDUs.
76 """
77 # No need to test writeCuratedCalibrations again
78 curatedCalibrationDatasetTypes = None
80 def setUp(self):
81 self.ingestDir = os.path.dirname(__file__)
82 self.instrument = "lsst.obs.decam.DarkEnergyCamera"
83 self.instrumentName = "DECam"
84 # DecamRawIngestTask ingests every detector in each raw file, so we
85 # only have to specify one file here, but should get many dataIds
86 # in the output repo.
87 self.file = os.path.join(testDataDirectory, "rawData", "raw",
88 "c4d_150227_012718_ori-stripped.fits.fz")
89 self.dataIds = [{"instrument": "DECam", "exposure": 415282, "detector": i} for i in range(1, 63)]
90 self.RawIngestTask = "lsst.obs.decam.DecamRawIngestTask"
92 super().setUp()
93 butler = Butler(self.root, run=self.outputRun)
94 self.visits = {
95 DataCoordinate.standardize(
96 instrument="DECam",
97 visit=415282,
98 universe=butler.registry.dimensions
99 ): [
100 DataCoordinate.standardize(
101 instrument="DECam",
102 exposure=415282,
103 universe=butler.registry.dimensions
104 )
105 ]
106 }
109@unittest.skipIf(testDataDirectory is None, "testdata_decam must be set up")
110class DecamIngestShuffledFullFileTestCase(IngestTestBase, lsst.utils.tests.TestCase):
111 """Test ingesting a file that contains all detectors in a random order.
112 """
113 # No need to test writeCuratedCalibrations again
114 curatedCalibrationDatasetTypes = None
116 def setUp(self):
117 self.ingestDir = os.path.dirname(__file__)
118 self.instrument = "lsst.obs.decam.DarkEnergyCamera"
119 self.instrumentName = "DECam"
120 # DecamRawIngestTask ingests every detector in each raw file, so we
121 # only have to specify one file here, but should get many dataIds
122 # in the output repo.
123 self.file = os.path.join(testDataDirectory, "rawData", "raw",
124 "c4d_150227_012718_ori-stripped-shuffled.fits.fz")
125 self.dataIds = [{"instrument": "DECam", "exposure": 415282, "detector": i} for i in range(1, 63)]
126 self.RawIngestTask = "lsst.obs.decam.DecamRawIngestTask"
128 super().setUp()
129 butler = Butler(self.root, run=self.outputRun)
130 self.visits = {
131 DataCoordinate.standardize(
132 instrument="DECam",
133 visit=415282,
134 universe=butler.registry.dimensions
135 ): [
136 DataCoordinate.standardize(
137 instrument="DECam",
138 exposure=415282,
139 universe=butler.registry.dimensions
140 )
141 ]
142 }
145def setup_module(module):
146 lsst.utils.tests.init()
149if __name__ == "__main__": 149 ↛ 150line 149 didn't jump to line 150, because the condition on line 149 was never true
150 lsst.utils.tests.init()
151 unittest.main()