RTBKit
0.9
Open-source framework to create real-time ad bidding systems.
|
00001 #define BOOST_TEST_MAIN 00002 #define BOOST_TEST_DYN_LINK 00003 00004 #include <string> 00005 00006 #include <boost/test/unit_test.hpp> 00007 #include <boost/make_shared.hpp> 00008 #include <boost/thread/thread.hpp> 00009 00010 #include <jml/utils/set_utils.h> 00011 00012 #include "soa/service/service_base.h" 00013 #include "soa/service/rest_service_endpoint.h" 00014 #include "soa/service/testing/zookeeper_temporary_server.h" 00015 00016 using namespace std; 00017 using namespace ML; 00018 00019 using namespace Datacratic; 00020 00021 struct MockRestService : public ServiceBase, 00022 public RestServiceEndpoint 00023 { 00024 MockRestService(std::shared_ptr<ServiceProxies> proxies, 00025 const string & serviceName) 00026 : ServiceBase(serviceName, proxies), 00027 RestServiceEndpoint(proxies->zmqContext) 00028 {} 00029 00030 ~MockRestService() 00031 { 00032 unregisterServiceProvider(serviceName(), classes_); 00033 } 00034 00035 void init(const vector<string> & classes) 00036 { 00037 classes_ = classes; 00038 registerServiceProvider(serviceName(), classes); 00039 getServices()->config->removePath(serviceName()); 00040 RestServiceEndpoint::init(getServices()->config, serviceName()); 00041 } 00042 00043 vector<string> classes_; 00044 }; 00045 00046 BOOST_AUTO_TEST_CASE( test_service_proxies_getServiceClassInstances ) 00047 { 00048 ZooKeeper::TemporaryServer server; 00049 server.start(); 00050 00051 auto proxies = std::make_shared<ServiceProxies>(); 00052 proxies->useZookeeper(ML::format("localhost:%d", server.getPort())); 00053 00054 set<string> expectedUris; 00055 00056 MockRestService testService1(proxies, "testServiceName1"); 00057 testService1.init({"testServiceClass", "otherServiceClass"}); 00058 testService1.bindTcp(); 00059 vector<string> uris(testService1.zmqEndpoint.getPublishedUris()); 00060 expectedUris.insert(uris.begin(), uris.end()); 00061 uris = testService1.httpEndpoint.getPublishedUris(); 00062 expectedUris.insert(uris.begin(), uris.end()); 00063 00064 MockRestService testService2(proxies, "testServiceName2"); 00065 testService2.init({"testServiceClass"}); 00066 testService2.bindTcp(); 00067 uris = testService2.zmqEndpoint.getPublishedUris(); 00068 expectedUris.insert(uris.begin(), uris.end()); 00069 uris = testService2.httpEndpoint.getPublishedUris(); 00070 expectedUris.insert(uris.begin(), uris.end()); 00071 00072 set<string> instanceUris; 00073 uris = proxies->getServiceClassInstances("testServiceClass", "http"); 00074 instanceUris.insert(uris.begin(), uris.end()); 00075 uris = proxies->getServiceClassInstances("testServiceClass", "zeromq"); 00076 instanceUris.insert(uris.begin(), uris.end()); 00077 00078 BOOST_CHECK_EQUAL(instanceUris, expectedUris); 00079 }