dajac commented on code in PR #12185: URL: https://github.com/apache/kafka/pull/12185#discussion_r884533015
########## core/src/test/scala/unit/kafka/network/RequestChannelTest.scala: ########## @@ -191,84 +194,66 @@ class RequestChannelTest { assertTrue(isValidJson(RequestConvertToJson.request(alterConfigs.loggableRequest).toString)) } - @Test - def testEnvelopeBuildResponseSendShouldReturnNoErrorIfInnerResponseHasNoError(): Unit = { - val channelRequest = buildForwardRequestWithEnvelopeRequestAttached(buildMetadataRequest()) - - val envelopeResponseArgumentCaptor = ArgumentCaptor.forClass(classOf[EnvelopeResponse]) - - Mockito.doAnswer(_ => mockSend) - .when(channelRequest.envelope.get.context).buildResponseSend(envelopeResponseArgumentCaptor.capture()) - - // create an inner response without error - val responseWithoutError = RequestTestUtils.metadataUpdateWith(2, Collections.singletonMap("a", 2)) - - // build an envelope response - channelRequest.buildResponseSend(responseWithoutError) - - // expect the envelopeResponse result without error - val capturedValue: EnvelopeResponse = envelopeResponseArgumentCaptor.getValue - assertTrue(capturedValue.error().equals(Errors.NONE)) + @ParameterizedTest + @EnumSource(value=classOf[Errors], names=Array("NONE", "CLUSTER_AUTHORIZATION_FAILED", "NOT_CONTROLLER")) + def testBuildEnvelopeResponse(error: Errors): Unit = { + val topic = "foo" + val createTopicRequest = buildCreateTopicRequest(topic) + val unwrapped = buildUnwrappedEnvelopeRequest(createTopicRequest) + + val createTopicResponse = buildCreateTopicResponse(topic, error) + val envelopeResponse = buildEnvelopeResponse(unwrapped, createTopicResponse) + + error match { + case Errors.NOT_CONTROLLER => + assertEquals(Errors.NOT_CONTROLLER, envelopeResponse.error) + assertNull(envelopeResponse.responseData) + case _ => + assertEquals(Errors.NONE, envelopeResponse.error) + val unwrappedResponse = AbstractResponse.parseResponse(envelopeResponse.responseData(), unwrapped.header) Review Comment: nit: We could omit parenthesis when calling `responseData`. ########## core/src/test/scala/unit/kafka/network/RequestChannelTest.scala: ########## @@ -24,36 +24,39 @@ import java.nio.ByteBuffer import java.util.Collections import com.fasterxml.jackson.databind.ObjectMapper import kafka.network +import kafka.server.EnvelopeUtils import kafka.utils.TestUtils import org.apache.kafka.clients.admin.AlterConfigOp.OpType import org.apache.kafka.common.config.types.Password import org.apache.kafka.common.config.{ConfigResource, SaslConfigs, SslConfigs, TopicConfig} import org.apache.kafka.common.memory.MemoryPool -import org.apache.kafka.common.message.IncrementalAlterConfigsRequestData +import org.apache.kafka.common.message.{CreateTopicsRequestData, CreateTopicsResponseData, IncrementalAlterConfigsRequestData} import org.apache.kafka.common.message.IncrementalAlterConfigsRequestData._ -import org.apache.kafka.common.network.{ByteBufferSend, ClientInformation, ListenerName} -import org.apache.kafka.common.protocol.{ApiKeys, Errors} -import org.apache.kafka.common.requests.{AbstractRequest, MetadataRequest, RequestTestUtils} +import org.apache.kafka.common.network.{ClientInformation, ListenerName} +import org.apache.kafka.common.protocol.Errors +import org.apache.kafka.common.requests.{AbstractRequest, MetadataRequest} import org.apache.kafka.common.requests.AlterConfigsRequest._ import org.apache.kafka.common.requests._ import org.apache.kafka.common.security.auth.{KafkaPrincipal, KafkaPrincipalSerde, SecurityProtocol} import org.apache.kafka.common.utils.{SecurityUtils, Utils} +import org.apache.kafka.test import org.junit.jupiter.api.Assertions._ import org.junit.jupiter.api._ import org.mockito.Mockito.mock -import org.mockito.{ArgumentCaptor, Mockito} +import org.apache.kafka.common.message.CreateTopicsRequestData.CreatableTopic +import org.junit.jupiter.params.ParameterizedTest +import org.junit.jupiter.params.provider.EnumSource +import java.util.concurrent.atomic.AtomicReference Review Comment: nit: Could we put this one next to the other `java.util.*`? -- 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