RTBKit  0.9
Open-source framework to create real-time ad bidding systems.
soa/logger/testing/kvp_logger_test.cc
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 
 All Classes Namespaces Functions Variables Typedefs Enumerations Enumerator