1 // -*- mode:C++; tab-width:8; c-basic-offset:2; indent-tabs-mode:t -*-
2 // vim: ts=8 sw=2 smarttab
4 * Ceph - scalable distributed file system
6 * Copyright (C) 2014 Inktank <info@inktank.com>
8 * LGPL2.1 (see COPYING-LGPL2.1) or later
12 #include <gtest/gtest.h>
14 #include "common/histogram.h"
15 #include "include/stringify.h"
17 TEST(Histogram, Basic) {
24 ASSERT_EQ(1u, h.h.size());
29 ASSERT_EQ(2u, h.h.size());
36 ASSERT_EQ(3u, h.h.size());
39 TEST(Histogram, Set) {
43 ASSERT_EQ(12, h.h[0]);
45 ASSERT_EQ(12, h.h[2]);
46 ASSERT_EQ(3u, h.h.size());
49 TEST(Histogram, Position) {
53 ASSERT_EQ(-1, h.get_position_micro(-20, &lb, &ub));
56 TEST(Histogram, Position1) {
60 h.get_position_micro(0, &lb, &ub);
62 ASSERT_EQ(1000000u, ub);
66 h.get_position_micro(0, &lb, &ub);
68 ASSERT_EQ(1000000u, ub);
71 TEST(Histogram, Position2) {
76 h.get_position_micro(0, &lb, &ub);
80 h.get_position_micro(0, &lb, &ub);
82 ASSERT_EQ(333333u, ub);
83 h.get_position_micro(1, &lb, &ub);
84 ASSERT_EQ(333333u, lb);
85 ASSERT_EQ(1000000u, ub);
88 TEST(Histogram, Position3) {
94 h.get_position_micro(4, &lb, &ub);
95 ASSERT_EQ(500000u, lb);
96 ASSERT_EQ(500000u, ub);
99 TEST(Histogram, Position4) {
105 h.get_position_micro(4, &lb, &ub);
110 TEST(Histogram, Decay) {
116 ASSERT_EQ(61, h.h[0]);
117 ASSERT_EQ(6, h.h[3]);
118 ASSERT_EQ(4u, h.h.size());
123 * compile-command: "cd ../.. ; make -j4 &&
124 * make unittest_histogram &&
125 * valgrind --tool=memcheck --leak-check=full \
126 * ./unittest_histogram