[ 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: mapreduce-issues-unsubscr...@hadoop.apache.org For additional commands, e-mail: mapreduce-issues-h...@hadoop.apache.org