[
https://issues.apache.org/jira/browse/MAPREDUCE-6761?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=15428788#comment-15428788
]
Kuhu Shukla commented on MAPREDUCE-6761:
----------------------------------------
bq. I had to change the type of the frameworkLoader to its' interface
(Iterable), so I can mock it with mockito.
Not sure on how to handle this, but here are some changes we can make to the
test.
Remove DummyClientProtocolProvider and use a ClientProtocolProvider with mock
ClientProtocol in TestCluster.
{code}
public ClientProtocolProvider getClientProtocolProvider() {
return new ClientProtocolProvider() {
@Override
public ClientProtocol create(Configuration conf) throws IOException {
return mock(ClientProtocol.class);
}
@Override
public ClientProtocol create(InetSocketAddress addr, Configuration
conf) throws IOException {
return mock(ClientProtocol.class);
}
@Override
public void close(ClientProtocol clientProtocol) throws IOException {
}
};
}
{code}
and use this in the return/throw mock chain
{code}
ClientProtocolProvider clientProtocolProvider1 = getClientProtocolProvider();
ClientProtocolProvider clientProtocolProvider2 =
getClientProtocolProvider();
when(iterator.next()).thenReturn(clientProtocolProvider1)
.thenThrow(new ServiceConfigurationError("Test error"))
.thenReturn(clientProtocolProvider2);
......
assertThat("Unexpected type of clientProtocolProvider",
testCluster.getClient(),
instanceOf(ClientProtocol.class));
// Check if we do not try to load the providers after a failure.
verify(iterator, times(2)).next();
{code}
Also, I think we don't need the pom.xml change. I seem to be able to run this
without it.
Hope this helps [~pvary].
> Regression when handling providers - invalid configuration
> ServiceConfiguration causes Cluster initialization failure
> ---------------------------------------------------------------------------------------------------------------------
>
> Key: MAPREDUCE-6761
> URL: https://issues.apache.org/jira/browse/MAPREDUCE-6761
> Project: Hadoop Map/Reduce
> Issue Type: Bug
> Components: mrv2
> Affects Versions: 3.0.0-alpha2
> Reporter: Peter Vary
> Assignee: Peter Vary
> Labels: supportability
> Attachments: MAPREDUCE-6761.2.patch, MAPREDUCE-6761.3.patch,
> MAPREDUCE-6761.patch
>
>
> When a rogue org.apache.hadoop.mapreduce.protocol.ClientProtocolProvider
> defines a provider that is not on classpath, then the initialization is
> failed with the following exception:
> java.util.ServiceConfigurationError:
> org.apache.hadoop.mapreduce.protocol.ClientProtocolProvider: Provider
> org.apache.hadoop.mapred.YarnClientProtocolProvider not found
> at java.util.ServiceLoader.fail(ServiceLoader.java:239)
> at java.util.ServiceLoader.access$300(ServiceLoader.java:185)
> at
> java.util.ServiceLoader$LazyIterator.nextService(ServiceLoader.java:372)
> at java.util.ServiceLoader$LazyIterator.next(ServiceLoader.java:404)
> at java.util.ServiceLoader$1.next(ServiceLoader.java:480)
> at org.apache.hadoop.mapreduce.Cluster.initProviderList(Cluster.java:84)
> at org.apache.hadoop.mapreduce.Cluster.initialize(Cluster.java:114)
> at org.apache.hadoop.mapreduce.Cluster.<init>(Cluster.java:108)
> at org.apache.hadoop.mapreduce.Cluster.<init>(Cluster.java:101)
> at org.apache.hadoop.mapred.JobClient.init(JobClient.java:477)
> at org.apache.hadoop.mapred.JobClient.<init>(JobClient.java:455)
> This regression is caused by MAPREDUCE-6473
--
This message was sent by Atlassian JIRA
(v6.3.4#6332)
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]