// -*- mode:C++; tab-width:8; c-basic-offset:2; indent-tabs-mode:t -*- #include "common/Mutex.h" #include "common/Cond.h" #include "include/rados/librados.hpp" #ifndef TESTOPSTAT_H #define TESTOPSTAT_H class TestOp; class TestOpStat { public: mutable Mutex stat_lock; TestOpStat() : stat_lock("TestOpStat lock") {} static uint64_t gettime() { timeval t; gettimeofday(&t,0); return (1000000*t.tv_sec) + t.tv_usec; } class TypeStatus { public: map inflight; multiset latencies; void begin(TestOp *in) { assert(!inflight.count(in)); inflight[in] = gettime(); } void end(TestOp *in) { assert(inflight.count(in)); uint64_t curtime = gettime(); latencies.insert(curtime - inflight[in]); inflight.erase(in); } void export_latencies(map &in) const; }; map stats; void begin(TestOp *in); void end(TestOp *in); friend std::ostream & operator<<(std::ostream &, const TestOpStat &); }; std::ostream & operator<<(std::ostream &out, const TestOpStat &rhs); #endif