int testSendOnThreadedSocket( int count, short port ) { std::stringstream stream; stream << "[DEFAULT]" << std::endl << "SocketConnectHost=localhost" << std::endl << "SocketConnectPort=" << (unsigned short)port << std::endl << "SocketAcceptPort=" << (unsigned short)port << std::endl << "SocketReuseAddress=Y" << std::endl << "StartTime=00:00:00" << std::endl << "EndTime=00:00:00" << std::endl << "UseDataDictionary=N" << std::endl << "BeginString=FIX.4.2" << std::endl << "PersistMessages=N" << std::endl << "[SESSION]" << std::endl << "ConnectionType=acceptor" << std::endl << "SenderCompID=SERVER" << std::endl << "TargetCompID=CLIENT" << std::endl << "[SESSION]" << std::endl << "ConnectionType=initiator" << std::endl << "SenderCompID=CLIENT" << std::endl << "TargetCompID=SERVER" << std::endl << "HeartBtInt=30" << std::endl; FIX::ClOrdID clOrdID( "ORDERID" ); FIX::HandlInst handlInst( '1' ); FIX::Symbol symbol( "LNUX" ); FIX::Side side( FIX::Side_BUY ); FIX::TransactTime transactTime; FIX::OrdType ordType( FIX::OrdType_MARKET ); FIX42::NewOrderSingle message( clOrdID, handlInst, symbol, side, transactTime, ordType ); FIX::SessionID sessionID( "FIX.4.2", "CLIENT", "SERVER" ); TestApplication application; FIX::MemoryStoreFactory factory; FIX::SessionSettings settings( stream ); FIX::ThreadedSocketAcceptor acceptor( application, factory, settings ); acceptor.start(); FIX::ThreadedSocketInitiator initiator( application, factory, settings ); initiator.start(); FIX::process_sleep( 1 ); int start = GetTickCount(); for ( int i = 0; i <= count; ++i ) FIX::Session::sendToTarget( message, sessionID ); while( application.getCount() < count ) FIX::process_sleep( 0.1 ); int ticks = GetTickCount() - start; initiator.stop(); acceptor.stop(); return ticks; }
int testFileStoreNewOrderSingle( int count ) { FIX::BeginString beginString( FIX::BeginString_FIX42 ); FIX::SenderCompID senderCompID( "SENDER" ); FIX::TargetCompID targetCompID( "TARGET" ); FIX::SessionID id( beginString, senderCompID, targetCompID ); FIX::ClOrdID clOrdID( "ORDERID" ); FIX::HandlInst handlInst( '1' ); FIX::Symbol symbol( "LNUX" ); FIX::Side side( FIX::Side_BUY ); FIX::TransactTime transactTime; FIX::OrdType ordType( FIX::OrdType_MARKET ); FIX42::NewOrderSingle message ( clOrdID, handlInst, symbol, side, transactTime, ordType ); message.getHeader().set( FIX::MsgSeqNum( 1 ) ); std::string messageString = message.toString(); FIX::FileStore store( "store", id ); store.reset(); count = count - 1; int start = GetTickCount(); for ( int i = 0; i <= count; ++i ) { store.set( ++i, messageString ); } int end = GetTickCount(); store.reset(); return end - start; }
int testCreateNewOrderSingle( int count ) { int start = GetTickCount(); for ( int i = 0; i <= count; ++i ) { FIX::ClOrdID clOrdID( "ORDERID" ); FIX::HandlInst handlInst( '1' ); FIX::Symbol symbol( "LNUX" ); FIX::Side side( FIX::Side_BUY ); FIX::TransactTime transactTime; FIX::OrdType ordType( FIX::OrdType_MARKET ); FIX42::NewOrderSingle( clOrdID, handlInst, symbol, side, transactTime, ordType ); } return GetTickCount() - start; }
long testSerializeToStringNewOrderSingle( int count ) { FIX::ClOrdID clOrdID( "ORDERID" ); FIX::HandlInst handlInst( '1' ); FIX::Symbol symbol( "LNUX" ); FIX::Side side( FIX::Side_BUY ); FIX::TransactTime transactTime; FIX::OrdType ordType( FIX::OrdType_MARKET ); FIX42::NewOrderSingle message ( clOrdID, handlInst, symbol, side, transactTime, ordType ); count = count - 1; long start = GetTickCount(); for ( int i = 0; i <= count; ++i ) { message.toString(); } return GetTickCount() - start; }
long testSerializeFromStringAndValidateNewOrderSingle( int count ) { FIX::ClOrdID clOrdID( "ORDERID" ); FIX::HandlInst handlInst( '1' ); FIX::Symbol symbol( "LNUX" ); FIX::Side side( FIX::Side_BUY ); FIX::TransactTime transactTime; FIX::OrdType ordType( FIX::OrdType_MARKET ); FIX42::NewOrderSingle message ( clOrdID, handlInst, symbol, side, transactTime, ordType ); std::string string = message.toString(); count = count - 1; long start = GetTickCount(); for ( int i = 0; i <= count; ++i ) { message.setString( string, VALIDATE, s_dataDictionary.get() ); } return GetTickCount() - start; }
long testValidateDictNewOrderSingle( int count ) { FIX::ClOrdID clOrdID( "ORDERID" ); FIX::HandlInst handlInst( '1' ); FIX::Symbol symbol( "LNUX" ); FIX::Side side( FIX::Side_BUY ); FIX::TransactTime transactTime; FIX::OrdType ordType( FIX::OrdType_MARKET ); FIX42::NewOrderSingle message ( clOrdID, handlInst, symbol, side, transactTime, ordType ); message.getHeader().set( FIX::SenderCompID( "SENDER" ) ); message.getHeader().set( FIX::TargetCompID( "TARGET" ) ); message.getHeader().set( FIX::MsgSeqNum( 1 ) ); count = count - 1; long start = GetTickCount(); for ( int i = 0; i <= count; ++i ) { s_dataDictionary->validate( message ); } return GetTickCount() - start; }