You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@kafka.apache.org by ij...@apache.org on 2016/04/28 05:58:51 UTC

kafka git commit: KAFKA-3621; Add tests for ApiVersionRequest/Response

Repository: kafka
Updated Branches:
  refs/heads/trunk 669be7fad -> 57831a56a


KAFKA-3621; Add tests for ApiVersionRequest/Response

Author: Ashish Singh <as...@cloudera.com>

Reviewers: Ismael Juma <is...@juma.me.uk>

Closes #1275 from SinghAsDev/KAFKA-3621


Project: http://git-wip-us.apache.org/repos/asf/kafka/repo
Commit: http://git-wip-us.apache.org/repos/asf/kafka/commit/57831a56
Tree: http://git-wip-us.apache.org/repos/asf/kafka/tree/57831a56
Diff: http://git-wip-us.apache.org/repos/asf/kafka/diff/57831a56

Branch: refs/heads/trunk
Commit: 57831a56a581128e164b4372c5e5eb4b55038d4a
Parents: 669be7f
Author: Ashish Singh <as...@cloudera.com>
Authored: Wed Apr 27 17:31:31 2016 -0700
Committer: Ismael Juma <is...@juma.me.uk>
Committed: Wed Apr 27 17:31:31 2016 -0700

----------------------------------------------------------------------
 .../kafka/server/ApiVersionsRequestTest.scala   | 50 ++++++++++++++++++++
 .../unit/kafka/server/BaseRequestTest.scala     |  8 ++--
 2 files changed, 55 insertions(+), 3 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/kafka/blob/57831a56/core/src/test/scala/unit/kafka/server/ApiVersionsRequestTest.scala
----------------------------------------------------------------------
diff --git a/core/src/test/scala/unit/kafka/server/ApiVersionsRequestTest.scala b/core/src/test/scala/unit/kafka/server/ApiVersionsRequestTest.scala
new file mode 100644
index 0000000..ed59930
--- /dev/null
+++ b/core/src/test/scala/unit/kafka/server/ApiVersionsRequestTest.scala
@@ -0,0 +1,50 @@
+/**
+  * Licensed to the Apache Software Foundation (ASF) under one or more
+  * contributor license agreements.  See the NOTICE file distributed with
+  * this work for additional information regarding copyright ownership.
+  * The ASF licenses this file to You under the Apache License, Version 2.0
+  * (the "License"); you may not use this file except in compliance with
+  * the License.  You may obtain a copy of the License at
+  *
+  *    http://www.apache.org/licenses/LICENSE-2.0
+  *
+  * Unless required by applicable law or agreed to in writing, software
+  * distributed under the License is distributed on an "AS IS" BASIS,
+  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+  * See the License for the specific language governing permissions and
+  * limitations under the License.
+  */
+
+package kafka.server
+
+import org.apache.kafka.common.protocol.ApiKeys
+import org.apache.kafka.common.requests.ApiVersionsResponse.ApiVersion
+import org.apache.kafka.common.requests.{ApiVersionsRequest, ApiVersionsResponse}
+import org.junit.Assert._
+import org.junit.Test
+
+import scala.collection.JavaConversions._
+
+class ApiVersionsRequestTest extends BaseRequestTest {
+
+  override def numBrokers: Int = 1
+
+  @Test
+  def testApiVersionsRequest() {
+    val apiVersionsResponse = sendApiVersionsRequest(new ApiVersionsRequest, 0)
+
+    assertEquals("API keys in ApiVersionsResponse must match API keys supported by broker.", ApiKeys.values.length, apiVersionsResponse.apiVersions.size)
+    for (expectedApiVersion: ApiVersion <- KafkaApis.apiVersionsResponse.apiVersions) {
+      val actualApiVersion = apiVersionsResponse.apiVersion(expectedApiVersion.apiKey)
+      assertNotNull(s"API key ${actualApiVersion.apiKey} is supported by broker, but not received in ApiVersionsResponse.", actualApiVersion)
+      assertEquals("API key must be supported by the broker.", expectedApiVersion.apiKey, actualApiVersion.apiKey)
+      assertEquals(s"Received unexpected min version for API key ${actualApiVersion.apiKey}.", expectedApiVersion.minVersion, actualApiVersion.minVersion)
+      assertEquals(s"Received unexpected max version for API key ${actualApiVersion.apiKey}.", expectedApiVersion.maxVersion, actualApiVersion.maxVersion)
+    }
+  }
+
+  private def sendApiVersionsRequest(request: ApiVersionsRequest, version: Short): ApiVersionsResponse = {
+    val response = send(request, ApiKeys.API_VERSIONS, version)
+    ApiVersionsResponse.parse(response)
+  }
+}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/kafka/blob/57831a56/core/src/test/scala/unit/kafka/server/BaseRequestTest.scala
----------------------------------------------------------------------
diff --git a/core/src/test/scala/unit/kafka/server/BaseRequestTest.scala b/core/src/test/scala/unit/kafka/server/BaseRequestTest.scala
index 3d05c1d..d92ccea 100644
--- a/core/src/test/scala/unit/kafka/server/BaseRequestTest.scala
+++ b/core/src/test/scala/unit/kafka/server/BaseRequestTest.scala
@@ -30,11 +30,13 @@ import org.apache.kafka.common.requests.{AbstractRequest, RequestHeader, Respons
 import org.junit.Before
 
 abstract class BaseRequestTest extends KafkaServerTestHarness {
-  val numBrokers = 3
   private var correlationId = 0
 
-  // Override properties by mutating the passed Properties object
-  def propertyOverrides(properties: Properties): Unit
+  // If required, set number of brokers
+  protected def numBrokers: Int = 3
+
+  // If required, override properties by mutating the passed Properties object
+  protected def propertyOverrides(properties: Properties) {}
 
   def generateConfigs() = {
     val props = TestUtils.createBrokerConfigs(numBrokers, zkConnect, enableControlledShutdown = false)