RTBKit  0.9
Open-source framework to create real-time ad bidding systems.
core/router/testing/pending_list_test.cc
00001 /* pending_list_test.cc
00002    Jeremy Barnes, 28 February 2012
00003    Copyright (c) 2012 Datacratic.  All rights reserved.
00004 
00005    Test for the pending list.
00006 */
00007 
00008 #define BOOST_TEST_MAIN
00009 #define BOOST_TEST_DYN_LINK
00010 
00011 #include <boost/test/unit_test.hpp>
00012 #include "jml/arch/format.h"
00013 #include "soa/service/pending_list.h"
00014 #include "soa/types/id.h"
00015 #include "jml/utils/pair_utils.h"
00016 
00017 
00018 using namespace std;
00019 using namespace ML;
00020 using namespace Datacratic;
00021 
00022 BOOST_AUTO_TEST_CASE( test_router_init_persistence )
00023 {
00024     struct Value {
00025         Value(int i = 0)
00026             : i(i)
00027         {
00028         }
00029 
00030         int i;
00031     };
00032 
00033     PendingList<pair<Id, Id>, Value> pending;
00034 
00035     IsPrefixPair isPrefix;
00036 
00037     pair<Id, Id> none;
00038 
00039 
00040     auto h  = make_pair(Id("0"), Id());
00041 
00042     auto i  = make_pair(Id("1"), Id());
00043     auto i1 = make_pair(Id("1"), Id("1"));
00044     auto i2 = make_pair(Id("1"), Id("2"));
00045 
00046     auto j  = make_pair(Id("2"), Id());
00047 
00048     auto k  = make_pair(Id("3"), Id());
00049     auto k0 = make_pair(Id("3"), Id("0"));
00050     auto k1 = make_pair(Id("3"), Id("1"));
00051     auto k2 = make_pair(Id("3"), Id("2"));
00052 
00053     auto l  = make_pair(Id("4"), Id());
00054 
00055     auto m  = make_pair(Id("5"), Id());
00056     auto m1 = make_pair(Id("5"), Id("1"));
00057     auto m2 = make_pair(Id("5"), Id("2"));
00058 
00059     auto o  = make_pair(Id("6"), Id());
00060 
00061     BOOST_CHECK_LT(i, k);
00062     BOOST_CHECK_LT(k, m);
00063     BOOST_CHECK_LT(i, m);
00064     BOOST_CHECK_LT(i, i1);
00065     BOOST_CHECK_LT(i, i2);
00066 
00067     BOOST_CHECK_EQUAL(pending.completePrefix(k, isPrefix), none);
00068 
00069     pending.insert(k1, 1, Date());
00070     BOOST_CHECK_EQUAL(pending.completePrefix(k, isPrefix), k1);
00071     pending.insert(k2, 2, Date());
00072     BOOST_CHECK_EQUAL(pending.completePrefix(k, isPrefix), k1);
00073     pending.insert(k0, 0, Date());
00074     BOOST_CHECK_EQUAL(pending.completePrefix(k, isPrefix), k0);
00075     BOOST_CHECK_EQUAL(pending.completePrefix(i, isPrefix), none);
00076     BOOST_CHECK_EQUAL(pending.completePrefix(m, isPrefix), none);
00077     BOOST_CHECK_EQUAL(pending.completePrefix(h, isPrefix), none);
00078     BOOST_CHECK_EQUAL(pending.completePrefix(j, isPrefix), none);
00079     BOOST_CHECK_EQUAL(pending.completePrefix(l, isPrefix), none);
00080     BOOST_CHECK_EQUAL(pending.completePrefix(o, isPrefix), none);
00081 
00082     pending.insert(m1, 1, Date());
00083     BOOST_CHECK_EQUAL(pending.completePrefix(k, isPrefix), k0);
00084     BOOST_CHECK_EQUAL(pending.completePrefix(i, isPrefix), none);
00085     BOOST_CHECK_EQUAL(pending.completePrefix(m, isPrefix), m1);
00086     BOOST_CHECK_EQUAL(pending.completePrefix(h, isPrefix), none);
00087     BOOST_CHECK_EQUAL(pending.completePrefix(j, isPrefix), none);
00088     BOOST_CHECK_EQUAL(pending.completePrefix(l, isPrefix), none);
00089     BOOST_CHECK_EQUAL(pending.completePrefix(o, isPrefix), none);
00090 
00091     pending.insert(m2, 2, Date());
00092     BOOST_CHECK_EQUAL(pending.completePrefix(k, isPrefix), k0);
00093     BOOST_CHECK_EQUAL(pending.completePrefix(i, isPrefix), none);
00094     BOOST_CHECK_EQUAL(pending.completePrefix(m, isPrefix), m1);
00095     BOOST_CHECK_EQUAL(pending.completePrefix(h, isPrefix), none);
00096     BOOST_CHECK_EQUAL(pending.completePrefix(j, isPrefix), none);
00097     BOOST_CHECK_EQUAL(pending.completePrefix(l, isPrefix), none);
00098     BOOST_CHECK_EQUAL(pending.completePrefix(o, isPrefix), none);
00099 
00100     pending.insert(i2, 2, Date());
00101     BOOST_CHECK_EQUAL(pending.completePrefix(k, isPrefix), k0);
00102     BOOST_CHECK_EQUAL(pending.completePrefix(i, isPrefix), i2);
00103     BOOST_CHECK_EQUAL(pending.completePrefix(m, isPrefix), m1);
00104     BOOST_CHECK_EQUAL(pending.completePrefix(h, isPrefix), none);
00105     BOOST_CHECK_EQUAL(pending.completePrefix(j, isPrefix), none);
00106     BOOST_CHECK_EQUAL(pending.completePrefix(l, isPrefix), none);
00107     BOOST_CHECK_EQUAL(pending.completePrefix(o, isPrefix), none);
00108 
00109     pending.insert(i1, 1, Date());
00110     BOOST_CHECK_EQUAL(pending.completePrefix(k, isPrefix), k0);
00111     BOOST_CHECK_EQUAL(pending.completePrefix(i, isPrefix), i1);
00112     BOOST_CHECK_EQUAL(pending.completePrefix(m, isPrefix), m1);
00113     BOOST_CHECK_EQUAL(pending.completePrefix(h, isPrefix), none);
00114     BOOST_CHECK_EQUAL(pending.completePrefix(j, isPrefix), none);
00115     BOOST_CHECK_EQUAL(pending.completePrefix(l, isPrefix), none);
00116     BOOST_CHECK_EQUAL(pending.completePrefix(o, isPrefix), none);
00117 }
00118 
 All Classes Namespaces Functions Variables Typedefs Enumerations Enumerator