Coverage for tests/test_configApdbLoader.py : 23%

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 verify.
2#
3# Developed for the LSST Data Management System.
4# This product includes software developed by the LSST Project
5# (https://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 <https://www.gnu.org/licenses/>.
22import unittest
24import lsst.utils.tests
25from lsst.pex.config import Config, Field, ConfigField, ConfigChoiceField, \
26 RegistryField, Registry, ConfigurableField, ConfigurableInstance, \
27 ConfigDictField
28from lsst.dax.apdb import Apdb, ApdbConfig
30from lsst.verify.tasks import ConfigApdbLoader
33class ConfigApdbLoaderTestSuite(lsst.utils.tests.TestCase):
35 @staticmethod
36 def _dummyRegistry():
37 class DummyConfigurable:
38 ConfigClass = Config
39 registry = Registry()
40 registry.register("foo", DummyConfigurable)
41 registry.register("bar", Apdb, ConfigClass=ApdbConfig)
42 return registry
44 @staticmethod
45 def _dummyApdbConfig():
46 config = ApdbConfig()
47 config.db_url = "sqlite://" # in-memory DB
48 config.isolation_level = "READ_UNCOMMITTED"
49 return config
51 def setUp(self):
52 self.task = ConfigApdbLoader()
54 def testNoConfig(self):
55 result = self.task.run(None)
56 self.assertIsNone(result.apdb)
58 def testEmptyConfig(self):
59 result = self.task.run(Config())
60 self.assertIsNone(result.apdb)
62 def testSelfConfig(self):
63 result = self.task.run(self._dummyApdbConfig())
64 self.assertIsInstance(result.apdb, Apdb)
66 def testConfigChoiceFieldUnSelected(self):
67 typemap = {"foo": Config, "bar": ApdbConfig}
69 class TestConfig(Config):
70 field = ConfigChoiceField(typemap=typemap, doc="")
72 config = TestConfig()
73 config.field = "foo"
74 result = self.task.run(config)
75 self.assertIsNone(result.apdb)
77 def testConfigChoiceFieldSelected(self):
78 typemap = {"foo": Config, "bar": ApdbConfig}
80 class TestConfig(Config):
81 field = ConfigChoiceField(typemap=typemap, doc="")
83 config = TestConfig()
84 config.field = "bar"
85 config.field["bar"] = self._dummyApdbConfig()
86 result = self.task.run(config)
87 self.assertIsInstance(result.apdb, Apdb)
89 def testConfigChoiceFieldMulti(self):
90 typemap = {"foo": Config, "bar": ApdbConfig}
92 class TestConfig(Config):
93 field = ConfigChoiceField(typemap=typemap, doc="", multi=True)
95 config = TestConfig()
96 config.field = {"bar", "foo"}
97 config.field["bar"] = self._dummyApdbConfig()
98 result = self.task.run(config)
99 self.assertIsInstance(result.apdb, Apdb)
101 def testRegistryFieldUnSelected(self):
102 registry = self._dummyRegistry()
104 class TestConfig(Config):
105 field = RegistryField(registry=registry, doc="")
107 config = TestConfig()
108 config.field = "foo"
109 result = self.task.run(config)
110 self.assertIsNone(result.apdb)
112 def testRegistryFieldSelected(self):
113 registry = self._dummyRegistry()
115 class TestConfig(Config):
116 field = RegistryField(registry=registry, doc="")
118 config = TestConfig()
119 config.field = "bar"
120 config.field["bar"] = self._dummyApdbConfig()
121 result = self.task.run(config)
122 self.assertIsInstance(result.apdb, Apdb)
124 def testRegistryFieldMulti(self):
125 registry = self._dummyRegistry()
127 class TestConfig(Config):
128 field = RegistryField(registry=registry, doc="", multi=True)
130 config = TestConfig()
131 config.field = {"bar", "foo"}
132 config.field["bar"] = self._dummyApdbConfig()
133 result = self.task.run(config)
134 self.assertIsInstance(result.apdb, Apdb)
136 def testConfigField(self):
137 class TestConfig(Config):
138 field = ConfigField(dtype=ApdbConfig,
139 default=self._dummyApdbConfig(), doc="")
141 result = self.task.run(TestConfig())
142 self.assertIsInstance(result.apdb, Apdb)
144 def testConfigurableField(self):
145 class TestConfig(Config):
146 field = ConfigurableField(target=Apdb, ConfigClass=ApdbConfig,
147 doc="")
149 config = TestConfig()
150 config.field = self._dummyApdbConfig()
151 self.assertIsInstance(config.field, ConfigurableInstance)
152 result = self.task.run(config)
153 self.assertIsInstance(result.apdb, Apdb)
155 def testConfigDictFieldUnSelected(self):
156 class TestConfig(Config):
157 field = ConfigDictField(keytype=int, itemtype=ApdbConfig, doc="")
159 result = self.task.run(TestConfig())
160 self.assertIsNone(result.apdb)
162 def testConfigDictFieldSelected(self):
163 class TestConfig(Config):
164 field = ConfigDictField(keytype=int, itemtype=ApdbConfig, doc="")
166 config = TestConfig()
167 config.field = {42: self._dummyApdbConfig()}
168 result = self.task.run(config)
169 self.assertIsInstance(result.apdb, Apdb)
171 def testSiblingConfigs(self):
172 class TestConfig(Config):
173 field1 = Field(dtype=int, doc="")
174 field2 = ConfigField(dtype=ApdbConfig,
175 default=self._dummyApdbConfig(), doc="")
176 field3 = Field(dtype=str, doc="")
178 result = self.task.run(TestConfig())
179 self.assertIsInstance(result.apdb, Apdb)
181 def testNestedConfigs(self):
182 class InnerConfig(Config):
183 field = ConfigurableField(target=Apdb,
184 ConfigClass=ApdbConfig, doc="")
186 class TestConfig(Config):
187 field = ConfigField(dtype=InnerConfig, doc="")
189 config = TestConfig()
190 config.field.field = self._dummyApdbConfig()
191 self.assertIsInstance(config.field.field, ConfigurableInstance)
192 result = self.task.run(config)
193 self.assertIsInstance(result.apdb, Apdb)
196class MemoryTester(lsst.utils.tests.MemoryTestCase):
197 pass
200def setup_module(module):
201 lsst.utils.tests.init()
204if __name__ == "__main__": 204 ↛ 205line 204 didn't jump to line 205, because the condition on line 204 was never true
205 lsst.utils.tests.init()
206 unittest.main()