Coverage for tests/test_ingest.py : 53%

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 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 # DecamRawIngestTask ingests every detector in each raw file, so we
48 # only have to specify one file here, but should get two dataIds
49 # in the output repo.
50 self.file = os.path.join(testDataDirectory, "rawData", "raw", "raw.fits")
51 self.dataIds = [dict(instrument="DECam", exposure=229388, detector=25),
52 dict(instrument="DECam", exposure=229388, detector=1)]
53 self.RawIngestTask = lsst.obs.decam.DecamRawIngestTask
55 super().setUp()
56 self.visits = {
57 DataCoordinate.standardize(
58 instrument="DECam",
59 visit=229388,
60 universe=self.butler.registry.dimensions
61 ): [
62 DataCoordinate.standardize(
63 instrument="DECam",
64 exposure=229388,
65 universe=self.butler.registry.dimensions
66 )
67 ]
68 }
71@unittest.skipIf(testDataDirectory is None, "testdata_decam must be set up")
72class DecamIngestFullFileTestCase(IngestTestBase, lsst.utils.tests.TestCase):
73 """Test ingesting a file that contains all "normal" DECam HDUs.
74 """
75 # No need to test writeCuratedCalibrations again
76 curatedCalibrationDatasetTypes = None
78 def setUp(self):
79 self.ingestDir = os.path.dirname(__file__)
80 self.instrument = lsst.obs.decam.DarkEnergyCamera()
81 # DecamRawIngestTask ingests every detector in each raw file, so we
82 # only have to specify one file here, but should get many dataIds
83 # in the output repo.
84 self.file = os.path.join(testDataDirectory, "rawData", "raw",
85 "c4d_150227_012718_ori-stripped.fits.fz")
86 self.dataIds = [{"instrument": "DECam", "exposure": 415282, "detector": i} for i in range(1, 63)]
87 self.RawIngestTask = lsst.obs.decam.DecamRawIngestTask
89 super().setUp()
90 self.visits = {
91 DataCoordinate.standardize(
92 instrument="DECam",
93 visit=415282,
94 universe=self.butler.registry.dimensions
95 ): [
96 DataCoordinate.standardize(
97 instrument="DECam",
98 exposure=415282,
99 universe=self.butler.registry.dimensions
100 )
101 ]
102 }
105@unittest.skipIf(testDataDirectory is None, "testdata_decam must be set up")
106class DecamIngestShuffledFullFileTestCase(IngestTestBase, lsst.utils.tests.TestCase):
107 """Test ingesting a file that contains all detectors in a random order.
108 """
109 # No need to test writeCuratedCalibrations again
110 curatedCalibrationDatasetTypes = None
112 def setUp(self):
113 self.ingestDir = os.path.dirname(__file__)
114 self.instrument = lsst.obs.decam.DarkEnergyCamera()
115 # DecamRawIngestTask ingests every detector in each raw file, so we
116 # only have to specify one file here, but should get many dataIds
117 # in the output repo.
118 self.file = os.path.join(testDataDirectory, "rawData", "raw",
119 "c4d_150227_012718_ori-stripped-shuffled.fits.fz")
120 self.dataIds = [{"instrument": "DECam", "exposure": 415282, "detector": i} for i in range(1, 63)]
121 self.RawIngestTask = lsst.obs.decam.DecamRawIngestTask
123 super().setUp()
124 self.visits = {
125 DataCoordinate.standardize(
126 instrument="DECam",
127 visit=415282,
128 universe=self.butler.registry.dimensions
129 ): [
130 DataCoordinate.standardize(
131 instrument="DECam",
132 exposure=415282,
133 universe=self.butler.registry.dimensions
134 )
135 ]
136 }
139def setup_module(module):
140 lsst.utils.tests.init()
143if __name__ == "__main__": 143 ↛ 144line 143 didn't jump to line 144, because the condition on line 143 was never true
144 lsst.utils.tests.init()
145 unittest.main()