From: Loic Dachary Date: Mon, 22 Sep 2014 12:14:01 +0000 (+0200) Subject: erasure-code: add test for isa chunk_size method X-Git-Tag: v0.86~29^2~1 X-Git-Url: http://git-server-git.apps.pok.os.sepia.ceph.com/?a=commitdiff_plain;h=eb8fdfa4f5f7dcadc8bf2f1d4799cfe676bee800;p=ceph.git erasure-code: add test for isa chunk_size method Signed-off-by: Loic Dachary --- diff --git a/src/test/erasure-code/TestErasureCodeIsa.cc b/src/test/erasure-code/TestErasureCodeIsa.cc index e29256551a57..43b28034d05a 100644 --- a/src/test/erasure-code/TestErasureCodeIsa.cc +++ b/src/test/erasure-code/TestErasureCodeIsa.cc @@ -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 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 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);