You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@ozone.apache.org by el...@apache.org on 2021/02/24 08:45:58 UTC

[ozone] 09/27: unit test

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

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

commit 834fb0ae251d672eb6097bb586c6fcb207e8404c
Author: Elek Márton <el...@apache.org>
AuthorDate: Tue Jan 26 13:57:40 2021 +0100

    unit test
---
 .../freon/containergenerator/BaseGenerator.java    |  4 ++
 .../containergenerator/GeneratorDatanode.java      | 35 +++++++++---
 .../containergenerator/TestGeneratorDatanode.java  | 62 ++++++++++++++++++++++
 3 files changed, 93 insertions(+), 8 deletions(-)

diff --git a/hadoop-ozone/tools/src/main/java/org/apache/hadoop/ozone/freon/containergenerator/BaseGenerator.java b/hadoop-ozone/tools/src/main/java/org/apache/hadoop/ozone/freon/containergenerator/BaseGenerator.java
index 4f7f468..beebd2b 100644
--- a/hadoop-ozone/tools/src/main/java/org/apache/hadoop/ozone/freon/containergenerator/BaseGenerator.java
+++ b/hadoop-ozone/tools/src/main/java/org/apache/hadoop/ozone/freon/containergenerator/BaseGenerator.java
@@ -66,4 +66,8 @@ public abstract class BaseGenerator extends BaseFreonGenerator implements
   public int getKeySize() {
     return keySize;
   }
+
+  public void setContainerIdOffset(int i) {
+    this.containerIdOffset = i;
+  }
 }
