def test_basic(self): def someWork(): time.sleep(0.001) #print "producer finished" def callback(s): pass def test(s): req = Request(someWork) req.notify(callback) req.wait() time.sleep(0.001) print s return s req = Request(test, s="hallo !") req.notify(callback) assert req.wait() == "hallo !" requests = [] for i in range(10): req = Request(test, s="hallo %d" % i) requests.append(req) for r in requests: r.wait()
def test(s): req = Request(someWork) req.notify(callback) req.wait() time.sleep(0.001) print s return s
def test_basic(self): def someWork(): time.sleep(0.001) #print "producer finished" def callback(s): pass def test(s): req = Request(someWork) req.notify(callback) req.wait() time.sleep(0.001) print s return s req = Request( test, s = "hallo !") req.notify(callback) assert req.wait() == "hallo !" requests = [] for i in range(10): req = Request( test, s = "hallo %d" %i) requests.append(req) for r in requests: r.wait()
def test_pause_unpause(self): handlerCounter = [0] handlerLock = threading.Lock() def completionHandler( result, req ): handlerLock.acquire() handlerCounter[0] += 1 handlerLock.release() requestCounter = [0] requestLock = threading.Lock() allRequests = [] # This closure randomly chooses to either (a) return immediately or (b) fire off more work def someWork(depth, force=False, i=-1): #print 'depth=', depth, 'i=', i if depth > 0 and (force or random.random() > 0.8): requests = [] for i in range(10): req = Request(someWork, depth=depth-1, i=i) req.notify(completionHandler, req=req) requests.append(req) allRequests.append(req) requestLock.acquire() requestCounter[0] += 1 requestLock.release() for r in requests: r.wait() req = Request(someWork, depth=6, force=True) def blubb(req): pass req.notify(blubb) global_thread_pool.pause() req2 = Request(someWork, depth=6, force=True) req2.notify(blubb) global_thread_pool.unpause() assert req2.finished == False assert req.finished req.wait() # Handler should have been called once for each request we fired assert handlerCounter[0] == requestCounter[0] print "finished pause_unpause" for r in allRequests: assert r.finished print "waited for all subrequests"
def someWork(depth, force=False, i=0): #print 'depth=', depth, 'i=', i if depth > 0 and (force or random.random() > 0.5): requests = [] for i in range(maxBreadth): req = Request(someWork, depth=depth - 1, i=i) req.notify(writeToH5Py, index=(depth - 1, i), req=req) requests.append(req) for r in requests: r.wait()
def someWork(depth, force=False, i=0): #print 'depth=', depth, 'i=', i if depth > 0 and (force or random.random() > 0.5): requests = [] for i in range(maxBreadth): req = Request(someWork, depth=depth-1, i=i) req.notify(writeToH5Py, index=(depth-1, i), req=req) requests.append(req) for r in requests: r.wait()
def test_callWaitDuringCallback(self): """ When using request.notify(...) to handle request completions, the handler should be allowed to call request.wait(). Currently, this causes a hang somewhere in request.py. """ def handler(result, req): return req.wait() def workFn(): pass req = Request(workFn) req.notify(handler, req=req) req.wait()
def test_callWaitDuringCallback(self): """ When using request.notify(...) to handle request completions, the handler should be allowed to call request.wait(). Currently, this causes a hang somewhere in request.py. """ def handler(result, req): return req.wait() def workFn(): pass req = Request(workFn) req.notify( handler, req=req ) req.wait()
def someWork(depth, force=False, i=-1): #print 'depth=', depth, 'i=', i if depth > 0 and (force or random.random() > 0.8): requests = [] for i in range(10): req = Request(someWork, depth=depth - 1, i=i) req.notify(completionHandler, req=req) requests.append(req) allRequests.append(req) requestLock.acquire() requestCounter[0] += 1 requestLock.release() for r in requests: r.wait()
def someWork(depth, force=False, i=-1): #print 'depth=', depth, 'i=', i if depth > 0 and (force or random.random() > 0.8): requests = [] for i in range(10): req = Request(someWork, depth=depth-1, i=i) req.notify(completionHandler, req=req) requests.append(req) allRequests.append(req) requestLock.acquire() requestCounter[0] += 1 requestLock.release() for r in requests: r.wait()