HADOOP-14681. Remove MockitoMaker class. Contributed by Andras Bokor.
This commit is contained in:
parent
218b1b33ff
commit
cca51e916b
@ -1,132 +0,0 @@
|
||||
/**
|
||||
* Licensed to the Apache Software Foundation (ASF) under one
|
||||
* or more contributor license agreements. See the NOTICE file
|
||||
* distributed with this work for additional information
|
||||
* regarding copyright ownership. The ASF licenses this file
|
||||
* to you under the Apache License, Version 2.0 (the
|
||||
* "License"); you may not use this file except in compliance
|
||||
* with the License. You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
package org.apache.hadoop.test;
|
||||
|
||||
import static org.mockito.Mockito.*;
|
||||
|
||||
/**
|
||||
* Helper class to create one-liner stubs, so that instead of: <pre>
|
||||
* SomeType someDescriptiveMock = mock(SomeType.class);
|
||||
* when(someDescriptiveMock.someMethod()).thenReturn(someValue);</pre>
|
||||
* <p>You can now do: <pre>
|
||||
* SomeType someDescriptiveMock = make(stub(SomeType.class)
|
||||
* .returning(someValue).from.someMethod());</pre>
|
||||
*/
|
||||
public class MockitoMaker {
|
||||
|
||||
/**
|
||||
* Create a mock object from a mocked method call.
|
||||
*
|
||||
* @param <T> type of mocked object
|
||||
* @param methodCall for mocked object
|
||||
* @return mocked object
|
||||
*/
|
||||
@SuppressWarnings("unchecked")
|
||||
public static <T> T make(Object methodCall) {
|
||||
StubBuilder<T> sb = StubBuilder.current();
|
||||
when(methodCall).thenReturn(sb.firstReturn, sb.laterReturns);
|
||||
return (T) StubBuilder.current().from;
|
||||
}
|
||||
|
||||
/**
|
||||
* Create a stub builder of a mocked object.
|
||||
*
|
||||
* @param <T> type of the target object to be mocked
|
||||
* @param target class of the target object to be mocked
|
||||
* @return the stub builder of the mocked object
|
||||
*/
|
||||
public static <T> StubBuilder<T> stub(Class<T> target) {
|
||||
return new StubBuilder<T>(mock(target));
|
||||
}
|
||||
|
||||
/**
|
||||
* Builder class for stubs
|
||||
* @param <T> type of the object to be mocked
|
||||
*/
|
||||
public static class StubBuilder<T> {
|
||||
|
||||
/**
|
||||
* The target mock object
|
||||
*/
|
||||
public final T from;
|
||||
|
||||
// We want to be able to use this even when the tests are run in parallel.
|
||||
@SuppressWarnings("rawtypes")
|
||||
private static final ThreadLocal<StubBuilder> tls =
|
||||
new ThreadLocal<StubBuilder>() {
|
||||
@Override protected StubBuilder initialValue() {
|
||||
return new StubBuilder();
|
||||
}
|
||||
};
|
||||
|
||||
private Object firstReturn = null;
|
||||
private Object[] laterReturns = {};
|
||||
|
||||
/**
|
||||
* Default constructor for the initial stub builder
|
||||
*/
|
||||
public StubBuilder() {
|
||||
this.from = null;
|
||||
}
|
||||
|
||||
/**
|
||||
* Construct a stub builder with a mock instance
|
||||
*
|
||||
* @param mockInstance the mock object
|
||||
*/
|
||||
public StubBuilder(T mockInstance) {
|
||||
tls.set(this);
|
||||
this.from = mockInstance;
|
||||
}
|
||||
|
||||
/**
|
||||
* Get the current stub builder from thread local
|
||||
*
|
||||
* @param <T>
|
||||
* @return the stub builder of the mocked object
|
||||
*/
|
||||
@SuppressWarnings("unchecked")
|
||||
public static <T> StubBuilder<T> current() {
|
||||
return tls.get();
|
||||
}
|
||||
|
||||
/**
|
||||
* Set the return value for the current stub builder
|
||||
*
|
||||
* @param value the return value
|
||||
* @return the stub builder
|
||||
*/
|
||||
public StubBuilder<T> returning(Object value) {
|
||||
this.firstReturn = value;
|
||||
return this;
|
||||
}
|
||||
|
||||
/**
|
||||
* Set the return values for the current stub builder
|
||||
*
|
||||
* @param value the first return value
|
||||
* @param values the return values for later invocations
|
||||
* @return the stub builder
|
||||
*/
|
||||
public StubBuilder<T> returning(Object value, Object... values) {
|
||||
this.firstReturn = value;
|
||||
this.laterReturns = values;
|
||||
return this;
|
||||
}
|
||||
}
|
||||
}
|
@ -29,7 +29,6 @@
|
||||
|
||||
import static org.mockito.Mockito.*;
|
||||
|
||||
import static org.apache.hadoop.test.MockitoMaker.*;
|
||||
import org.apache.hadoop.conf.Configuration;
|
||||
import org.apache.hadoop.fs.FileStatus;
|
||||
import org.apache.hadoop.fs.FileSystem;
|
||||
@ -83,13 +82,14 @@ public void testMkdirs_noDir_badUmask() throws Throwable {
|
||||
|
||||
private void _mkdirs(boolean exists, FsPermission before, FsPermission after)
|
||||
throws Throwable {
|
||||
File localDir = make(stub(File.class).returning(exists).from.exists());
|
||||
File localDir = mock(File.class);
|
||||
when(localDir.exists()).thenReturn(exists);
|
||||
when(localDir.mkdir()).thenReturn(true);
|
||||
Path dir = mock(Path.class); // use default stubs
|
||||
LocalFileSystem fs = make(stub(LocalFileSystem.class)
|
||||
.returning(localDir).from.pathToFile(dir));
|
||||
FileStatus stat = make(stub(FileStatus.class)
|
||||
.returning(after).from.getPermission());
|
||||
LocalFileSystem fs = mock(LocalFileSystem.class);
|
||||
when(fs.pathToFile(dir)).thenReturn(localDir);
|
||||
FileStatus stat = mock(FileStatus.class);
|
||||
when(stat.getPermission()).thenReturn(after);
|
||||
when(fs.getFileStatus(dir)).thenReturn(stat);
|
||||
|
||||
try {
|
||||
|
@ -23,7 +23,6 @@
|
||||
import org.apache.hadoop.metrics2.MetricsRecordBuilder;
|
||||
|
||||
import static org.apache.hadoop.test.MetricsAsserts.*;
|
||||
import static org.apache.hadoop.test.MockitoMaker.*;
|
||||
|
||||
import org.junit.Test;
|
||||
|
||||
@ -33,10 +32,10 @@ public class TestMRAppMetrics {
|
||||
|
||||
@Test public void testNames() {
|
||||
Job job = mock(Job.class);
|
||||
Task mapTask = make(stub(Task.class).returning(TaskType.MAP).
|
||||
from.getType());
|
||||
Task reduceTask = make(stub(Task.class).returning(TaskType.REDUCE).
|
||||
from.getType());
|
||||
Task mapTask = mock(Task.class);
|
||||
when(mapTask.getType()).thenReturn(TaskType.MAP);
|
||||
Task reduceTask = mock(Task.class);
|
||||
when(reduceTask.getType()).thenReturn(TaskType.REDUCE);
|
||||
MRAppMetrics metrics = MRAppMetrics.create();
|
||||
|
||||
metrics.submittedJob(job);
|
||||
|
@ -27,7 +27,6 @@
|
||||
import static org.junit.Assert.*;
|
||||
|
||||
import static org.mockito.Mockito.*;
|
||||
import static org.apache.hadoop.test.MockitoMaker.*;
|
||||
|
||||
import org.apache.hadoop.conf.Configuration;
|
||||
import org.apache.hadoop.fs.BlockLocation;
|
||||
@ -80,12 +79,14 @@ public void testAddInputPath() throws IOException {
|
||||
@Test
|
||||
public void testNumInputFiles() throws Exception {
|
||||
Configuration conf = spy(new Configuration());
|
||||
Job job = make(stub(Job.class).returning(conf).from.getConfiguration());
|
||||
FileStatus stat = make(stub(FileStatus.class).returning(0L).from.getLen());
|
||||
Job mockedJob = mock(Job.class);
|
||||
when(mockedJob.getConfiguration()).thenReturn(conf);
|
||||
FileStatus stat = mock(FileStatus.class);
|
||||
when(stat.getLen()).thenReturn(0L);
|
||||
TextInputFormat ispy = spy(new TextInputFormat());
|
||||
doReturn(Arrays.asList(stat)).when(ispy).listStatus(job);
|
||||
doReturn(Arrays.asList(stat)).when(ispy).listStatus(mockedJob);
|
||||
|
||||
ispy.getSplits(job);
|
||||
ispy.getSplits(mockedJob);
|
||||
verify(conf).setLong(FileInputFormat.NUM_INPUT_FILES, 1);
|
||||
}
|
||||
|
||||
|
@ -20,14 +20,14 @@
|
||||
import static org.apache.hadoop.test.MetricsAsserts.assertCounter;
|
||||
import static org.apache.hadoop.test.MetricsAsserts.assertGauge;
|
||||
import static org.apache.hadoop.test.MetricsAsserts.getMetrics;
|
||||
import static org.apache.hadoop.test.MockitoMaker.make;
|
||||
import static org.apache.hadoop.test.MockitoMaker.stub;
|
||||
import static org.junit.Assert.assertTrue;
|
||||
import static org.jboss.netty.buffer.ChannelBuffers.wrappedBuffer;
|
||||
import static org.jboss.netty.handler.codec.http.HttpResponseStatus.OK;
|
||||
import static org.jboss.netty.handler.codec.http.HttpVersion.HTTP_1_1;
|
||||
import static org.junit.Assert.assertEquals;
|
||||
import static org.junit.Assume.assumeTrue;
|
||||
import static org.mockito.Mockito.mock;
|
||||
import static org.mockito.Mockito.when;
|
||||
|
||||
import java.io.DataInputStream;
|
||||
import java.io.EOFException;
|
||||
@ -188,8 +188,8 @@ public void testSerializeMeta() throws Exception {
|
||||
public void testShuffleMetrics() throws Exception {
|
||||
MetricsSystem ms = new MetricsSystemImpl();
|
||||
ShuffleHandler sh = new ShuffleHandler(ms);
|
||||
ChannelFuture cf = make(stub(ChannelFuture.class).
|
||||
returning(true, false).from.isSuccess());
|
||||
ChannelFuture cf = mock(ChannelFuture.class);
|
||||
when(cf.isSuccess()).thenReturn(true).thenReturn(false);
|
||||
|
||||
sh.metrics.shuffleConnections.incr();
|
||||
sh.metrics.shuffleOutputBytes.incr(1*MiB);
|
||||
@ -1080,10 +1080,10 @@ public void testSendMapCount() throws Exception {
|
||||
new ArrayList<ShuffleHandler.ReduceMapFileCount>();
|
||||
|
||||
final ChannelHandlerContext mockCtx =
|
||||
Mockito.mock(ChannelHandlerContext.class);
|
||||
final MessageEvent mockEvt = Mockito.mock(MessageEvent.class);
|
||||
final Channel mockCh = Mockito.mock(AbstractChannel.class);
|
||||
final ChannelPipeline mockPipeline = Mockito.mock(ChannelPipeline.class);
|
||||
mock(ChannelHandlerContext.class);
|
||||
final MessageEvent mockEvt = mock(MessageEvent.class);
|
||||
final Channel mockCh = mock(AbstractChannel.class);
|
||||
final ChannelPipeline mockPipeline = mock(ChannelPipeline.class);
|
||||
|
||||
// Mock HttpRequest and ChannelFuture
|
||||
final HttpRequest mockHttpRequest = createMockHttpRequest();
|
||||
@ -1094,16 +1094,16 @@ public void testSendMapCount() throws Exception {
|
||||
|
||||
// Mock Netty Channel Context and Channel behavior
|
||||
Mockito.doReturn(mockCh).when(mockCtx).getChannel();
|
||||
Mockito.when(mockCh.getPipeline()).thenReturn(mockPipeline);
|
||||
Mockito.when(mockPipeline.get(
|
||||
when(mockCh.getPipeline()).thenReturn(mockPipeline);
|
||||
when(mockPipeline.get(
|
||||
Mockito.any(String.class))).thenReturn(timerHandler);
|
||||
Mockito.when(mockCtx.getChannel()).thenReturn(mockCh);
|
||||
when(mockCtx.getChannel()).thenReturn(mockCh);
|
||||
Mockito.doReturn(mockFuture).when(mockCh).write(Mockito.any(Object.class));
|
||||
Mockito.when(mockCh.write(Object.class)).thenReturn(mockFuture);
|
||||
when(mockCh.write(Object.class)).thenReturn(mockFuture);
|
||||
|
||||
//Mock MessageEvent behavior
|
||||
Mockito.doReturn(mockCh).when(mockEvt).getChannel();
|
||||
Mockito.when(mockEvt.getChannel()).thenReturn(mockCh);
|
||||
when(mockEvt.getChannel()).thenReturn(mockCh);
|
||||
Mockito.doReturn(mockHttpRequest).when(mockEvt).getMessage();
|
||||
|
||||
final ShuffleHandler sh = new MockShuffleHandler();
|
||||
@ -1127,8 +1127,8 @@ public void testSendMapCount() throws Exception {
|
||||
|
||||
public ChannelFuture createMockChannelFuture(Channel mockCh,
|
||||
final List<ShuffleHandler.ReduceMapFileCount> listenerList) {
|
||||
final ChannelFuture mockFuture = Mockito.mock(ChannelFuture.class);
|
||||
Mockito.when(mockFuture.getChannel()).thenReturn(mockCh);
|
||||
final ChannelFuture mockFuture = mock(ChannelFuture.class);
|
||||
when(mockFuture.getChannel()).thenReturn(mockCh);
|
||||
Mockito.doReturn(true).when(mockFuture).isSuccess();
|
||||
Mockito.doAnswer(new Answer() {
|
||||
@Override
|
||||
@ -1146,7 +1146,7 @@ public Object answer(InvocationOnMock invocation) throws Throwable {
|
||||
}
|
||||
|
||||
public HttpRequest createMockHttpRequest() {
|
||||
HttpRequest mockHttpRequest = Mockito.mock(HttpRequest.class);
|
||||
HttpRequest mockHttpRequest = mock(HttpRequest.class);
|
||||
Mockito.doReturn(HttpMethod.GET).when(mockHttpRequest).getMethod();
|
||||
Mockito.doAnswer(new Answer() {
|
||||
@Override
|
||||
|
@ -21,8 +21,6 @@
|
||||
import static org.apache.hadoop.test.MetricsAsserts.assertCounter;
|
||||
import static org.apache.hadoop.test.MetricsAsserts.assertGauge;
|
||||
import static org.apache.hadoop.test.MetricsAsserts.getMetrics;
|
||||
import static org.apache.hadoop.test.MockitoMaker.make;
|
||||
import static org.apache.hadoop.test.MockitoMaker.stub;
|
||||
import static org.junit.Assert.assertNull;
|
||||
import static org.mockito.Mockito.mock;
|
||||
import static org.mockito.Mockito.when;
|
||||
@ -226,8 +224,8 @@ public void testQueueAppMetricsForMultipleFailures() {
|
||||
|
||||
QueueMetrics parentMetrics =
|
||||
QueueMetrics.forQueue(ms, parentQueueName, null, true, conf);
|
||||
Queue parentQueue = make(stub(Queue.class).returning(parentMetrics).
|
||||
from.getMetrics());
|
||||
Queue parentQueue = mock(Queue.class);
|
||||
when(parentQueue.getMetrics()).thenReturn(parentMetrics);
|
||||
QueueMetrics metrics =
|
||||
QueueMetrics.forQueue(ms, leafQueueName, parentQueue, true, conf);
|
||||
MetricsSource parentQueueSource = queueSource(ms, parentQueueName);
|
||||
@ -272,8 +270,8 @@ public void testQueueAppMetricsForMultipleFailures() {
|
||||
|
||||
QueueMetrics parentMetrics =
|
||||
QueueMetrics.forQueue(ms, parentQueueName, null, true, conf);
|
||||
Queue parentQueue = make(stub(Queue.class).returning(parentMetrics).
|
||||
from.getMetrics());
|
||||
Queue parentQueue = mock(Queue.class);
|
||||
when(parentQueue.getMetrics()).thenReturn(parentMetrics);
|
||||
QueueMetrics metrics =
|
||||
QueueMetrics.forQueue(ms, leafQueueName, parentQueue, true, conf);
|
||||
MetricsSource parentQueueSource = queueSource(ms, parentQueueName);
|
||||
@ -359,8 +357,8 @@ public void testMetricsCache() {
|
||||
|
||||
QueueMetrics p1Metrics =
|
||||
QueueMetrics.forQueue(ms, p1, null, true, conf);
|
||||
Queue parentQueue1 = make(stub(Queue.class).returning(p1Metrics).
|
||||
from.getMetrics());
|
||||
Queue parentQueue1 = mock(Queue.class);
|
||||
when(parentQueue1.getMetrics()).thenReturn(p1Metrics);
|
||||
QueueMetrics metrics =
|
||||
QueueMetrics.forQueue(ms, leafQueueName, parentQueue1, true, conf);
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user