|
29 | 29 |
|
30 | 30 | using namespace std; |
31 | 31 |
|
| 32 | +void compare_pg_pool_t(const pg_pool_t l, const pg_pool_t r) |
| 33 | +{ |
| 34 | + ASSERT_EQ(l.type, r.type); |
| 35 | + ASSERT_EQ(l.size, r.size); |
| 36 | + ASSERT_EQ(l.crush_rule, r.crush_rule); |
| 37 | + ASSERT_EQ(l.object_hash, r.object_hash); |
| 38 | + ASSERT_EQ(l.last_change, r.last_change); |
| 39 | + ASSERT_EQ(l.snap_seq, r.snap_seq); |
| 40 | + ASSERT_EQ(l.snap_epoch, r.snap_epoch); |
| 41 | + //ASSERT_EQ(l.snaps, r.snaps); |
| 42 | + ASSERT_EQ(l.removed_snaps, r.removed_snaps); |
| 43 | + ASSERT_EQ(l.auid, r.auid); |
| 44 | + ASSERT_EQ(l.flags, r.flags); |
| 45 | + ASSERT_EQ(l.min_size, r.min_size); |
| 46 | + ASSERT_EQ(l.quota_max_bytes, r.quota_max_bytes); |
| 47 | + ASSERT_EQ(l.quota_max_objects, r.quota_max_objects); |
| 48 | + ASSERT_EQ(l.tiers, r.tiers); |
| 49 | + ASSERT_EQ(l.tier_of, r.tier_of); |
| 50 | + ASSERT_EQ(l.read_tier, r.read_tier); |
| 51 | + ASSERT_EQ(l.write_tier, r.write_tier); |
| 52 | + ASSERT_EQ(l.properties, r.properties); |
| 53 | + //ASSERT_EQ(l.hit_set_params, r.hit_set_params); |
| 54 | + //ASSERT_EQ(l.hit_set_period, r.hit_set_period); |
| 55 | + //ASSERT_EQ(l.hit_set_count, r.hit_set_count); |
| 56 | + ASSERT_EQ(l.stripe_width, r.stripe_width); |
| 57 | + ASSERT_EQ(l.target_max_bytes, r.target_max_bytes); |
| 58 | + ASSERT_EQ(l.target_max_objects, r.target_max_objects); |
| 59 | + ASSERT_EQ(l.cache_target_dirty_ratio_micro, r.cache_target_dirty_ratio_micro); |
| 60 | + ASSERT_EQ(l.cache_target_full_ratio_micro, r.cache_target_full_ratio_micro); |
| 61 | + ASSERT_EQ(l.cache_min_flush_age, r.cache_min_flush_age); |
| 62 | + ASSERT_EQ(l.cache_min_evict_age, r.cache_min_evict_age); |
| 63 | + ASSERT_EQ(l.erasure_code_profile, r.erasure_code_profile); |
| 64 | + ASSERT_EQ(l.last_force_op_resend_preluminous, r.last_force_op_resend_preluminous); |
| 65 | + ASSERT_EQ(l.min_read_recency_for_promote, r.min_read_recency_for_promote); |
| 66 | + ASSERT_EQ(l.expected_num_objects, r.expected_num_objects); |
| 67 | + ASSERT_EQ(l.cache_target_dirty_high_ratio_micro, r.cache_target_dirty_high_ratio_micro); |
| 68 | + ASSERT_EQ(l.min_write_recency_for_promote, r.min_write_recency_for_promote); |
| 69 | + ASSERT_EQ(l.use_gmt_hitset, r.use_gmt_hitset); |
| 70 | + ASSERT_EQ(l.fast_read, r.fast_read); |
| 71 | + ASSERT_EQ(l.hit_set_grade_decay_rate, r.hit_set_grade_decay_rate); |
| 72 | + ASSERT_EQ(l.hit_set_search_last_n, r.hit_set_search_last_n); |
| 73 | + //ASSERT_EQ(l.opts, r.opts); |
| 74 | + ASSERT_EQ(l.last_force_op_resend_prenautilus, r.last_force_op_resend_prenautilus); |
| 75 | + ASSERT_EQ(l.application_metadata, r.application_metadata); |
| 76 | + ASSERT_EQ(l.create_time, r.create_time); |
| 77 | + ASSERT_EQ(l.get_pg_num_target(), r.get_pg_num_target()); |
| 78 | + ASSERT_EQ(l.get_pgp_num_target(), r.get_pgp_num_target()); |
| 79 | + ASSERT_EQ(l.get_pg_num_pending(), r.get_pg_num_pending()); |
| 80 | + ASSERT_EQ(l.last_force_op_resend, r.last_force_op_resend); |
| 81 | + ASSERT_EQ(l.pg_autoscale_mode, r.pg_autoscale_mode); |
| 82 | + ASSERT_EQ(l.last_pg_merge_meta.source_pgid, r.last_pg_merge_meta.source_pgid); |
| 83 | + ASSERT_EQ(l.peering_crush_bucket_count, r.peering_crush_bucket_count); |
| 84 | + ASSERT_EQ(l.peering_crush_bucket_target, r.peering_crush_bucket_target); |
| 85 | + ASSERT_EQ(l.peering_crush_bucket_barrier, r.peering_crush_bucket_barrier); |
| 86 | + ASSERT_EQ(l.peering_crush_mandatory_member, r.peering_crush_mandatory_member); |
| 87 | + ASSERT_EQ(l.peering_crush_bucket_count , r.peering_crush_bucket_count); |
| 88 | + ASSERT_EQ(l.peering_crush_bucket_target , r.peering_crush_bucket_target); |
| 89 | + ASSERT_EQ(l.peering_crush_bucket_barrier , r.peering_crush_bucket_barrier); |
| 90 | + ASSERT_EQ(l.peering_crush_mandatory_member , r.peering_crush_mandatory_member); |
| 91 | +} |
| 92 | + |
| 93 | +TEST(pg_pool_t, encodeDecode) |
| 94 | +{ |
| 95 | + uint64_t features = CEPH_FEATURE_CRUSH_TUNABLES5 | |
| 96 | + CEPH_FEATURE_INCARNATION_2 | |
| 97 | + CEPH_FEATURE_PGPOOL3 | |
| 98 | + CEPH_FEATURE_OSDENC | |
| 99 | + CEPH_FEATURE_OSD_POOLRESEND | |
| 100 | + CEPH_FEATURE_NEW_OSDOP_ENCODING | |
| 101 | + CEPH_FEATUREMASK_SERVER_LUMINOUS | |
| 102 | + CEPH_FEATUREMASK_SERVER_MIMIC | |
| 103 | + CEPH_FEATUREMASK_SERVER_NAUTILUS; |
| 104 | + { |
| 105 | + pg_pool_t p; |
| 106 | + std::list<pg_pool_t*> pools; |
| 107 | + |
| 108 | + p.generate_test_instances(pools); |
| 109 | + for(auto p1 : pools){ |
| 110 | + bufferlist bl; |
| 111 | + p1->encode(bl, features); |
| 112 | + bl.hexdump(std::cout); |
| 113 | + auto pbl = bl.cbegin(); |
| 114 | + pg_pool_t p2; |
| 115 | + p2.decode(pbl); |
| 116 | + compare_pg_pool_t(*p1, p2); |
| 117 | + } |
| 118 | + } |
| 119 | + |
| 120 | + { |
| 121 | + // test reef |
| 122 | + pg_pool_t p; |
| 123 | + std::list<pg_pool_t*> pools; |
| 124 | + p.generate_test_instances(pools); |
| 125 | + for(auto p1 : pools){ |
| 126 | + bufferlist bl; |
| 127 | + p1->encode(bl, features|CEPH_FEATUREMASK_SERVER_REEF); |
| 128 | + bl.hexdump(std::cout); |
| 129 | + auto pbl = bl.cbegin(); |
| 130 | + pg_pool_t p2; |
| 131 | + p2.decode(pbl); |
| 132 | + compare_pg_pool_t(*p1, p2); |
| 133 | + } |
| 134 | + } |
| 135 | +} |
| 136 | + |
32 | 137 | TEST(hobject, prefixes0) |
33 | 138 | { |
34 | 139 | uint32_t mask = 0xE947FA20; |
|
0 commit comments