Rancho-7 commented on code in PR #18966:
URL: https://github.com/apache/kafka/pull/18966#discussion_r1976528269


##########
core/src/test/scala/integration/kafka/api/PlaintextAdminIntegrationTest.scala:
##########
@@ -138,6 +138,67 @@ class PlaintextAdminIntegrationTest extends 
BaseAdminIntegrationTest {
     assertEquals(configEntries, quotaEntities.get(entity).asScala)
   }
 
+  @Test
+  def testDefaultNameQuotaIsNotEqualToDefaultQuota(): Unit = {
+    val config = createConfig
+    val defaultQuota = "<default>"
+    client = Admin.create(config)
+
+    //"<default>" can not create default quota
+    val userEntity = new ClientQuotaEntity(Map(ClientQuotaEntity.USER -> 
defaultQuota).asJava)
+    val clientEntity = new ClientQuotaEntity(Map(ClientQuotaEntity.CLIENT_ID 
-> defaultQuota).asJava)
+    val userAlterations = new ClientQuotaAlteration(userEntity,
+      Collections.singleton(new ClientQuotaAlteration.Op("consumer_byte_rate", 
10000D)))
+    val clientAlterations = new ClientQuotaAlteration(clientEntity,
+      Collections.singleton(new ClientQuotaAlteration.Op("producer_byte_rate", 
10000D)))
+    val alterations = List(userAlterations, clientAlterations)
+    client.alterClientQuotas(alterations.asJava).all().get()
+
+    val values = client.alterClientQuotas(alterations.asJava).values()
+    values.forEach((entity, future) => {
+      val entityName = entity.entries().values().iterator().next()
+      assertEquals(defaultQuota, entityName)
+    })
+
+    TestUtils.waitUntilTrue(() => {
+      try {
+        val userQuotas = 
client.describeClientQuotas(ClientQuotaFilter.containsOnly(Collections.singletonList(
+          
ClientQuotaFilterComponent.ofDefaultEntity(ClientQuotaEntity.USER)))).entities().get()
+        val clientQuotas = 
client.describeClientQuotas(ClientQuotaFilter.containsOnly(Collections.singletonList(
+          
ClientQuotaFilterComponent.ofDefaultEntity(ClientQuotaEntity.CLIENT_ID)))).entities().get()
+        userQuotas.size() == 0 && clientQuotas.size() == 0
+      } catch {
+        case _: Exception => false
+      }
+    }, "Timed out waiting for quota config to be propagated to all servers")
+
+    val userQuotas = 
client.describeClientQuotas(ClientQuotaFilter.containsOnly(Collections.singletonList(
+      
ClientQuotaFilterComponent.ofDefaultEntity(ClientQuotaEntity.USER)))).entities().get()
+    val clientQuotas = 
client.describeClientQuotas(ClientQuotaFilter.containsOnly(Collections.singletonList(
+      
ClientQuotaFilterComponent.ofDefaultEntity(ClientQuotaEntity.CLIENT_ID)))).entities().get()
+    assertEquals(0, userQuotas.size())
+    assertEquals(0, clientQuotas.size())
+
+    //null can create default quota
+    val correctDefaultEntity = new 
ClientQuotaEntity(Map(ClientQuotaEntity.USER -> 
Option.empty[String].orNull).asJava)
+    client.alterClientQuotas(List(new 
ClientQuotaAlteration(correctDefaultEntity, Collections.singleton(
+            new ClientQuotaAlteration.Op("producer_byte_rate", 
1000D)))).asJava).all().get()
+
+    TestUtils.waitUntilTrue(() => {
+      try {
+        val defaultQuotas = 
client.describeClientQuotas(ClientQuotaFilter.containsOnly(Collections.singletonList(
+          
ClientQuotaFilterComponent.ofDefaultEntity(ClientQuotaEntity.USER)))).entities().get()
+        defaultQuotas.size == 1
+      } catch {
+        case _: Exception => false
+      }
+    }, "Timed out waiting for quota config to be propagated to all servers")
+
+    val defaultQuotas = 
client.describeClientQuotas(ClientQuotaFilter.containsOnly(Collections.singletonList(

Review Comment:
   You're right! I tried  to double-check that all servers return the data 
correctly,but this line does not achieve that and is also unnecessary.Removed 
it.Thanks!



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