def METHOD_NAME(self):
    op = OpArrayPiper(graph=Graph())
    inputData = numpy.indices((100, 100)).sum(0)
    op.Input.setValue(inputData)
    results = numpy.zeros((100, 100), dtype=numpy.int32)
    resultslock = threading.Lock()
    resultsCount = [0]
    def handleResult(roi, result):
        acquired = resultslock.acquire(False)
        assert acquired, "resultslock is contested! Access to callback is supposed to be automatically serialized."
        results[roiToSlice(*roi)] = result
        logger.debug("Got result for {}".format(roi))
        resultslock.release()
        resultsCount[0] += 1
    progressList = []
    def handleProgress(progress):
        progressList.append(progress)
        logger.debug("Progress update: {}".format(progress))
    totalVolume = numpy.prod(inputData.shape)
    batch = BigRequestStreamer(op.Output, [(0, 0), (100, 100)], (10, 10))
    batch.resultSignal.subscribe(handleResult)
    batch.progressSignal.subscribe(handleProgress)
    batch.execute()
    logger.debug("Got {} results".format(resultsCount[0]))
    assert (results == inputData).all()
    # Progress reporting MUST start with 0 and end with 100
    assert progressList[0] == 0, "Invalid progress reporting."
    assert progressList[-1] == 100, "Invalid progress reporting."
    # There should be some intermediate progress reporting, but exactly how much is unspecified.
    assert len(progressList) >= 10
    logger.debug("FINISHED")