def test_callback(self): self.callback_called = False self.py_event = PyEvent() def callback(event, status): self.callback_called = True self.py_event.set() event = UserEvent(ctx) queue = Queue(ctx, ctx.devices[0]) queue.enqueue_wait_for_events(event) event2 = queue.marker() event2.add_callback(callback) self.assertEqual(event.status, Event.SUBMITTED) self.assertEqual(event2.status, Event.QUEUED) self.assertFalse(self.callback_called) event.complete() self.assertEqual(event.status, Event.COMPLETE) event2.wait() self.assertEqual(event2.status, Event.COMPLETE) event_is_set = self.py_event.wait(2) self.assertTrue(event_is_set, 'timed out waiting for callback') self.assertTrue(self.callback_called)
def test_wait(self): event = UserEvent(ctx) queue = Queue(ctx, ctx.devices[0]) queue.enqueue_wait_for_events(event) event2 = queue.marker() self.assertEqual(event.status, Event.SUBMITTED) self.assertEqual(event2.status, Event.QUEUED) event.complete() self.assertEqual(event.status, Event.COMPLETE) event2.wait() self.assertEqual(event2.status, Event.COMPLETE)
def test_enqueue_native_kernel_refcount(self): if not ctx.devices[0].has_native_kernel: self.skipTest("Device does not support native kernels") queue = Queue(ctx, ctx.devices[0]) def incfoo(): pass self.assertEqual(sys.getrefcount(incfoo), 2) e = cl.UserEvent(ctx) queue.enqueue_wait_for_events(e) queue.enqueue_native_kernel(incfoo) self.assertEqual(sys.getrefcount(incfoo), 3) e.complete() queue.finish() self.assertEqual(sys.getrefcount(incfoo), 2)