]> git-server-git.apps.pok.os.sepia.ceph.com Git - ceph.git/commitdiff
erasure-code: add test for isa chunk_size method
authorLoic Dachary <loic-201408@dachary.org>
Mon, 22 Sep 2014 12:14:01 +0000 (14:14 +0200)
committerLoic Dachary <loic-201408@dachary.org>
Thu, 25 Sep 2014 16:04:58 +0000 (18:04 +0200)
Signed-off-by: Loic Dachary <loic-201408@dachary.org>
src/test/erasure-code/TestErasureCodeIsa.cc

index e29256551a57ece522705866573b120200052a72..43b28034d05a77eaa8087c00afa579c3d317a81d 100644 (file)
@@ -18,6 +18,7 @@
 #include "include/stringify.h"
 #include "global/global_init.h"
 #include "erasure-code/isa/ErasureCodeIsa.h"
+#include "erasure-code/isa/xor_op.h"
 #include "common/ceph_argparse.h"
 #include "global/global_context.h"
 #include "gtest/gtest.h"
@@ -280,6 +281,40 @@ TEST_F(IsaErasureCodeTest, minimum_to_decode)
   }
 }
 
+TEST_F(IsaErasureCodeTest, chunk_size)
+{
+  {
+    ErasureCodeIsaDefault Isa(tcache);
+    map<std::string, std::string> parameters;
+    parameters["k"] = "2";
+    parameters["m"] = "1";
+    Isa.init(parameters);
+    int k = 2;
+
+    ASSERT_EQ(EC_ISA_ADDRESS_ALIGNMENT, Isa.get_chunk_size(1));
+    ASSERT_EQ(EC_ISA_ADDRESS_ALIGNMENT, Isa.get_chunk_size(EC_ISA_ADDRESS_ALIGNMENT * k - 1));
+    ASSERT_EQ(EC_ISA_ADDRESS_ALIGNMENT * 2, Isa.get_chunk_size(EC_ISA_ADDRESS_ALIGNMENT * k + 1));
+  }
+  {
+    ErasureCodeIsaDefault Isa(tcache);
+    map<std::string, std::string> parameters;
+    parameters["k"] = "3";
+    parameters["m"] = "1";
+    Isa.init(parameters);
+    int k = 3;
+
+    ASSERT_EQ(EC_ISA_ADDRESS_ALIGNMENT, Isa.get_chunk_size(1));
+    ASSERT_EQ(EC_ISA_ADDRESS_ALIGNMENT, Isa.get_chunk_size(EC_ISA_ADDRESS_ALIGNMENT * k - 1));
+    ASSERT_EQ(EC_ISA_ADDRESS_ALIGNMENT * 2, Isa.get_chunk_size(EC_ISA_ADDRESS_ALIGNMENT * k + 1));
+    int object_size = EC_ISA_ADDRESS_ALIGNMENT * k * 1024 + 1;
+    ASSERT_NE(0, object_size % k);
+    ASSERT_NE(0, object_size % EC_ISA_ADDRESS_ALIGNMENT);
+    int chunk_size = Isa.get_chunk_size(object_size);
+    ASSERT_EQ(0, chunk_size % EC_ISA_ADDRESS_ALIGNMENT);
+    ASSERT_GT(chunk_size, (chunk_size * k) - object_size);
+  }
+}
+
 TEST_F(IsaErasureCodeTest, encode)
 {
   ErasureCodeIsaDefault Isa(tcache);