chia7712 commented on code in PR #18966: URL: https://github.com/apache/kafka/pull/18966#discussion_r1973040352
########## core/src/test/scala/integration/kafka/api/PlaintextAdminIntegrationTest.scala: ########## @@ -138,6 +138,50 @@ class PlaintextAdminIntegrationTest extends BaseAdminIntegrationTest { assertEquals(configEntries, quotaEntities.get(entity).asScala) } + @Test + def testDefaultNameQuotaIsNotEqualToDefaultQuota(): Unit = { + val config = createConfig + val defaultQuota = "<default>" + client = Admin.create(config) + + 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) + val result = client.alterClientQuotas(alterations.asJava) + result.all().get() + + val values = result.values() Review Comment: this check is weird as the size must be equal to what we pass as `result.all().get()` pass. Maybe we can remove this and keep `client.alterClientQuotas(alterations.asJava).all().get()` ########## core/src/test/scala/integration/kafka/api/PlaintextAdminIntegrationTest.scala: ########## @@ -138,6 +138,50 @@ class PlaintextAdminIntegrationTest extends BaseAdminIntegrationTest { assertEquals(configEntries, quotaEntities.get(entity).asScala) } + @Test + def testDefaultNameQuotaIsNotEqualToDefaultQuota(): Unit = { + val config = createConfig + val defaultQuota = "<default>" + client = Admin.create(config) + + 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) + val result = client.alterClientQuotas(alterations.asJava) + result.all().get() + + val values = result.values() + assertEquals(2, values.size()) + 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()) Review Comment: could you please update default quota and then ensure it is queriable? -- 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