/// @param v [in] value (non-negative)
/// @param lower [out] pointer to lower-bound (0..1000000)
/// @param upper [out] pointer to the upper bound (0..1000000)
- int get_position_micro(int32_t v, unsigned *lower, unsigned *upper) {
+ int get_position_micro(int32_t v, uint64_t *lower, uint64_t *upper) {
if (v < 0)
return -1;
unsigned bin = calc_bits_of(v);
- unsigned lower_sum = 0, upper_sum = 0, total = 0;
+ uint64_t lower_sum = 0, upper_sum = 0, total = 0;
for (unsigned i=0; i<h.size(); ++i) {
if (i <= bin)
upper_sum += h[i];
int atime = -1, temp = 0;
agent_estimate_atime_temp(soid, &atime, NULL /*FIXME &temp*/);
- unsigned atime_upper = 0, atime_lower = 0;
+ uint64_t atime_upper = 0, atime_lower = 0;
if (atime < 0 && obc->obs.oi.mtime != utime_t())
atime = ceph_clock_now(NULL).sec() - obc->obs.oi.mtime;
if (atime < 0)
TEST(Histogram, Position) {
{
pow2_hist_t h;
- unsigned lb, ub;
+ uint64_t lb, ub;
h.add(0);
ASSERT_EQ(-1, h.get_position_micro(-20, &lb, &ub));
}
{
pow2_hist_t h;
h.add(0);
- unsigned lb, ub;
+ uint64_t lb, ub;
h.get_position_micro(0, &lb, &ub);
- ASSERT_EQ(0, lb);
- ASSERT_EQ(1000000, ub);
+ ASSERT_EQ(0u, lb);
+ ASSERT_EQ(1000000u, ub);
h.add(0);
h.add(0);
h.add(0);
h.get_position_micro(0, &lb, &ub);
- ASSERT_EQ(0, lb);
- ASSERT_EQ(1000000, ub);
+ ASSERT_EQ(0u, lb);
+ ASSERT_EQ(1000000u, ub);
}
{
pow2_hist_t h;
h.add(1);
h.add(1);
- unsigned lb, ub;
+ uint64_t lb, ub;
h.get_position_micro(0, &lb, &ub);
- ASSERT_EQ(0, lb);
- ASSERT_EQ(0, ub);
+ ASSERT_EQ(0u, lb);
+ ASSERT_EQ(0u, ub);
h.add(0);
h.get_position_micro(0, &lb, &ub);
- ASSERT_EQ(0, lb);
- ASSERT_EQ(333333, ub);
+ ASSERT_EQ(0u, lb);
+ ASSERT_EQ(333333u, ub);
h.get_position_micro(1, &lb, &ub);
- ASSERT_EQ(333333, lb);
- ASSERT_EQ(1000000, ub);
+ ASSERT_EQ(333333u, lb);
+ ASSERT_EQ(1000000u, ub);
}
{
pow2_hist_t h;
- h.add(1);
- h.add(10);
- unsigned lb, ub;
+ h.h.resize(10, 0);
+ h.h[0] = 1;
+ h.h[5] = 1;
+ uint64_t lb, ub;
h.get_position_micro(4, &lb, &ub);
- ASSERT_EQ(500000, lb);
- ASSERT_EQ(500000, ub);
+ ASSERT_EQ(500000u, lb);
+ ASSERT_EQ(500000u, ub);
+ }
+ {
+ pow2_hist_t h;
+ h.h.resize(10, 0);
+ h.h[0] = UINT_MAX;
+ h.h[5] = UINT_MAX;
+ uint64_t lb, ub;
+ ASSERT_EQ(500000u, lb);
+ ASSERT_EQ(500000u, ub);
}
}
ASSERT_EQ(6, h.h[3]);
ASSERT_EQ(4u, h.h.size());
}
+
+/*
+ * Local Variables:
+ * compile-command: "cd ../.. ; make -j4 &&
+ * make unittest_histogram &&
+ * valgrind --tool=memcheck --leak-check=full \
+ * ./unittest_histogram
+ * "
+ * End:
+ */