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")