return r;
}
- int RGWRados::cls_obj_usage_log_read(string& oid, string& user, uint64_t start_epoch, uint64_t end_epoch, uint32_t max_entries,
- string& read_iter, map<rgw_user_bucket, rgw_usage_log_entry>& usage, bool *is_truncated)
+ int RGWRados::cls_obj_usage_log_read(const string& oid, const string& user, const string& bucket,
+ uint64_t start_epoch, uint64_t end_epoch, uint32_t max_entries,
+ string& read_iter, map<rgw_user_bucket, rgw_usage_log_entry>& usage,
+ bool *is_truncated)
{
- rgw_raw_obj obj(get_zone_params().usage_log_pool, oid);
+ rgw_raw_obj obj(svc.zone->get_zone_params().usage_log_pool, oid);
rgw_rados_ref ref;
int r = get_raw_obj_ref(obj, &ref);
return r;
}
- int RGWRados::cls_obj_usage_log_trim(string& oid, string& user, uint64_t start_epoch, uint64_t end_epoch)
+ int RGWRados::cls_obj_usage_log_trim(const string& oid, const string& user, const string& bucket,
+ uint64_t start_epoch, uint64_t end_epoch)
{
- rgw_raw_obj obj(get_zone_params().usage_log_pool, oid);
+ rgw_raw_obj obj(svc.zone->get_zone_params().usage_log_pool, oid);
rgw_rados_ref ref;
int r = get_raw_obj_ref(obj, &ref);
// read the entries, and see that we have all the added entries
ASSERT_EQ(0, ret);
ASSERT_FALSE(truncated);
- ASSERT_EQ(total_usage_entries, usage.size());
+ ASSERT_EQ(static_cast<uint64_t>(total_usage_entries), usage.size());
// delete and read to assert that we've deleted all the values
- ASSERT_EQ(0, cls_rgw_usage_log_trim(ioctx, oid, user, start_epoch, end_epoch));
+ ASSERT_EQ(0, cls_rgw_usage_log_trim(ioctx, oid, user, "", start_epoch, end_epoch));
- ret = cls_rgw_usage_log_read(ioctx, oid, user, start_epoch, end_epoch,
+ ret = cls_rgw_usage_log_read(ioctx, oid, user, "", start_epoch, end_epoch,
max_entries, read_iter, usage2, &truncated);
ASSERT_EQ(0, ret);
- ASSERT_EQ(0, usage2.size());
+ ASSERT_EQ(0u, usage2.size());
+ // add and read to assert that bucket option is valid for usage reading
+ string bucket1 = "bucket-usage-1";
+ string bucket2 = "bucket-usage-2";
+ info = gen_usage_log_info(payer, bucket1, 100);
+ cls_rgw_usage_log_add(op, info);
+ ASSERT_EQ(0, ioctx.operate(oid, &op));
+
+ info = gen_usage_log_info(payer, bucket2, 100);
+ cls_rgw_usage_log_add(op, info);
+ ASSERT_EQ(0, ioctx.operate(oid, &op));
+ ret = cls_rgw_usage_log_read(ioctx, oid, "", bucket1, start_epoch, end_epoch,
+ max_entries, read_iter, usage2, &truncated);
+ ASSERT_EQ(0, ret);
+ ASSERT_EQ(100, usage2.size());
+
+ // delete and read to assert that bucket option is valid for usage trim
+ ASSERT_EQ(0, cls_rgw_usage_log_trim(ioctx, oid, "", bucket1, start_epoch, end_epoch));
+
+ ret = cls_rgw_usage_log_read(ioctx, oid, "", bucket1, start_epoch, end_epoch,
+ max_entries, read_iter, usage2, &truncated);
+ ASSERT_EQ(0, ret);
+ ASSERT_EQ(0, usage2.size());
+ ASSERT_EQ(0, cls_rgw_usage_log_trim(ioctx, oid, "", bucket2, start_epoch, end_epoch));
}
TEST(cls_rgw, usage_clear_no_obj)
bool truncated;
uint64_t start_epoch{0}, end_epoch{(uint64_t) -1};
string read_iter;
- ret = cls_rgw_usage_log_read(ioctx, oid, user, start_epoch, end_epoch,
+ ret = cls_rgw_usage_log_read(ioctx, oid, user, "", start_epoch, end_epoch,
max_entries, read_iter, usage, &truncated);
ASSERT_EQ(0, ret);
- ASSERT_EQ(0, usage.size());
+ ASSERT_EQ(0u, usage.size());
}