]> git.proxmox.com Git - ceph.git/blob - ceph/src/test/test_striper.cc
buildsys: switch source download to quincy
[ceph.git] / ceph / src / test / test_striper.cc
1 #include "gtest/gtest.h"
2 #include "global/global_context.h"
3
4 #include "osdc/Striper.h"
5
6 TEST(Striper, Stripe1)
7 {
8 file_layout_t l;
9
10 l.object_size = 262144;
11 l.stripe_unit = 4096;
12 l.stripe_count = 3;
13
14 vector<ObjectExtent> ex;
15 Striper::file_to_extents(g_ceph_context, 1, &l, 5006035, 46419, 5006035, ex);
16
17 cout << "result " << ex << std::endl;
18
19 ASSERT_EQ(3u, ex.size());
20 ASSERT_EQ(98304u, ex[0].truncate_size);
21 ASSERT_EQ(ex[1].offset, ex[1].truncate_size);
22 ASSERT_EQ(94208u, ex[2].truncate_size);
23 }
24
25 TEST(Striper, EmptyPartialResult)
26 {
27 file_layout_t l;
28
29 l.object_size = 4194304;
30 l.stripe_unit = 4194304;
31 l.stripe_count = 1;
32
33 vector<ObjectExtent> ex;
34 Striper::file_to_extents(g_ceph_context, 1, &l, 725549056, 131072, 72554905600, ex);
35 cout << "ex " << ex << std::endl;
36 ASSERT_EQ(2u, ex.size());
37
38 Striper::StripedReadResult r;
39
40 bufferlist bl;
41 r.add_partial_result(g_ceph_context, bl, ex[1].buffer_extents);
42
43 bufferptr bp(65536);
44 bp.zero();
45 bl.append(bp);
46
47 r.add_partial_result(g_ceph_context, bl, ex[0].buffer_extents);
48
49 bufferlist outbl;
50 r.assemble_result(g_ceph_context, outbl, false);
51
52 ASSERT_EQ(65536u, outbl.length());
53 }
54
55 TEST(Striper, GetNumObj)
56 {
57 file_layout_t l;
58
59 l.object_size = 262144;
60 l.stripe_unit = 4096;
61 l.stripe_count = 3;
62 uint64_t size,numobjs;
63 size = 6999;
64 numobjs = Striper::get_num_objects(l, size);
65 ASSERT_EQ(2u, numobjs);
66 size = 793320;
67 numobjs = Striper::get_num_objects(l, size);
68 ASSERT_EQ(5u, numobjs);
69 size = 805608;
70 numobjs = Striper::get_num_objects(l, size);
71 ASSERT_EQ(6u, numobjs);
72 }
73
74 TEST(Striper, GetFileOffset)
75 {
76 file_layout_t l;
77
78 l.object_size = 262144;
79 l.stripe_unit = 4096;
80 l.stripe_count = 3;
81
82 uint64_t object_no = 100;
83 uint64_t object_off = 200000;
84 uint64_t file_offset = Striper::get_file_offset(
85 g_ceph_context, &l, object_no, object_off);
86 ASSERT_EQ(26549568u, file_offset);
87 }