RTBKit
0.9
Open-source framework to create real-time ad bidding systems.
|
00001 /* kvp_logger_test.cc 00002 Copyright (c) 2013 Datacratic. All rights reserved. 00003 00004 */ 00005 #define BOOST_TEST_MAIN 00006 #define BOOST_TEST_DYN_LINK 00007 00008 #include <boost/test/unit_test.hpp> 00009 #include <boost/shared_ptr.hpp> 00010 #include "soa/logger/kvp_logger_interface.h" 00011 #include "soa/types/date.h" 00012 #include "mongo/client/dbclient.h" 00013 #include <unistd.h> 00014 00015 using namespace std; 00016 using namespace Datacratic; 00017 using namespace mongo; 00018 using namespace bson; 00019 00020 BOOST_AUTO_TEST_CASE( kvp_logger_mongodb ) 00021 { 00022 IKvpLogger::KvpLoggerParams params; 00023 params.hostAndPort = "ds047437.mongolab.com:47437"; 00024 params.db = "datacratic_test"; 00025 params.user = "datacratic_test_user"; 00026 params.pwd = "datacratic_test_pwd"; 00027 params.failSafe = false; 00028 string coll = "test_coll"; 00029 00030 DBClientConnection conn; 00031 HostAndPort hostAndPort(params.hostAndPort); 00032 conn.connect(hostAndPort); 00033 string err; 00034 BOOST_CHECK(conn.auth(params.db, params.user, params.pwd, err)); 00035 00036 string randVal = to_string(rand()); 00037 00038 std::shared_ptr<IKvpLogger> logger = 00039 IKvpLogger::getKvpLogger("mongodb", params); 00040 Datacratic::Date d = Datacratic::Date::now(); 00041 string now = d.printClassic(); 00042 cout << now << endl; 00043 logger->log({{"test", now}, {"rand", randVal}}, coll); 00044 00045 sleep(2);//mongodb is assync, wait a bit 00046 00047 BSONObj obj = BSON("test" << now << "rand" << randVal); 00048 auto_ptr<DBClientCursor> cursor = conn.query(params.db + "." + coll, obj); 00049 bool result = false; 00050 while(cursor->more()){ 00051 result = true; 00052 BSONObj p = cursor->next(); 00053 cout << p.getStringField("test") << " - " 00054 << p.getStringField("rand") << endl; 00055 } 00056 conn.remove(params.db + "." + coll, obj, 1); 00057 BOOST_CHECK(result); 00058 } 00059