RTBKit  0.9
Open-source framework to create real-time ad bidding systems.
core/monitor/testing/mock_monitor_provider.h
00001 #include "boost/algorithm/string.hpp"
00002 #include "jml/arch/format.h"
00003 #include "soa/jsoncpp/value.h"
00004 #include "rtbkit/core/monitor/monitor_provider.h"
00005 
00006 #define CURRENT_METHOD(x) \
00007     ( std::string(#x) + "::" + std::string(__FUNCTION__) )
00008 
00009 namespace RTBKIT {
00010 
00011 struct MockMonitorProvider
00012     : public MonitorProvider
00013 {
00014     MockMonitorProvider()
00015         : providerName_("mock-provider"), status_(false), delay_(0)
00016     {
00017     }
00018 
00019     std::string getProviderName()
00020         const
00021     {
00022         return providerName_;
00023     }
00024 
00025     Json::Value getProviderIndicators()
00026         const
00027     {
00028         using namespace std;
00029         if (delay_) {
00030             cerr << ML::format("%s: sleeping for %d seconds\n",
00031                                CURRENT_METHOD(MockMonitorProvider),
00032                                delay_);
00033             ML::sleep(delay_);
00034         }
00035 
00036         Json::Value value(Json::objectValue);
00037 
00038         value["status"] = (status_ ? "ok" : "failure");
00039 
00040         cerr << ML::format("%s: returning %s\n",
00041                            CURRENT_METHOD(MockMonitorProvider),
00042                            boost::trim_copy(value.toString()));
00043 
00044         return value;
00045     }
00046 
00047     std::string providerName_;
00048     bool status_;
00049     int delay_;
00050 };
00051 
00052 }
 All Classes Namespaces Functions Variables Typedefs Enumerations Enumerator