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