]>
Commit | Line | Data |
---|---|---|
7c673cae FG |
1 | // -*- mode:C++; tab-width:8; c-basic-offset:2; indent-tabs-mode:t -*- |
2 | #include "common/Mutex.h" | |
3 | #include "common/Cond.h" | |
4 | #include "include/rados/librados.hpp" | |
5 | ||
6 | #ifndef TESTOPSTAT_H | |
7 | #define TESTOPSTAT_H | |
8 | ||
9 | class TestOp; | |
10 | ||
11 | class TestOpStat { | |
12 | public: | |
13 | mutable Mutex stat_lock; | |
14 | ||
15 | TestOpStat() : stat_lock("TestOpStat lock") {} | |
16 | ||
17 | static uint64_t gettime() | |
18 | { | |
19 | timeval t; | |
20 | gettimeofday(&t,0); | |
21 | return (1000000*t.tv_sec) + t.tv_usec; | |
22 | } | |
23 | ||
24 | class TypeStatus { | |
25 | public: | |
26 | map<TestOp*,uint64_t> inflight; | |
27 | multiset<uint64_t> latencies; | |
28 | void begin(TestOp *in) | |
29 | { | |
11fdf7f2 | 30 | ceph_assert(!inflight.count(in)); |
7c673cae FG |
31 | inflight[in] = gettime(); |
32 | } | |
33 | ||
34 | void end(TestOp *in) | |
35 | { | |
11fdf7f2 | 36 | ceph_assert(inflight.count(in)); |
7c673cae FG |
37 | uint64_t curtime = gettime(); |
38 | latencies.insert(curtime - inflight[in]); | |
39 | inflight.erase(in); | |
40 | } | |
41 | ||
42 | void export_latencies(map<double,uint64_t> &in) const; | |
43 | }; | |
44 | map<string,TypeStatus> stats; | |
45 | ||
46 | void begin(TestOp *in); | |
47 | void end(TestOp *in); | |
48 | friend std::ostream & operator<<(std::ostream &, const TestOpStat &); | |
49 | }; | |
50 | ||
51 | std::ostream & operator<<(std::ostream &out, const TestOpStat &rhs); | |
52 | ||
53 | #endif |