示例#1
0
 bool callback(InvocationResponse response) throw (voltdb::Exception)
 {
     if (response.failure()){
         //TODO:log
         return false;
     }
     m_dist->updateAffinityTopology(response.results());
     return true;
 }
示例#2
0
 bool callback(InvocationResponse response) throw (voltdb::Exception)
 {
     if (response.failure()){
         //TODO:log
         return false;
     }
     m_dist->updateProcedurePartitioning(response.results());
     return true;
 }
示例#3
0
 // ENG-2553. Connection shouldn't timeout.
 void testLargeReply() {
     (m_client)->createConnection("localhost");
     std::vector<Parameter> signature;
     signature.push_back(Parameter(WIRE_TYPE_STRING));
     signature.push_back(Parameter(WIRE_TYPE_STRING));
     signature.push_back(Parameter(WIRE_TYPE_STRING));
     Procedure proc("Insert", signature);
     ParameterSet *params = proc.params();
     params->addString("Hello").addString("World").addString("English");
     m_voltdb->filenameForNextResponse("mimicLargeReply");
     InvocationResponse response = (m_client)->invoke(proc);
     CPPUNIT_ASSERT(response.success());
 }
示例#4
0
 bool callback(InvocationResponse response) throw (voltdb::Exception)
 {
     if (response.failure()){
         //TODO:log
         std::cout << "subscribeToTopoNotifications FAILED" << std::endl;
         return false;
     }
     return true;
 }
示例#5
0
    void testLostConnection() {
        class Listener : public StatusListener {
        public:
            bool reported;
           Listener() : reported(false) {}
            virtual bool uncaughtException(
                    std::exception exception,
                    boost::shared_ptr<voltdb::ProcedureCallback> callback,
                    InvocationResponse response) {
                CPPUNIT_ASSERT(false);
                return false;
            }
            virtual bool connectionLost(std::string hostname, int32_t connectionsLeft) {
                reported = true;
                CPPUNIT_ASSERT(connectionsLeft == 0);
                return false;
            }
            virtual bool backpressure(bool hasBackpressure) {
                CPPUNIT_ASSERT(false);
                return false;
            }
        }  listener;
        (*m_dlistener)->m_listener = &listener;
        (m_client)->createConnection("localhost");

        std::vector<Parameter> signature;
        Procedure proc("Insert", signature);
        proc.params();

        SyncCallback *cb = new SyncCallback();
        boost::shared_ptr<ProcedureCallback> callback(cb);
        (m_client)->invoke(proc, callback);
        m_voltdb->hangupOnRequestCount(1);

        proc.params();
        InvocationResponse syncResponse = (m_client)->invoke(proc);
        CPPUNIT_ASSERT(syncResponse.failure());
        CPPUNIT_ASSERT(syncResponse.statusCode() == voltdb::STATUS_CODE_CONNECTION_LOST);
        CPPUNIT_ASSERT(syncResponse.results().size() == 0);

        InvocationResponse response = cb->m_response;
        CPPUNIT_ASSERT(response.failure());
        CPPUNIT_ASSERT(response.statusCode() == voltdb::STATUS_CODE_CONNECTION_LOST);
        CPPUNIT_ASSERT(response.results().size() == 0);
        CPPUNIT_ASSERT(listener.reported);
        (m_client)->runOnce();
    }
示例#6
0
 void testSyncInvoke() {
     m_client->createConnection("localhost");
     std::vector<Parameter> signature;
     signature.push_back(Parameter(WIRE_TYPE_STRING));
     signature.push_back(Parameter(WIRE_TYPE_STRING));
     signature.push_back(Parameter(WIRE_TYPE_STRING));
     Procedure proc("Insert", signature);
     ParameterSet *params = proc.params();
     params->addString("Hello").addString("World").addString("English");
     m_voltdb->filenameForNextResponse("invocation_response_success.msg");
     InvocationResponse response = (m_client)->invoke(proc);
     CPPUNIT_ASSERT(response.success());
     CPPUNIT_ASSERT(response.statusString() == "");
     CPPUNIT_ASSERT(response.appStatusCode() == -128);
     CPPUNIT_ASSERT(response.appStatusString() == "");
     CPPUNIT_ASSERT(response.results().size() == 0);
 }
示例#7
0
    void testAsyncInvoke() {
        (m_client)->createConnection("localhost");
        std::vector<Parameter> signature;
        signature.push_back(Parameter(WIRE_TYPE_STRING));
        signature.push_back(Parameter(WIRE_TYPE_STRING));
        signature.push_back(Parameter(WIRE_TYPE_STRING));
        Procedure proc("Insert", signature);
        ParameterSet *params = proc.params();
        params->addString("Hello").addString("World").addString("English");
        m_voltdb->filenameForNextResponse("invocation_response_success.msg");

        SyncCallback *cb = new SyncCallback();
        boost::shared_ptr<ProcedureCallback> callback(cb);
        (m_client)->invoke(proc, callback);
        while (!cb->m_hasResponse) {
            (m_client)->runOnce();
        }
        InvocationResponse response = cb->m_response;
        CPPUNIT_ASSERT(response.success());
        CPPUNIT_ASSERT(response.statusString() == "");
        CPPUNIT_ASSERT(response.appStatusCode() == -128);
        CPPUNIT_ASSERT(response.appStatusString() == "");
        CPPUNIT_ASSERT(response.results().size() == 0);
    }