hachikuji commented on a change in pull request #10240:
URL: https://github.com/apache/kafka/pull/10240#discussion_r588513624



##########
File path: 
core/src/test/scala/unit/kafka/server/AutoTopicCreationManagerTest.scala
##########
@@ -146,29 +146,118 @@ class AutoTopicCreationManagerTest {
   }
 
   @Test
-  def testNotEnoughLiveBrokers(): Unit = {
-    val props = TestUtils.createBrokerConfig(1, "localhost")
-    props.setProperty(KafkaConfig.DefaultReplicationFactorProp, 3.toString)
-    config = KafkaConfig.fromProps(props)
+  def testInvalidReplicationFactorForNonInternalTopics(): Unit = {
+    testErrorWithCreationInZk(Errors.INVALID_REPLICATION_FACTOR, "topic", 
isInternal = false)
+  }
+
+  @Test
+  def testInvalidReplicationFactorForConsumerOffsetsTopic(): Unit = {
+    Mockito.when(groupCoordinator.offsetsTopicConfigs).thenReturn(new 
Properties)
+    testErrorWithCreationInZk(Errors.INVALID_REPLICATION_FACTOR, 
Topic.GROUP_METADATA_TOPIC_NAME, isInternal = true)
+  }
+
+  @Test
+  def testInvalidReplicationFactorForTxnOffsetTopic(): Unit = {
+    
Mockito.when(transactionCoordinator.transactionTopicConfigs).thenReturn(new 
Properties)
+    testErrorWithCreationInZk(Errors.INVALID_REPLICATION_FACTOR, 
Topic.TRANSACTION_STATE_TOPIC_NAME, isInternal = true)
+  }
+
+  @Test
+  def testTopicExistsErrorSwapForNonInternalTopics(): Unit = {
+    testErrorWithCreationInZk(Errors.TOPIC_ALREADY_EXISTS, "topic", isInternal 
= false,
+      expectedError = Errors.LEADER_NOT_AVAILABLE)
+  }
+
+  @Test
+  def testTopicExistsErrorSwapForConsumerOffsetsTopic(): Unit = {
+    Mockito.when(groupCoordinator.offsetsTopicConfigs).thenReturn(new 
Properties)
+    testErrorWithCreationInZk(Errors.TOPIC_ALREADY_EXISTS, 
Topic.GROUP_METADATA_TOPIC_NAME, isInternal = true,
+      expectedError = Errors.LEADER_NOT_AVAILABLE)
+  }
+
+  @Test
+  def testTopicExistsErrorSwapForTxnOffsetTopic(): Unit = {
+    
Mockito.when(transactionCoordinator.transactionTopicConfigs).thenReturn(new 
Properties)
+    testErrorWithCreationInZk(Errors.TOPIC_ALREADY_EXISTS, 
Topic.TRANSACTION_STATE_TOPIC_NAME, isInternal = true,
+      expectedError = Errors.LEADER_NOT_AVAILABLE)
+  }
+
+  @Test
+  def testRequestTimeoutErrorSwapForNonInternalTopics(): Unit = {
+    testErrorWithCreationInZk(Errors.REQUEST_TIMED_OUT, "topic", isInternal = 
false,
+      expectedError = Errors.LEADER_NOT_AVAILABLE)
+  }
+
+  @Test
+  def testRequestTimeoutErrorSwapForConsumerOffsetTopic(): Unit = {
+    Mockito.when(groupCoordinator.offsetsTopicConfigs).thenReturn(new 
Properties)
+    testErrorWithCreationInZk(Errors.REQUEST_TIMED_OUT, 
Topic.GROUP_METADATA_TOPIC_NAME, isInternal = true,
+      expectedError = Errors.LEADER_NOT_AVAILABLE)
+  }
+
+  @Test
+  def testRequestTimeoutErrorSwapForTxnOffsetTopic(): Unit = {
+    
Mockito.when(transactionCoordinator.transactionTopicConfigs).thenReturn(new 
Properties)
+    testErrorWithCreationInZk(Errors.REQUEST_TIMED_OUT, 
Topic.TRANSACTION_STATE_TOPIC_NAME, isInternal = true,
+      expectedError = Errors.LEADER_NOT_AVAILABLE)
+  }
+
+  @Test
+  def testUnknownTopicPartitionForNonIntervalTopic(): Unit = {
+    testErrorWithCreationInZk(Errors.UNKNOWN_TOPIC_OR_PARTITION, "topic", 
isInternal = false)
+  }
 
+  @Test
+  def testUnknownTopicPartitionForConsumerOffsetTopic(): Unit = {
+    Mockito.when(groupCoordinator.offsetsTopicConfigs).thenReturn(new 
Properties)
+    testErrorWithCreationInZk(Errors.UNKNOWN_TOPIC_OR_PARTITION, 
Topic.GROUP_METADATA_TOPIC_NAME, isInternal = true)
+  }
+
+  @Test
+  def testUnknownTopicPartitionForTxnOffsetTopic(): Unit = {
+    
Mockito.when(transactionCoordinator.transactionTopicConfigs).thenReturn(new 
Properties)
+    testErrorWithCreationInZk(Errors.UNKNOWN_TOPIC_OR_PARTITION, 
Topic.TRANSACTION_STATE_TOPIC_NAME, isInternal = true)
+  }
+
+  private def testErrorWithCreationInZk(error: Errors,
+                                        topicName: String,
+                                        isInternal: Boolean,
+                                        expectedError: Errors = null): Unit = {

Review comment:
       nit: a little more idiomatic to use `Option[Errors]` for a case like this




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

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


Reply via email to