HBASE-14758 Add UT case for unchecked error/exception thrown in AsyncProcess#sendMultiAction (Yu Li)
This commit is contained in:
parent
ceddec9141
commit
cfc5348b5e
|
@ -29,7 +29,10 @@ import java.util.List;
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
import java.util.Set;
|
import java.util.Set;
|
||||||
import java.util.TreeSet;
|
import java.util.TreeSet;
|
||||||
|
import java.util.concurrent.BlockingQueue;
|
||||||
import java.util.concurrent.ExecutorService;
|
import java.util.concurrent.ExecutorService;
|
||||||
|
import java.util.concurrent.Future;
|
||||||
|
import java.util.concurrent.LinkedBlockingQueue;
|
||||||
import java.util.concurrent.RejectedExecutionException;
|
import java.util.concurrent.RejectedExecutionException;
|
||||||
import java.util.concurrent.SynchronousQueue;
|
import java.util.concurrent.SynchronousQueue;
|
||||||
import java.util.concurrent.ThreadFactory;
|
import java.util.concurrent.ThreadFactory;
|
||||||
|
@ -1049,4 +1052,41 @@ public class TestAsyncProcess {
|
||||||
|
|
||||||
return p;
|
return p;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static class MyThreadPoolExecutor extends ThreadPoolExecutor {
|
||||||
|
public MyThreadPoolExecutor(int coreThreads, int maxThreads, long keepAliveTime,
|
||||||
|
TimeUnit timeunit, BlockingQueue<Runnable> blockingqueue) {
|
||||||
|
super(coreThreads, maxThreads, keepAliveTime, timeunit, blockingqueue);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public Future submit(Runnable runnable) {
|
||||||
|
throw new OutOfMemoryError("OutOfMemory error thrown by means");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
static class AsyncProcessForThrowableCheck extends AsyncProcess {
|
||||||
|
public AsyncProcessForThrowableCheck(ClusterConnection hc, Configuration conf,
|
||||||
|
ExecutorService pool) {
|
||||||
|
super(hc, conf, pool, new RpcRetryingCallerFactory(conf), false, new RpcControllerFactory(
|
||||||
|
conf));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void testUncheckedException() throws Exception {
|
||||||
|
// Test the case pool.submit throws unchecked exception
|
||||||
|
ClusterConnection hc = createHConnection();
|
||||||
|
MyThreadPoolExecutor myPool =
|
||||||
|
new MyThreadPoolExecutor(1, 20, 60, TimeUnit.SECONDS,
|
||||||
|
new LinkedBlockingQueue<Runnable>(200));
|
||||||
|
AsyncProcess ap = new AsyncProcessForThrowableCheck(hc, conf, myPool);
|
||||||
|
|
||||||
|
List<Put> puts = new ArrayList<Put>();
|
||||||
|
puts.add(createPut(1, true));
|
||||||
|
|
||||||
|
ap.submit(DUMMY_TABLE, puts, false, null, false);
|
||||||
|
Assert.assertTrue(puts.isEmpty());
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue