This is an automated email from the ASF dual-hosted git repository.

weichiu pushed a commit to branch HDDS-7593
in repository https://gitbox.apache.org/repos/asf/ozone.git


The following commit(s) were added to refs/heads/HDDS-7593 by this push:
     new e49f80509d HDDS-10925. [hsync] Parameterize TestBlockOutputStream on 
ozone.client.stream.putblock.piggybacking (#6750)
e49f80509d is described below

commit e49f80509d10168a383314eba4354802e0c7f9f8
Author: Wei-Chiu Chuang <[email protected]>
AuthorDate: Wed May 29 17:35:12 2024 -0700

    HDDS-10925. [hsync] Parameterize TestBlockOutputStream on 
ozone.client.stream.putblock.piggybacking (#6750)
---
 .../ozone/client/rpc/TestBlockOutputStream.java    | 67 +++++++++++++---------
 .../rpc/TestBlockOutputStreamWithFailures.java     | 44 ++++++++------
 2 files changed, 68 insertions(+), 43 deletions(-)

diff --git 
a/hadoop-ozone/integration-test/src/test/java/org/apache/hadoop/ozone/client/rpc/TestBlockOutputStream.java
 
b/hadoop-ozone/integration-test/src/test/java/org/apache/hadoop/ozone/client/rpc/TestBlockOutputStream.java
index 9411216ae2..d02c7636ca 100644
--- 
a/hadoop-ozone/integration-test/src/test/java/org/apache/hadoop/ozone/client/rpc/TestBlockOutputStream.java
+++ 
b/hadoop-ozone/integration-test/src/test/java/org/apache/hadoop/ozone/client/rpc/TestBlockOutputStream.java
@@ -22,6 +22,7 @@ import java.time.Duration;
 import java.util.UUID;
 import java.util.concurrent.TimeUnit;
 import java.util.concurrent.TimeoutException;
+import java.util.stream.Stream;
 
 import org.apache.commons.lang3.RandomUtils;
 import org.apache.hadoop.hdds.client.ReplicationFactor;
@@ -52,7 +53,8 @@ import org.junit.jupiter.api.BeforeAll;
 import org.junit.jupiter.api.TestInstance;
 import org.junit.jupiter.api.Timeout;
 import org.junit.jupiter.params.ParameterizedTest;
-import org.junit.jupiter.params.provider.ValueSource;
+import org.junit.jupiter.params.provider.Arguments;
+import org.junit.jupiter.params.provider.MethodSource;
 
 import static 
org.apache.hadoop.hdds.protocol.datanode.proto.ContainerProtos.Type.PutBlock;
 import static 
org.apache.hadoop.hdds.protocol.datanode.proto.ContainerProtos.Type.WriteChunk;
@@ -147,11 +149,21 @@ class TestBlockOutputStream {
     }
   }
 
+  private static Stream<Arguments> clientParameters() {
+    return Stream.of(
+        Arguments.of(true, true),
+        Arguments.of(true, false),
+        Arguments.of(false, true),
+        Arguments.of(false, false)
+    );
+  }
+
   static OzoneClientConfig newClientConfig(ConfigurationSource source,
-      boolean flushDelay) {
+      boolean flushDelay, boolean enablePiggybacking) {
     OzoneClientConfig clientConfig = source.getObject(OzoneClientConfig.class);
     clientConfig.setChecksumType(ChecksumType.NONE);
     clientConfig.setStreamBufferFlushDelay(flushDelay);
+    clientConfig.setEnablePutblockPiggybacking(enablePiggybacking);
     return clientConfig;
   }
 
@@ -163,9 +175,9 @@ class TestBlockOutputStream {
   }
 
   @ParameterizedTest
-  @ValueSource(booleans = {true, false})
-  void testWriteLessThanChunkSize(boolean flushDelay) throws Exception {
-    OzoneClientConfig config = newClientConfig(cluster.getConf(), flushDelay);
+  @MethodSource("clientParameters")
+  void testWriteLessThanChunkSize(boolean flushDelay, boolean 
enablePiggybacking) throws Exception {
+    OzoneClientConfig config = newClientConfig(cluster.getConf(), flushDelay, 
enablePiggybacking);
     try (OzoneClient client = newClient(cluster.getConf(), config)) {
       XceiverClientMetrics metrics =
           XceiverClientManager.getXceiverClientMetrics();
@@ -258,9 +270,9 @@ class TestBlockOutputStream {
   }
 
   @ParameterizedTest
-  @ValueSource(booleans = {true, false})
-  void testWriteExactlyFlushSize(boolean flushDelay) throws Exception {
-    OzoneClientConfig config = newClientConfig(cluster.getConf(), flushDelay);
+  @MethodSource("clientParameters")
+  void testWriteExactlyFlushSize(boolean flushDelay, boolean 
enablePiggybacking) throws Exception {
+    OzoneClientConfig config = newClientConfig(cluster.getConf(), flushDelay, 
enablePiggybacking);
     try (OzoneClient client = newClient(cluster.getConf(), config)) {
       XceiverClientMetrics metrics =
           XceiverClientManager.getXceiverClientMetrics();
@@ -377,9 +389,9 @@ class TestBlockOutputStream {
   }
 
   @ParameterizedTest
-  @ValueSource(booleans = {true, false})
-  void testWriteMoreThanChunkSize(boolean flushDelay) throws Exception {
-    OzoneClientConfig config = newClientConfig(cluster.getConf(), flushDelay);
+  @MethodSource("clientParameters")
+  void testWriteMoreThanChunkSize(boolean flushDelay, boolean 
enablePiggybacking) throws Exception {
+    OzoneClientConfig config = newClientConfig(cluster.getConf(), flushDelay, 
enablePiggybacking);
     try (OzoneClient client = newClient(cluster.getConf(), config)) {
       XceiverClientMetrics metrics =
           XceiverClientManager.getXceiverClientMetrics();
@@ -426,7 +438,7 @@ class TestBlockOutputStream {
       key.flush();
       assertEquals(writeChunkCount + 2,
           metrics.getContainerOpCountMetrics(WriteChunk));
-      assertEquals(putBlockCount,
+      assertEquals(putBlockCount + ((enablePiggybacking) ? 0 : 1),
           metrics.getContainerOpCountMetrics(PutBlock));
       assertEquals(pendingWriteChunkCount,
           metrics.getPendingContainerOpCountMetrics(WriteChunk));
@@ -455,9 +467,9 @@ class TestBlockOutputStream {
           metrics.getPendingContainerOpCountMetrics(PutBlock));
       assertEquals(writeChunkCount + 2,
           metrics.getContainerOpCountMetrics(WriteChunk));
-      assertEquals(putBlockCount + 1,
+      assertEquals(putBlockCount + ((enablePiggybacking) ? 1 : 2),
           metrics.getContainerOpCountMetrics(PutBlock));
-      assertEquals(totalOpCount + 3, metrics.getTotalOpCount());
+      assertEquals(totalOpCount  + ((enablePiggybacking) ? 3 : 4), 
metrics.getTotalOpCount());
       assertEquals(0, keyOutputStream.getStreamEntries().size());
 
       validateData(keyName, data1, client.getObjectStore(), VOLUME, BUCKET);
@@ -465,9 +477,9 @@ class TestBlockOutputStream {
   }
 
   @ParameterizedTest
-  @ValueSource(booleans = {true, false})
-  void testWriteMoreThanFlushSize(boolean flushDelay) throws Exception {
-    OzoneClientConfig config = newClientConfig(cluster.getConf(), flushDelay);
+  @MethodSource("clientParameters")
+  void testWriteMoreThanFlushSize(boolean flushDelay, boolean 
enablePiggybacking) throws Exception {
+    OzoneClientConfig config = newClientConfig(cluster.getConf(), flushDelay, 
enablePiggybacking);
     try (OzoneClient client = newClient(cluster.getConf(), config)) {
       XceiverClientMetrics metrics =
           XceiverClientManager.getXceiverClientMetrics();
@@ -539,9 +551,10 @@ class TestBlockOutputStream {
       assertEquals(writeChunkCount + 3,
           metrics.getContainerOpCountMetrics(WriteChunk));
       // If the flushDelay was disabled, it sends PutBlock with the data in 
the buffer.
-      assertEquals(putBlockCount + (flushDelay ? 1 : 2),
+      assertEquals(putBlockCount + (flushDelay ? 2 : 3) - (enablePiggybacking 
? 1 : 0),
           metrics.getContainerOpCountMetrics(PutBlock));
-      assertEquals(totalOpCount + (flushDelay ? 4 : 5), 
metrics.getTotalOpCount());
+      assertEquals(totalOpCount + (flushDelay ? 5 : 6) - (enablePiggybacking ? 
1 : 0),
+          metrics.getTotalOpCount());
       assertEquals(dataLength, blockOutputStream.getTotalAckDataLength());
       // make sure the bufferPool is empty
       assertEquals(0, blockOutputStream.getBufferPool().computeBufferData());
@@ -554,9 +567,9 @@ class TestBlockOutputStream {
   }
 
   @ParameterizedTest
-  @ValueSource(booleans = {true, false})
-  void testWriteExactlyMaxFlushSize(boolean flushDelay) throws Exception {
-    OzoneClientConfig config = newClientConfig(cluster.getConf(), flushDelay);
+  @MethodSource("clientParameters")
+  void testWriteExactlyMaxFlushSize(boolean flushDelay, boolean 
enablePiggybacking) throws Exception {
+    OzoneClientConfig config = newClientConfig(cluster.getConf(), flushDelay, 
enablePiggybacking);
     try (OzoneClient client = newClient(cluster.getConf(), config)) {
       XceiverClientMetrics metrics =
           XceiverClientManager.getXceiverClientMetrics();
@@ -645,9 +658,9 @@ class TestBlockOutputStream {
   }
 
   @ParameterizedTest
-  @ValueSource(booleans = {true, false})
-  void testWriteMoreThanMaxFlushSize(boolean flushDelay) throws Exception {
-    OzoneClientConfig config = newClientConfig(cluster.getConf(), flushDelay);
+  @MethodSource("clientParameters")
+  void testWriteMoreThanMaxFlushSize(boolean flushDelay, boolean 
enablePiggybacking) throws Exception {
+    OzoneClientConfig config = newClientConfig(cluster.getConf(), flushDelay, 
enablePiggybacking);
     try (OzoneClient client = newClient(cluster.getConf(), config)) {
       XceiverClientMetrics metrics =
           XceiverClientManager.getXceiverClientMetrics();
@@ -732,9 +745,9 @@ class TestBlockOutputStream {
       assertEquals(writeChunkCount + 5,
           metrics.getContainerOpCountMetrics(WriteChunk));
       // The previous flush did not trigger any action with flushDelay enabled
-      assertEquals(putBlockCount + (flushDelay ? 2 : 3),
+      assertEquals(putBlockCount + (flushDelay ? 2 : 3)  + (enablePiggybacking 
? 0 : 1),
           metrics.getContainerOpCountMetrics(PutBlock));
-      assertEquals(totalOpCount + (flushDelay ? 7 : 8),
+      assertEquals(totalOpCount + (flushDelay ? 7 : 8) + ((enablePiggybacking 
? 0 : 1)),
           metrics.getTotalOpCount());
       assertEquals(dataLength, blockOutputStream.getTotalAckDataLength());
       assertEquals(0, 
blockOutputStream.getCommitIndex2flushedDataMap().size());
diff --git 
a/hadoop-ozone/integration-test/src/test/java/org/apache/hadoop/ozone/client/rpc/TestBlockOutputStreamWithFailures.java
 
b/hadoop-ozone/integration-test/src/test/java/org/apache/hadoop/ozone/client/rpc/TestBlockOutputStreamWithFailures.java
index 708f4cec04..8d69da3ef3 100644
--- 
a/hadoop-ozone/integration-test/src/test/java/org/apache/hadoop/ozone/client/rpc/TestBlockOutputStreamWithFailures.java
+++ 
b/hadoop-ozone/integration-test/src/test/java/org/apache/hadoop/ozone/client/rpc/TestBlockOutputStreamWithFailures.java
@@ -56,7 +56,10 @@ import org.junit.jupiter.api.BeforeEach;
 import org.junit.jupiter.api.TestInstance;
 import org.junit.jupiter.api.Timeout;
 import org.junit.jupiter.params.ParameterizedTest;
-import org.junit.jupiter.params.provider.ValueSource;
+import org.junit.jupiter.params.provider.Arguments;
+import org.junit.jupiter.params.provider.MethodSource;
+
+import java.util.stream.Stream;
 
 /**
  * Tests failure detection and handling in BlockOutputStream Class.
@@ -79,10 +82,19 @@ class TestBlockOutputStreamWithFailures {
     }
   }
 
+  private static Stream<Arguments> clientParameters() {
+    return Stream.of(
+        Arguments.of(true, true),
+        Arguments.of(true, false),
+        Arguments.of(false, true),
+        Arguments.of(false, false)
+    );
+  }
+
   @ParameterizedTest
-  @ValueSource(booleans = {true, false})
-  void testContainerClose(boolean flushDelay) throws Exception {
-    OzoneClientConfig config = newClientConfig(cluster.getConf(), flushDelay);
+  @MethodSource("clientParameters")
+  void testContainerClose(boolean flushDelay, boolean enablePiggybacking) 
throws Exception {
+    OzoneClientConfig config = newClientConfig(cluster.getConf(), flushDelay, 
enablePiggybacking);
     try (OzoneClient client = newClient(cluster.getConf(), config)) {
       testWatchForCommitWithCloseContainerException(client);
       testWatchForCommitWithSingleNodeRatis(client);
@@ -174,10 +186,10 @@ class TestBlockOutputStreamWithFailures {
   }
 
   @ParameterizedTest
-  @ValueSource(booleans = {true, false})
+  @MethodSource("clientParameters")
   @Flaky("HDDS-6113")
-  void testWatchForCommitDatanodeFailure(boolean flushDelay) throws Exception {
-    OzoneClientConfig config = newClientConfig(cluster.getConf(), flushDelay);
+  void testWatchForCommitDatanodeFailure(boolean flushDelay, boolean 
enablePiggybacking) throws Exception {
+    OzoneClientConfig config = newClientConfig(cluster.getConf(), flushDelay, 
enablePiggybacking);
     try (OzoneClient client = newClient(cluster.getConf(), config)) {
       String keyName = getKeyName();
       OzoneOutputStream key = createKey(client, keyName);
@@ -259,9 +271,9 @@ class TestBlockOutputStreamWithFailures {
   }
 
   @ParameterizedTest
-  @ValueSource(booleans = {true, false})
-  void test2DatanodesFailure(boolean flushDelay) throws Exception {
-    OzoneClientConfig config = newClientConfig(cluster.getConf(), flushDelay);
+  @MethodSource("clientParameters")
+  void test2DatanodesFailure(boolean flushDelay, boolean enablePiggybacking) 
throws Exception {
+    OzoneClientConfig config = newClientConfig(cluster.getConf(), flushDelay, 
enablePiggybacking);
     try (OzoneClient client = newClient(cluster.getConf(), config)) {
       String keyName = getKeyName();
       OzoneOutputStream key = createKey(client, keyName);
@@ -560,10 +572,10 @@ class TestBlockOutputStreamWithFailures {
   }
 
   @ParameterizedTest
-  @ValueSource(booleans = {true, false})
+  @MethodSource("clientParameters")
   @Flaky("HDDS-6113")
-  void testDatanodeFailureWithSingleNode(boolean flushDelay) throws Exception {
-    OzoneClientConfig config = newClientConfig(cluster.getConf(), flushDelay);
+  void testDatanodeFailureWithSingleNode(boolean flushDelay, boolean 
enablePiggybacking) throws Exception {
+    OzoneClientConfig config = newClientConfig(cluster.getConf(), flushDelay, 
enablePiggybacking);
     try (OzoneClient client = newClient(cluster.getConf(), config)) {
       String keyName = getKeyName();
       OzoneOutputStream key =
@@ -650,10 +662,10 @@ class TestBlockOutputStreamWithFailures {
   }
 
   @ParameterizedTest
-  @ValueSource(booleans = {true, false})
-  void testDatanodeFailureWithPreAllocation(boolean flushDelay)
+  @MethodSource("clientParameters")
+  void testDatanodeFailureWithPreAllocation(boolean flushDelay, boolean 
enablePiggybacking)
       throws Exception {
-    OzoneClientConfig config = newClientConfig(cluster.getConf(), flushDelay);
+    OzoneClientConfig config = newClientConfig(cluster.getConf(), flushDelay, 
enablePiggybacking);
     try (OzoneClient client = newClient(cluster.getConf(), config)) {
       String keyName = getKeyName();
       OzoneOutputStream key =


---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to