hudeqi commented on code in PR #13471:
URL: https://github.com/apache/kafka/pull/13471#discussion_r1154277604


##########
core/src/test/scala/unit/kafka/server/ReplicaManagerTest.scala:
##########
@@ -4485,6 +4485,25 @@ class ReplicaManagerTest {
       assertTrue(response.usableBytes >= 0)
     }
   }
+
+  @Test
+  def checkRemoveMetricsCountMatchRegisterCount(): Unit = {

Review Comment:
   > 
   
   
   
   > I have an idea with which we can avoid changing the KafkaMetricsGroup. 
Could you please consider the following.
   > 
   > You can use mockito's `MockConstruction` to mock the KafkaMetricsGroup and 
count the number of invocations on that mock and later assert on number of 
invocations of add and remove. As an example, this test could be written as 
follows (rough example with Java code):
   > 
   > ```
   > var numAddCount = 0;
   > var numRemoveCount = 0;
   > try (MockedConstruction<KafkaMetricsGroup> mockMetricsGroup = 
mockConstruction(KafkaMetricsGroup.class,
   >             (mock, context) -> {
   >                    doAnswer(invocation -> {
   >                         numAddCount++;
   >                     }).when(mock).newGauge(anyString());
   >                     
   >                     // similarly add mocks for newMeter etc.
   >                     
   >                     doAnswer(invocation -> {
   >                         numRemoveCount++;
   >                     }).when(mock).removeMetric(anyString());
   >         })) {
   >    val rm = new ReplicaManager(
   >       metrics = metrics,
   >       config = config,
   >       time = time,
   >       scheduler = new MockScheduler(time),
   >       logManager = mockLogMgr,
   >       quotaManagers = quotaManager,
   >       metadataCache = MetadataCache.zkMetadataCache(config.brokerId, 
config.interBrokerProtocolVersion),
   >       logDirFailureChannel = new LogDirFailureChannel(config.logDirs.size),
   >       alterPartitionManager = alterPartitionManager,
   >       threadNamePrefix = Option(this.getClass.getName))
   >       
   >    rm.shutdown()
   >    assertEquals(numAddCount, numRemoveCount)
   >  }
   > ```
   
   Sorry, I tried my best to write a single test according to this method, but 
since newGauge has a return value, there is no way to use doAnswer. It seems 
that KafkaMetricsGroup must be changed? @divijvaidya 



-- 
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