From 5b6bf7790edd65275a2947b87042e0ffc025297c Mon Sep 17 00:00:00 2001 From: bertber <75388552+bertber@users.noreply.github.com> Date: Thu, 17 Dec 2020 00:36:44 +0800 Subject: [PATCH 1/6] KAFKA-10768 Add a test for ByteBufferInputStream to ByteBufferLogInputStreamTest I made a test for ByteBufferInputStream in the ByteBufferLogInputStreamTest. First, I add a ByteBuffer that it's not empty to the ByteBufferInputStream, in order to verify it. After that, I try to use ByteBufferInputStream's read function and check return value whether it's correct. --- .../record/ByteBufferLogInputStreamTest.java | 23 +++++++++++++++++++ 1 file changed, 23 insertions(+) diff --git a/clients/src/test/java/org/apache/kafka/common/record/ByteBufferLogInputStreamTest.java b/clients/src/test/java/org/apache/kafka/common/record/ByteBufferLogInputStreamTest.java index 063e188dfd353..3f9f2cd2662e6 100644 --- a/clients/src/test/java/org/apache/kafka/common/record/ByteBufferLogInputStreamTest.java +++ b/clients/src/test/java/org/apache/kafka/common/record/ByteBufferLogInputStreamTest.java @@ -17,6 +17,7 @@ package org.apache.kafka.common.record; import org.apache.kafka.common.errors.CorruptRecordException; +import org.apache.kafka.common.utils.ByteBufferInputStream; import org.junit.Test; import java.nio.ByteBuffer; @@ -120,4 +121,26 @@ public void iteratorRaisesOnTooLargeRecords() { logInputStream.nextBatch(); } + @Test + public void testReadUnsignedIntFromInputStream() { + ByteBuffer buffer = ByteBuffer.allocate(5); + buffer.put((byte) 10); + buffer.put((byte) 20); + buffer.put((byte) 30); + buffer.rewind(); + + byte[] b = new byte[1]; + + ByteBufferInputStream inputStream = new ByteBufferInputStream(buffer); + assertEquals(10, inputStream.read()); + + inputStream.read(b, 0, 0); + assertEquals(20, inputStream.read()); + + inputStream.read(b, 0, b.length); + assertEquals(0, inputStream.read()); + + inputStream.read(b, 0, b.length); + assertEquals(-1, inputStream.read()); + } } From 499bf1551a405717e448d27a896d483d99abf079 Mon Sep 17 00:00:00 2001 From: hp Date: Fri, 18 Dec 2020 02:42:52 +0800 Subject: [PATCH 2/6] Add a fixed the scenario of 'len==0' to read function. --- .../org/apache/kafka/common/utils/ByteBufferInputStream.java | 3 +++ 1 file changed, 3 insertions(+) diff --git a/clients/src/main/java/org/apache/kafka/common/utils/ByteBufferInputStream.java b/clients/src/main/java/org/apache/kafka/common/utils/ByteBufferInputStream.java index 094a1a70db01d..1266d4b8c7385 100644 --- a/clients/src/main/java/org/apache/kafka/common/utils/ByteBufferInputStream.java +++ b/clients/src/main/java/org/apache/kafka/common/utils/ByteBufferInputStream.java @@ -37,6 +37,9 @@ public int read() { } public int read(byte[] bytes, int off, int len) { + if (len == 0) { + return 0; + } if (!buffer.hasRemaining()) { return -1; } From 1cbe4937f62635f7727c627bfa98be9aff5e9c70 Mon Sep 17 00:00:00 2001 From: hp Date: Mon, 21 Dec 2020 01:16:50 +0800 Subject: [PATCH 3/6] Create a ByteufferInputStreamTest class and move the testReadUnsignedIntFromInputStream from ByteBufferLogInputStreamTest to ByteufferInputStreamTest. --- .../record/ByteBufferLogInputStreamTest.java | 24 --------- .../utils/ByteBufferInputStreamTest.java | 49 +++++++++++++++++++ 2 files changed, 49 insertions(+), 24 deletions(-) create mode 100644 clients/src/test/java/org/apache/kafka/common/utils/ByteBufferInputStreamTest.java diff --git a/clients/src/test/java/org/apache/kafka/common/record/ByteBufferLogInputStreamTest.java b/clients/src/test/java/org/apache/kafka/common/record/ByteBufferLogInputStreamTest.java index 3f9f2cd2662e6..0a191a891b1ba 100644 --- a/clients/src/test/java/org/apache/kafka/common/record/ByteBufferLogInputStreamTest.java +++ b/clients/src/test/java/org/apache/kafka/common/record/ByteBufferLogInputStreamTest.java @@ -17,7 +17,6 @@ package org.apache.kafka.common.record; import org.apache.kafka.common.errors.CorruptRecordException; -import org.apache.kafka.common.utils.ByteBufferInputStream; import org.junit.Test; import java.nio.ByteBuffer; @@ -120,27 +119,4 @@ public void iteratorRaisesOnTooLargeRecords() { assertNotNull(logInputStream.nextBatch()); logInputStream.nextBatch(); } - - @Test - public void testReadUnsignedIntFromInputStream() { - ByteBuffer buffer = ByteBuffer.allocate(5); - buffer.put((byte) 10); - buffer.put((byte) 20); - buffer.put((byte) 30); - buffer.rewind(); - - byte[] b = new byte[1]; - - ByteBufferInputStream inputStream = new ByteBufferInputStream(buffer); - assertEquals(10, inputStream.read()); - - inputStream.read(b, 0, 0); - assertEquals(20, inputStream.read()); - - inputStream.read(b, 0, b.length); - assertEquals(0, inputStream.read()); - - inputStream.read(b, 0, b.length); - assertEquals(-1, inputStream.read()); - } } diff --git a/clients/src/test/java/org/apache/kafka/common/utils/ByteBufferInputStreamTest.java b/clients/src/test/java/org/apache/kafka/common/utils/ByteBufferInputStreamTest.java new file mode 100644 index 0000000000000..1f6d7b2e17dbe --- /dev/null +++ b/clients/src/test/java/org/apache/kafka/common/utils/ByteBufferInputStreamTest.java @@ -0,0 +1,49 @@ +/* + * 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 org.apache.kafka.common.utils; + +import static org.junit.Assert.assertEquals; + +import java.nio.ByteBuffer; + +import org.junit.Test; + +public class ByteBufferInputStreamTest { + + @Test + public void testReadUnsignedIntFromInputStream() throws Exception { + ByteBuffer buffer = ByteBuffer.allocate(8); + buffer.put((byte) 10); + buffer.put((byte) 20); + buffer.put((byte) 30); + buffer.rewind(); + + byte[] b = new byte[6]; + + ByteBufferInputStream inputStream = new ByteBufferInputStream(buffer); + assertEquals(10, inputStream.read()); + assertEquals(20, inputStream.read()); + + assertEquals(3, inputStream.read(b, 3, b.length - 3)); + assertEquals(0, inputStream.read()); + + assertEquals(2, inputStream.read(b, 0, b.length)); + assertEquals(-1, inputStream.read(b, 0, b.length)); + assertEquals(0, inputStream.read(b, 0, 0)); + assertEquals(-1, inputStream.read()); + } +} \ No newline at end of file From 23f5c4a93424c2f1817e5b9e178d37ea2d72c36d Mon Sep 17 00:00:00 2001 From: hp Date: Tue, 29 Dec 2020 00:28:07 +0800 Subject: [PATCH 4/6] Revert ByteBufferLogInputStreamTest's change and remove unnecessary code from ByteBufferInputStreamTest. --- .../kafka/common/record/ByteBufferLogInputStreamTest.java | 1 + .../apache/kafka/common/utils/ByteBufferInputStreamTest.java | 2 +- 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/clients/src/test/java/org/apache/kafka/common/record/ByteBufferLogInputStreamTest.java b/clients/src/test/java/org/apache/kafka/common/record/ByteBufferLogInputStreamTest.java index 0a191a891b1ba..063e188dfd353 100644 --- a/clients/src/test/java/org/apache/kafka/common/record/ByteBufferLogInputStreamTest.java +++ b/clients/src/test/java/org/apache/kafka/common/record/ByteBufferLogInputStreamTest.java @@ -119,4 +119,5 @@ public void iteratorRaisesOnTooLargeRecords() { assertNotNull(logInputStream.nextBatch()); logInputStream.nextBatch(); } + } diff --git a/clients/src/test/java/org/apache/kafka/common/utils/ByteBufferInputStreamTest.java b/clients/src/test/java/org/apache/kafka/common/utils/ByteBufferInputStreamTest.java index 1f6d7b2e17dbe..13324f29068bc 100644 --- a/clients/src/test/java/org/apache/kafka/common/utils/ByteBufferInputStreamTest.java +++ b/clients/src/test/java/org/apache/kafka/common/utils/ByteBufferInputStreamTest.java @@ -25,7 +25,7 @@ public class ByteBufferInputStreamTest { @Test - public void testReadUnsignedIntFromInputStream() throws Exception { + public void testReadUnsignedIntFromInputStream() { ByteBuffer buffer = ByteBuffer.allocate(8); buffer.put((byte) 10); buffer.put((byte) 20); From 3b44c6d62d79ab360d3a8ee7cd9207fe81d0056a Mon Sep 17 00:00:00 2001 From: hp Date: Thu, 31 Dec 2020 00:47:08 +0800 Subject: [PATCH 5/6] reformat import order --- .../apache/kafka/common/utils/ByteBufferInputStreamTest.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/clients/src/test/java/org/apache/kafka/common/utils/ByteBufferInputStreamTest.java b/clients/src/test/java/org/apache/kafka/common/utils/ByteBufferInputStreamTest.java index 13324f29068bc..d8e25541d32c3 100644 --- a/clients/src/test/java/org/apache/kafka/common/utils/ByteBufferInputStreamTest.java +++ b/clients/src/test/java/org/apache/kafka/common/utils/ByteBufferInputStreamTest.java @@ -16,12 +16,12 @@ */ package org.apache.kafka.common.utils; +import org.junit.Test; + import static org.junit.Assert.assertEquals; import java.nio.ByteBuffer; -import org.junit.Test; - public class ByteBufferInputStreamTest { @Test From 82c31fcd853badf1b76b934b774b1e014825347d Mon Sep 17 00:00:00 2001 From: hp Date: Fri, 1 Jan 2021 14:29:45 +0800 Subject: [PATCH 6/6] reformat import order again --- .../apache/kafka/common/utils/ByteBufferInputStreamTest.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/clients/src/test/java/org/apache/kafka/common/utils/ByteBufferInputStreamTest.java b/clients/src/test/java/org/apache/kafka/common/utils/ByteBufferInputStreamTest.java index d8e25541d32c3..f41c1056bd707 100644 --- a/clients/src/test/java/org/apache/kafka/common/utils/ByteBufferInputStreamTest.java +++ b/clients/src/test/java/org/apache/kafka/common/utils/ByteBufferInputStreamTest.java @@ -18,10 +18,10 @@ import org.junit.Test; -import static org.junit.Assert.assertEquals; - import java.nio.ByteBuffer; +import static org.junit.Assert.assertEquals; + public class ByteBufferInputStreamTest { @Test