use of alluxio.master.block.RegisterStreamObserver in project alluxio by Alluxio.
the class BlockMasterRegisterStreamIntegrationTest method workerRegisterBatchThrowsError.
@Test
public void workerRegisterBatchThrowsError() throws Exception {
// Hijack the block master so it throws errors
BrokenBlockMaster brokenBlockMaster = new BrokenBlockMaster(mMetricsMaster, mMasterContext, mClock, ExecutorServiceFactories.constantExecutorServiceFactory(mExecutorService), WorkerRegisterMode.ERROR_STREAM);
mBlockMaster = brokenBlockMaster;
mHandler = new BlockMasterWorkerServiceHandler(brokenBlockMaster);
long workerId = brokenBlockMaster.getWorkerId(NET_ADDRESS_1);
Queue<Throwable> errorQueue = new ConcurrentLinkedQueue<>();
RegisterStreamObserver streamOb = new RegisterStreamObserver(brokenBlockMaster, getErrorCapturingResponseObserver(errorQueue));
// Generate requests
List<RegisterWorkerPRequest> requestChunks = RegisterStreamTestUtils.generateRegisterStreamForWorker(workerId);
prepareBlocksOnMaster(requestChunks);
for (RegisterWorkerPRequest chunk : requestChunks) {
streamOb.onNext(chunk);
}
streamOb.onCompleted();
// All requests except the 1st one + onCompleted should receive an error
assertEquals(requestChunks.size() - 1 + 1, errorQueue.size());
// The BlockMaster is not throwing error this time
brokenBlockMaster.setCorrect();
verifyWorkerCanReregister(workerId, requestChunks, TIER_BLOCK_TOTAL);
}
use of alluxio.master.block.RegisterStreamObserver in project alluxio by Alluxio.
the class BlockMasterRegisterStreamIntegrationTest method workerRegisterStartThrowsError.
@Test
public void workerRegisterStartThrowsError() throws Exception {
// Hijack the block master so it throws errors
BrokenBlockMaster brokenBlockMaster = new BrokenBlockMaster(mMetricsMaster, mMasterContext, mClock, ExecutorServiceFactories.constantExecutorServiceFactory(mExecutorService), WorkerRegisterMode.ERROR_START);
mBlockMaster = brokenBlockMaster;
mHandler = new BlockMasterWorkerServiceHandler(brokenBlockMaster);
long workerId = brokenBlockMaster.getWorkerId(NET_ADDRESS_1);
Queue<Throwable> errorQueue = new ConcurrentLinkedQueue<>();
RegisterStreamObserver streamOb = new RegisterStreamObserver(brokenBlockMaster, getErrorCapturingResponseObserver(errorQueue));
// Generate requests
List<RegisterWorkerPRequest> requestChunks = RegisterStreamTestUtils.generateRegisterStreamForWorker(workerId);
prepareBlocksOnMaster(requestChunks);
for (RegisterWorkerPRequest chunk : requestChunks) {
streamOb.onNext(chunk);
}
streamOb.onCompleted();
// All requests + onCompleted should receive an error
assertEquals(requestChunks.size() + 1, errorQueue.size());
// The BlockMaster is not throwing error this time
brokenBlockMaster.setCorrect();
verifyWorkerCanReregister(workerId, requestChunks, TIER_BLOCK_TOTAL);
}
use of alluxio.master.block.RegisterStreamObserver in project alluxio by Alluxio.
the class BlockMasterRegisterStreamIntegrationTest method workerRegisterCompleteThrowsError.
@Test
public void workerRegisterCompleteThrowsError() throws Exception {
// Hijack the block master so it throws errors
BrokenBlockMaster brokenBlockMaster = new BrokenBlockMaster(mMetricsMaster, mMasterContext, mClock, ExecutorServiceFactories.constantExecutorServiceFactory(mExecutorService), WorkerRegisterMode.ERROR_COMPLETE);
mBlockMaster = brokenBlockMaster;
mHandler = new BlockMasterWorkerServiceHandler(brokenBlockMaster);
long workerId = brokenBlockMaster.getWorkerId(NET_ADDRESS_1);
Queue<Throwable> errorQueue = new ConcurrentLinkedQueue<>();
RegisterStreamObserver streamOb = new RegisterStreamObserver(brokenBlockMaster, getErrorCapturingResponseObserver(errorQueue));
// Generate requests
List<RegisterWorkerPRequest> requestChunks = RegisterStreamTestUtils.generateRegisterStreamForWorker(workerId);
prepareBlocksOnMaster(requestChunks);
for (RegisterWorkerPRequest chunk : requestChunks) {
streamOb.onNext(chunk);
}
streamOb.onCompleted();
// Only onCompleted should receive an error
assertEquals(1, errorQueue.size());
// The BlockMaster is not throwing error this time
brokenBlockMaster.setCorrect();
verifyWorkerCanReregister(workerId, requestChunks, TIER_BLOCK_TOTAL);
}
Aggregations