From eacad71e7291bf009377bcaa35d3ac65cb3eee5d Mon Sep 17 00:00:00 2001 From: Matej Sekoranja Date: Wed, 6 Feb 2013 23:31:13 +0100 Subject: [PATCH] updated google test install procedure --- README | 9 +++++---- pvAccessApp/Makefile | 9 +++++++++ .../remoteClient/clientContextImpl.cpp | 20 ++++++++++++++++++- pvAccessApp/server/responseHandlers.cpp | 16 ++++++++++++++- testApp/remote/eget.cpp | 8 +++++++- 5 files changed, 55 insertions(+), 7 deletions(-) diff --git a/README b/README index 70ab8bb..09711dc 100644 --- a/README +++ b/README @@ -16,8 +16,9 @@ g++ -g -O3 -I${GTEST_DIR}/include -I${GTEST_DIR} -c ${GTEST_DIR}/src/gtest-all.c g++ -g -O3 -I${GTEST_DIR}/include -I${GTEST_DIR} -c ${GTEST_DIR}/src/gtest_main.cc ar -rv libgtest_main.a gtest_main.o gtest-all.o -mkdir -p $EPICS_HOME/gtest/lib -cp -r ${GTEST_DIR}/include $EPICS_HOME/gtest -cp libgtest_main.a $EPICS_HOME/gtest/lib +# INSTALL is where you put build artifacts + +mkdir -p $INSTALL/gtest/lib/$EPICS_HOST_ARCH +cp -r ${GTEST_DIR}/include $INSTALL/gtest +cp libgtest_main.a $INSTALL/gtest/lib/$EPICS_HOST_ARCH -(you can use cmake, see gtest README) diff --git a/pvAccessApp/Makefile b/pvAccessApp/Makefile index ebac16a..a55c742 100644 --- a/pvAccessApp/Makefile +++ b/pvAccessApp/Makefile @@ -89,4 +89,13 @@ LIBRARY = pvAccess pvAccess_LIBS += Com pvAccess_LIBS += pvData +SRC_DIRS += $(PVACCESS)/mb +INC += mb.h +LIBSRCS += mb.cpp + +PROD_HOST += mb_stat +mb_stat_SRCS += mb_test.cpp +mb_stat_LIBS += pvAccess pvData Com + + include $(TOP)/configure/RULES diff --git a/pvAccessApp/remoteClient/clientContextImpl.cpp b/pvAccessApp/remoteClient/clientContextImpl.cpp index 9a811c9..5a366fd 100644 --- a/pvAccessApp/remoteClient/clientContextImpl.cpp +++ b/pvAccessApp/remoteClient/clientContextImpl.cpp @@ -31,6 +31,9 @@ #include #include +#include +MB_DECLARE(channelGet, 100000); + //#include using std::tr1::dynamic_pointer_cast; @@ -542,6 +545,10 @@ namespace epics { virtual void send(ByteBuffer* buffer, TransportSendControl* control) { int32 pendingRequest = getPendingRequest(); + bool initStage = (pendingRequest & QOS_INIT); + + MB_POINT_CONDITIONAL(channelGet, 1, !initStage); + if (pendingRequest < 0) { BaseRequestImpl::send(buffer, control); @@ -553,12 +560,14 @@ namespace epics { buffer->putInt(m_ioid); buffer->putByte((int8)m_pendingRequest); - if (pendingRequest & QOS_INIT) + if (initStage) { // pvRequest SerializationHelper::serializePVRequest(buffer, control, m_pvRequest); } + MB_POINT_CONDITIONAL(channelGet, 2, !initStage); + stopRequest(); } @@ -591,6 +600,9 @@ namespace epics { } virtual bool normalResponse(Transport::shared_pointer const & transport, int8 /*version*/, ByteBuffer* payloadBuffer, int8 /*qos*/, const Status& status) { + + MB_POINT(channelGet, 8); + if (!status.isSuccess()) { EXCEPTION_GUARD(m_channelGetRequester->getDone(status)); @@ -604,6 +616,8 @@ namespace epics { m_structure->deserialize(payloadBuffer, transport.get(), m_bitSet.get()); } + MB_POINT(channelGet, 9); + EXCEPTION_GUARD(m_channelGetRequester->getDone(status)); return true; } @@ -611,6 +625,9 @@ namespace epics { virtual void get(bool lastRequest) { { + MB_INC_AUTO_ID(channelGet); + MB_POINT(channelGet, 0); + Lock guard(m_mutex); if (m_destroyed) { EXCEPTION_GUARD(m_channelGetRequester->getDone(destroyedStatus)); @@ -3955,6 +3972,7 @@ namespace epics { m_contextState(CONTEXT_NOT_INITIALIZED), m_configuration(new SystemConfigurationImpl()) { + MB_INIT; PVACCESS_REFCOUNT_MONITOR_CONSTRUCT(remoteClientContext); loadConfiguration(); } diff --git a/pvAccessApp/server/responseHandlers.cpp b/pvAccessApp/server/responseHandlers.cpp index fc887c5..6f29391 100644 --- a/pvAccessApp/server/responseHandlers.cpp +++ b/pvAccessApp/server/responseHandlers.cpp @@ -16,6 +16,9 @@ #include +#include +MB_DECLARE(channelGetServer, 100000); + using std::ostringstream; using std::hex; @@ -45,8 +48,9 @@ void ServerBadResponse::handleResponse(osiSockAddr* responseFrom, ServerResponseHandler::ServerResponseHandler(ServerContextImpl::shared_pointer const & context) { + MB_INIT; + ResponseHandler::shared_pointer badResponse(new ServerBadResponse(context)); - m_handlerTable.resize(CMD_RPC+1); m_handlerTable[CMD_BEACON].reset(new ServerNoopResponse(context, "Beacon")); /* 0 */ @@ -554,6 +558,9 @@ void ServerGetHandler::handleResponse(osiSockAddr* responseFrom, } else { + MB_INC_AUTO_ID(channelGetServer); + MB_POINT(channelGetServer, 3); + const bool lastRequest = (QOS_DESTROY & qosCode) != 0; ServerChannelGetRequesterImpl::shared_pointer request = static_pointer_cast(channel->getRequest(ioid)); @@ -569,6 +576,8 @@ void ServerGetHandler::handleResponse(osiSockAddr* responseFrom, return; } + MB_POINT(channelGetServer, 4); + request->getChannelGet()->get(lastRequest); } } @@ -632,6 +641,7 @@ void ServerChannelGetRequesterImpl::channelGetConnect(const Status& status, Chan void ServerChannelGetRequesterImpl::getDone(const Status& status) { + MB_POINT(channelGetServer, 5); { Lock guard(_mutex); _status = status; @@ -691,11 +701,15 @@ void ServerChannelGetRequesterImpl::send(ByteBuffer* buffer, TransportSendContro } else { + MB_POINT(channelGetServer, 6); + { // we locked _mutex above, so _channelGet is valid ScopedLock lock(_channelGet); _bitSet->serialize(buffer, control); _pvStructure->serialize(buffer, control, _bitSet.get()); + } + MB_POINT(channelGetServer, 7); } } diff --git a/testApp/remote/eget.cpp b/testApp/remote/eget.cpp index 60d41ac..e8b1612 100644 --- a/testApp/remote/eget.cpp +++ b/testApp/remote/eget.cpp @@ -606,10 +606,16 @@ void formatNTImage(std::ostream& /*o*/, PVStructurePtr const & pvStruct) fprintf(gnuplotPipe, "unset xtics\n"); fprintf(gnuplotPipe, "unset ytics\n"); - fprintf(gnuplotPipe, "set size ratio 1\n"); fprintf(gnuplotPipe, "set xrange [0:%u]\n", cols-1); fprintf(gnuplotPipe, "set yrange [0:%u]\n", rows-1); + fprintf(gnuplotPipe, "set size ratio 1\n"); + /* + fprintf(gnuplotPipe, "set lmargin at screen 0\n"); + fprintf(gnuplotPipe, "set bmargin at screen 0\n"); + fprintf(gnuplotPipe, "set rmargin at screen 0.99999\n"); + fprintf(gnuplotPipe, "set tmargin at screen 0.99999\n"); + */ fprintf(gnuplotPipe, "set palette grey\n"); fprintf(gnuplotPipe, "set cbrange [0:255]\n");