diff --git a/hadoop-ozone/tools/src/main/java/org/apache/hadoop/ozone/freon/containergenerator/GeneratorDatanode.java b/hadoop-ozone/tools/src/main/java/org/apache/hadoop/ozone/freon/containergenerator/GeneratorDatanode.java
index 8d59101..82b9fbc 100644
--- a/hadoop-ozone/tools/src/main/java/org/apache/hadoop/ozone/freon/containergenerator/GeneratorDatanode.java
+++ b/hadoop-ozone/tools/src/main/java/org/apache/hadoop/ozone/freon/containergenerator/GeneratorDatanode.java
@@ -109,12 +109,7 @@ public class GeneratorDatanode extends BaseGenerator {
   public Void call() throws Exception {
     init();
 
-    numberOfPipelines = datanodes / 3;
-
-    //generate only containers for one datanodes
-    setTestNo(getTestNo() / numberOfPipelines);
-
-    currentPipeline = (datanodeIndex - 1) % numberOfPipelines;
+    initIndexParameters();
 
     config = createOzoneConfiguration();
 
@@ -164,12 +159,20 @@ public class GeneratorDatanode extends BaseGenerator {
     return null;
   }
 
+  public void initIndexParameters() {
+    numberOfPipelines = datanodes / 3;
+
+    //generate only containers for one datanodes
+    setTestNo(getTestNo() / numberOfPipelines);
+
+    currentPipeline = (datanodeIndex - 1) % numberOfPipelines;
+  }
+
   private void generateData(long index) throws Exception {
 
     timer.time((Callable<Void>) () -> {
 
-      long containerId =
-          getContainerIdOffset() + index * numberOfPipelines + currentPipeline;
+      long containerId = getContainerIdForIndex(index);
 
       SplittableRandom random = new SplittableRandom(containerId);
 
@@ -230,6 +233,10 @@ public class GeneratorDatanode extends BaseGenerator {
 
   }
 
+  public long getContainerIdForIndex(long index) {
+    return getContainerIdOffset() + index * numberOfPipelines + currentPipeline;
+  }
+
   private void generatedRandomData(SplittableRandom random, byte[] data) {
     int bit = 0;
     int writtenBytes = 0;
@@ -300,4 +307,16 @@ public class GeneratorDatanode extends BaseGenerator {
     chunkManager.finishWriteChunks(container, new BlockData(blockId));
   }
 
+  public void setDatanodes(int datanodes) {
+    this.datanodes = datanodes;
+  }
+
+  public void setDatanodeIndex(int datanodeIndex) {
+    this.datanodeIndex = datanodeIndex;
+  }
+
+  public void setNumberOfPipelines(int i) {
+    this.numberOfPipelines = i;
+  }
+
 }
diff --git a/hadoop-ozone/tools/src/test/java/org/apache/hadoop/ozone/freon/containergenerator/TestGeneratorDatanode.java b/hadoop-ozone/tools/src/test/java/org/apache/hadoop/ozone/freon/containergenerator/TestGeneratorDatanode.java
new file mode 100644
index 0000000..560fa24
--- /dev/null
+++ b/hadoop-ozone/tools/src/test/java/org/apache/hadoop/ozone/freon/containergenerator/TestGeneratorDatanode.java
@@ -0,0 +1,62 @@
+package org.apache.hadoop.ozone.freon.containergenerator;
+
+import org.junit.Assert;
+import static org.junit.Assert.*;
+import org.junit.Test;
+
+public class TestGeneratorDatanode {
+
+  @Test
+  public void indexForOnePipeline() {
+    final GeneratorDatanode generatorDatanode = new GeneratorDatanode();
+    generatorDatanode.setThreadNo(50);
+    generatorDatanode.setDatanodeIndex(1);
+    generatorDatanode.setDatanodes(3);
+    generatorDatanode.setNumberOfPipelines(3);
+    generatorDatanode.setContainerIdOffset(1);
+
+    for (int i = 1; i <= 3; i++) {
+      generatorDatanode.setDatanodeIndex(i);
+      generatorDatanode.initIndexParameters();
+      Assert.assertEquals(1L, generatorDatanode.getContainerIdForIndex(0L));
+      Assert.assertEquals(2L, generatorDatanode.getContainerIdForIndex(1L));
+      Assert.assertEquals(3L, generatorDatanode.getContainerIdForIndex(2L));
+      Assert.assertEquals(4L, generatorDatanode.getContainerIdForIndex(3L));
+      Assert.assertEquals(5L, generatorDatanode.getContainerIdForIndex(4L));
+      Assert.assertEquals(6L, generatorDatanode.getContainerIdForIndex(5L));
+    }
+  }
+
+  @Test
+  public void indexForNineNode() {
+    final GeneratorDatanode generatorDatanode = new GeneratorDatanode();
+    generatorDatanode.setThreadNo(50);
+    generatorDatanode.setDatanodeIndex(1);
+    generatorDatanode.setDatanodes(3);
+    generatorDatanode.setNumberOfPipelines(3);
+    generatorDatanode.setContainerIdOffset(1);
+
+    generatorDatanode.setDatanodeIndex(1);
+    Assert.assertEquals(1L, generatorDatanode.getContainerIdForIndex(1L));
+    Assert.assertEquals(2L, generatorDatanode.getContainerIdForIndex(2L));
+    Assert.assertEquals(3L, generatorDatanode.getContainerIdForIndex(3L));
+    Assert.assertEquals(4L, generatorDatanode.getContainerIdForIndex(4L));
+    Assert.assertEquals(5L, generatorDatanode.getContainerIdForIndex(5L));
+
+    generatorDatanode.setDatanodeIndex(2);
+    Assert.assertEquals(1L, generatorDatanode.getContainerIdForIndex(1L));
+    Assert.assertEquals(2L, generatorDatanode.getContainerIdForIndex(2L));
+    Assert.assertEquals(3L, generatorDatanode.getContainerIdForIndex(3L));
+    Assert.assertEquals(4L, generatorDatanode.getContainerIdForIndex(4L));
+    Assert.assertEquals(5L, generatorDatanode.getContainerIdForIndex(5L));
+
+    generatorDatanode.setDatanodeIndex(3);
+    Assert.assertEquals(1L, generatorDatanode.getContainerIdForIndex(1L));
+    Assert.assertEquals(2L, generatorDatanode.getContainerIdForIndex(2L));
+    Assert.assertEquals(3L, generatorDatanode.getContainerIdForIndex(3L));
+    Assert.assertEquals(4L, generatorDatanode.getContainerIdForIndex(4L));
+    Assert.assertEquals(5L, generatorDatanode.getContainerIdForIndex(5L));
+
+  }
+
+}
\ No newline at end of file


---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@ozone.apache.org
For additional commands, e-mail: commits-help@ozone.apache.org