Esempio n. 1
0
    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)
Esempio n. 2
0
    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"}})
Esempio n. 3
0
    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"}})
Esempio n. 4
0
    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,
            })
Esempio n. 5
0
    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)
Esempio n. 6
0
    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}],
            })
Esempio n. 7
0
 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})
Esempio n. 8
0
    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"]))
Esempio n. 9
0
    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"]))))
Esempio n. 10
0
    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"]]
        )
Esempio n. 11
0
    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)))