Example #1
0
    def test_error_listener(self):

        evt = threading.Event()
        erroneous_drops = []
        class listener(object):
            def on_error(self, drop):
                erroneous_drops.append(drop.uid)
                if len(erroneous_drops) == 2: # both 'C' and 'B' failed already
                    evt.set()

        sessionId = 'lala'
        dm = NodeManager(useDLM=False, error_listener=listener())
        g = [{"oid":"A", "type":"plain", "storage": "memory"},
             {"oid":"B", "type":"app", "app":"test.manager.test_dm.ErroneousApp", "inputs": ["A"]},
             {"oid":"C", "type":"plain", "storage": "memory", "producers":["B"]}]
        dm.createSession(sessionId)
        dm.addGraphSpec(sessionId, g)
        dm.deploySession(sessionId, ["A"])

        self.assertTrue(evt.wait(10), "Didn't receive errors on time")