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