def testMakeQuantumCorruptedDataId(self): task = VisitTask() dataId = butlerTests.expandUniqueId(self.butler, {"visit": 102}) self._makeVisitTestData(dataId) with self.assertRaises(ValueError): # fourth argument should be a mapping keyed by component name makeQuantum(task, self.butler, dataId, dataId)
def testMakeQuantumMissingDataId(self): task = VisitTask() dataId = butlerTests.expandUniqueId(self.butler, {"visit": 102}) self._makeVisitTestData(dataId) with self.assertRaises(ValueError): makeQuantum(task, self.butler, dataId, {key: dataId for key in {"a", "outA", "outB"}}) with self.assertRaises(ValueError): makeQuantum(task, self.butler, dataId, {key: dataId for key in {"a", "b", "outB"}})
def testMakeQuantumNoSuchDatatype(self): config = VisitConfig() config.connections.a = "Visit" task = VisitTask(config=config) dataId = butlerTests.expandUniqueId(self.butler, {"visit": 102}) self._makeVisitTestData(dataId) with self.assertRaises(ValueError): makeQuantum(task, self.butler, dataId, {key: dataId for key in {"a", "b", "outA", "outB"}})
def testMakeQuantumInvalidDimension(self): config = VisitConfig() config.connections.a = "PatchA" task = VisitTask(config=config) dataIdV = butlerTests.expandUniqueId(self.butler, {"visit": 102}) dataIdP = butlerTests.expandUniqueId(self.butler, {"patch": 0}) inA = [1, 2, 3] inB = [4, 0, 1] self.butler.put(butlerTests.MetricsExample(data=inA), "VisitA", dataIdV) self.butler.put(butlerTests.MetricsExample(data=inA), "PatchA", dataIdP) self.butler.put(butlerTests.MetricsExample(data=inB), "VisitB", dataIdV) with self.assertRaises(ValueError): makeQuantum(task, self.butler, dataIdV, { "a": dataIdP, "b": dataIdV, "outA": dataIdV, "outB": dataIdV, })
def testRegisterMetricsExample(self): id1 = {"instrument": "notACam"} id2 = expandUniqueId(self.butler, {"visit": 101}) data = MetricsExample(summary={"answer": 42, "question": "unknown"}) self.butler.put(data, "DataType1", id1) self.assertEqual(self.butler.get("DataType1", id1), data) self.butler.put(data, "DataType2", id2) self.assertEqual(self.butler.get("DataType2", id2), data) self.assertEqual(self.butler.get("DataType2.summary", id2), data.summary)
def testMakeQuantumExtraMultiple(self): task = PatchTask() dataId = butlerTests.expandUniqueId(self.butler, {"tract": 42}) self._makePatchTestData(dataId) with self.assertRaises(ValueError): makeQuantum(task, self.butler, dataId, { "a": [dict(dataId, patch=patch) for patch in {0, 1}], "b": [dataId], "out": [dict(dataId, patch=patch) for patch in {0, 1}], })
def testExpandUniqueId(self): self.assertEqual( dict(expandUniqueId(self.butler, {"instrument": "notACam"})), {"instrument": "notACam"}) self.assertIn(dict(expandUniqueId(self.butler, {"visit": 101})), [{ "instrument": "notACam", "visit": 101 }, { "instrument": "dummyCam", "visit": 101 }]) self.assertIn(dict(expandUniqueId(self.butler, {"detector": 5})), [{ "instrument": "notACam", "detector": 5 }, { "instrument": "dummyCam", "detector": 5 }]) self.assertIn( dict(expandUniqueId(self.butler, {"physical_filter": "k2020"})), [{ "instrument": "notACam", "physical_filter": "k2020" }, { "instrument": "notACam", "physical_filter": "k2020" }]) with self.assertRaises(ValueError): expandUniqueId(self.butler, {"tract": 42})
def testRunTestQuantumVisitMockRun(self): task = VisitTask() dataId = butlerTests.expandUniqueId(self.butler, {"visit": 102}) data = self._makeVisitTestData(dataId) quantum = makeQuantum(task, self.butler, dataId, {key: dataId for key in {"a", "b", "outA", "outB"}}) run = runTestQuantum(task, self.butler, quantum, mockRun=True) # Can we use the mock to verify that task.run got called with the # correct inputs? run.assert_called_once_with(a=butlerTests.MetricsExample(data=data["VisitA"]), b=butlerTests.MetricsExample(data=data["VisitB"]))
def testRunTestQuantumVisitWithRun(self): task = VisitTask() dataId = butlerTests.expandUniqueId(self.butler, {"visit": 102}) data = self._makeVisitTestData(dataId) quantum = makeQuantum(task, self.butler, dataId, {key: dataId for key in {"a", "b", "outA", "outB"}}) runTestQuantum(task, self.butler, quantum, mockRun=False) # Can we use runTestQuantum to verify that task.run got called with # correct inputs/outputs? self.assertTrue(self.butler.datasetExists("VisitOutA", dataId)) self.assertEqual(self.butler.get("VisitOutA", dataId), butlerTests.MetricsExample(data=(data["VisitA"] + data["VisitB"]))) self.assertTrue(self.butler.datasetExists("VisitOutB", dataId)) self.assertEqual(self.butler.get("VisitOutB", dataId), butlerTests.MetricsExample(data=(data["VisitA"] * max(data["VisitB"]))))
def testRunTestQuantumPatchOptionalInput(self): config = PatchConfig() config.doUseB = False task = PatchTask(config=config) dataId = butlerTests.expandUniqueId(self.butler, {"tract": 42}) data = self._makePatchTestData(dataId) quantum = makeQuantum(task, self.butler, dataId, { # Use lists, not sets, to ensure order agrees with test assertion "a": [dataset[0] for dataset in data["PatchA"]], "out": [dataset[0] for dataset in data["PatchA"]], }) run = runTestQuantum(task, self.butler, quantum, mockRun=True) # Can we use the mock to verify that task.run got called with the # correct inputs? run.assert_called_once_with( a=[butlerTests.MetricsExample(data=dataset[1]) for dataset in data["PatchA"]] )
def testRunTestQuantumPatchWithRun(self): task = PatchTask() dataId = butlerTests.expandUniqueId(self.butler, {"tract": 42}) data = self._makePatchTestData(dataId) quantum = makeQuantum(task, self.butler, dataId, { "a": [dataset[0] for dataset in data["PatchA"]], "b": dataId, "out": [dataset[0] for dataset in data["PatchA"]], }) runTestQuantum(task, self.butler, quantum, mockRun=False) # Can we use runTestQuantum to verify that task.run got called with # correct inputs/outputs? inB = data["PatchB"][0][1] for dataset in data["PatchA"]: patchId = dataset[0] self.assertTrue(self.butler.datasetExists("PatchOut", patchId)) self.assertEqual(self.butler.get("PatchOut", patchId), butlerTests.MetricsExample(data=(dataset[1] + inB)))