C0urante commented on code in PR #12728:
URL: https://github.com/apache/kafka/pull/12728#discussion_r1373830704


##########
connect/runtime/src/test/java/org/apache/kafka/connect/runtime/standalone/StandaloneHerderTest.java:
##########
@@ -528,72 +483,64 @@ public void testRestartConnectorAndTasksNoStatus() throws 
Exception {
         ExecutionException ee = assertThrows(ExecutionException.class, () -> 
restartCallback.get(1000L, TimeUnit.MILLISECONDS));
         assertTrue(ee.getCause() instanceof NotFoundException);
         assertTrue(ee.getMessage().contains("Status for connector"));
-        PowerMock.verifyAll();
     }
 
     @Test
     public void testRestartConnectorAndTasksNoRestarts() throws Exception {
         RestartRequest restartRequest = new RestartRequest(CONNECTOR_NAME, 
false, true);
-        RestartPlan restartPlan = PowerMock.createMock(RestartPlan.class);
-        ConnectorStateInfo connectorStateInfo = 
PowerMock.createMock(ConnectorStateInfo.class);
-        
EasyMock.expect(restartPlan.shouldRestartConnector()).andReturn(false).anyTimes();
-        
EasyMock.expect(restartPlan.shouldRestartTasks()).andReturn(false).anyTimes();
-        
EasyMock.expect(restartPlan.restartConnectorStateInfo()).andReturn(connectorStateInfo).anyTimes();
-        EasyMock.expect(herder.buildRestartPlan(restartRequest))
-                .andReturn(Optional.of(restartPlan)).anyTimes();
-
-        connector = PowerMock.createMock(BogusSinkConnector.class);
+        RestartPlan restartPlan = mock(RestartPlan.class);
+        ConnectorStateInfo connectorStateInfo = mock(ConnectorStateInfo.class);
+        when(restartPlan.shouldRestartConnector()).thenReturn(false);
+        when(restartPlan.shouldRestartTasks()).thenReturn(false);
+        
when(restartPlan.restartConnectorStateInfo()).thenReturn(connectorStateInfo);
+        
doReturn(Optional.of(restartPlan)).when(herder).buildRestartPlan(restartRequest);
+
+        connector = mock(BogusSinkConnector.class);
         expectAdd(SourceSink.SINK);
 
         Map<String, String> connectorConfig = connectorConfig(SourceSink.SINK);
-        Connector connectorMock = PowerMock.createMock(SinkConnector.class);
+        Connector connectorMock = mock(SinkConnector.class);
         expectConfigValidation(connectorMock, true, connectorConfig);
 
-        PowerMock.replayAll();
-
         herder.putConnectorConfig(CONNECTOR_NAME, connectorConfig, false, 
createCallback);
         Herder.Created<ConnectorInfo> connectorInfo = 
createCallback.get(1000L, TimeUnit.SECONDS);
         assertEquals(createdInfo(SourceSink.SINK), connectorInfo.result());
 
         FutureCallback<ConnectorStateInfo> restartCallback = new 
FutureCallback<>();
         herder.restartConnectorAndTasks(restartRequest, restartCallback);
         assertEquals(connectorStateInfo, restartCallback.get(1000L, 
TimeUnit.MILLISECONDS));
-        PowerMock.verifyAll();
     }
 
     @Test
     public void testRestartConnectorAndTasksOnlyConnector() throws Exception {
         RestartRequest restartRequest = new RestartRequest(CONNECTOR_NAME, 
false, true);
-        RestartPlan restartPlan = PowerMock.createMock(RestartPlan.class);
-        ConnectorStateInfo connectorStateInfo = 
PowerMock.createMock(ConnectorStateInfo.class);
-        
EasyMock.expect(restartPlan.shouldRestartConnector()).andReturn(true).anyTimes();
-        
EasyMock.expect(restartPlan.shouldRestartTasks()).andReturn(false).anyTimes();
-        
EasyMock.expect(restartPlan.restartConnectorStateInfo()).andReturn(connectorStateInfo).anyTimes();
-        EasyMock.expect(herder.buildRestartPlan(restartRequest))
-                .andReturn(Optional.of(restartPlan)).anyTimes();
+        RestartPlan restartPlan = mock(RestartPlan.class);
+        ConnectorStateInfo connectorStateInfo = mock(ConnectorStateInfo.class);
+        when(restartPlan.shouldRestartConnector()).thenReturn(true);
+        when(restartPlan.shouldRestartTasks()).thenReturn(false);
+        
when(restartPlan.restartConnectorStateInfo()).thenReturn(connectorStateInfo);
+        
doReturn(Optional.of(restartPlan)).when(herder).buildRestartPlan(restartRequest);
 
         herder.onRestart(CONNECTOR_NAME);
-        EasyMock.expectLastCall();
+        verify(statusBackingStore).put(new ConnectorStatus(CONNECTOR_NAME, 
ConnectorStatus.State.RESTARTING, WORKER_ID, 0));
 
-        connector = PowerMock.createMock(BogusSinkConnector.class);
+        doNothing().when(herder).onRestart(CONNECTOR_NAME);

Review Comment:
   Instead of mocking this method on the class we're testing, can we let the 
real method be invoked and add a verification at the end of the test? It could 
be something like this:
   
   ```java
   ArgumentCaptor<ConnectorStatus> connectorStatus = 
ArgumentCaptor.forClass(ConnectorStatus.class);
   verify(statusBackingStore).put(connectorStatus.capture());
   assertEquals(CONNECTOR_NAME, connectorStatus.getValue().id());
   assertEquals(AbstractStatus.State.RESTARTING, 
connectorStatus.getValue().state());
   ```
   
   We can even make this a reusable utility method like 
`assertRestartingStatus(String connector)` if the same pattern is applicable in 
multiple places.



-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: jira-unsubscr...@kafka.apache.org

For queries about this service, please contact Infrastructure at:
us...@infra.apache.org

Reply via email to