libjmmcg  release_579_6_g8cffd
A C++ library containing an eclectic mix of useful, advanced components.
Test List
Member BOOST_AUTO_TEST_CASE (unordered_tuple_perf)
Graph of performance results for operations on an unordered_tuple & unordered_map. Call a pure-virtual member-function in a base class of a class found in an unordered collection.
Member BOOST_AUTO_TEST_CASE (push)
Graph of performance results for heavyweight intrusive-stack push() operations. Results for 100*10000 repetitions.
Member BOOST_AUTO_TEST_CASE (pop)
Graph of performance results for heavyweight intrusive-stack pop() operations. Results for 100*10000 repetitions.
Member BOOST_AUTO_TEST_CASE (push_front)
Graph of performance results for heavyweight intrusive-slist push_front() operations. Results for 100*10000 repetitions.
Member BOOST_AUTO_TEST_CASE (pop_front)
Graph of performance results for heavyweight intrusive-slist pop_front() operations. Results for 100*10000 repetitions.
Member BOOST_AUTO_TEST_CASE (unordered_map_perf)
Graph of performance results for operations on an unordered_map. Call a pure-virtual member-function in a base class of a class found in a std::unordered_map.
Member BOOST_AUTO_TEST_CASE (time_hashes)
Graph of performance results for the various hash functions. Results for 1000000 repetitions:
  1. Build 1402: g++v4.7.3, boost v1.54:
    • hashers::murmur2 = 9.53073e+06 hashes/sec
    • hashers::hsieh = 8.69376e+06 hashes/sec
    • hashers::mpl::hsieh = 9.82567e+06 hashes/sec
    • boost::hash = 6.15003e+06 hashes/sec
    • std::hash = 9.74447e+06 hashes/sec
  2. Build 1627: g++v4.8.4, boost v1.56:
    • hashers::murmur2 = 9.477643e+06 hashes/sec
    • hashers::hsieh = 8.87383e+06 hashes/sec
    • hashers::mpl::hsieh = 9.901563e+06 hashes/sec
    • boost::hash = 5.547246e+06 hashes/sec
    • std::hash = 9.806128e+06 hashes/sec
Member BOOST_AUTO_TEST_CASE (push)
Graph of performance results for heavyweight intrusive-stack push() operations. Results for 100*10000 repetitions.
Member BOOST_AUTO_TEST_CASE (pop)
Graph of performance results for heavyweight intrusive-stack pop() operations. Results for 100*10000 repetitions.
Member BOOST_AUTO_TEST_CASE (push_front)
Graph of performance results for heavyweight intrusive-slist push_front() operations. Results for 100*10000 repetitions.
Member BOOST_AUTO_TEST_CASE (pop_front)
Graph of performance results for heavyweight intrusive-slist pop_front() operations. Results for 100*10000 repetitions.
Member BOOST_AUTO_TEST_CASE (unordered_map_perf)
Graph of performance results for operations on an unordered_map. Call a pure-virtual member-function in a base class of a class found in a std::unordered_map.
Member BOOST_AUTO_TEST_CASE (time_hashes)
Graph of performance results for the various hash functions. Results for 1000000 repetitions:
  1. Build 1402: g++v4.7.3, boost v1.54:
    • hashers::murmur2 = 9.53073e+06 hashes/sec
    • hashers::hsieh = 8.69376e+06 hashes/sec
    • hashers::mpl::hsieh = 9.82567e+06 hashes/sec
    • boost::hash = 6.15003e+06 hashes/sec
    • std::hash = 9.74447e+06 hashes/sec
  2. Build 1627: g++v4.8.4, boost v1.56:
    • hashers::murmur2 = 9.477643e+06 hashes/sec
    • hashers::hsieh = 8.87383e+06 hashes/sec
    • hashers::mpl::hsieh = 9.901563e+06 hashes/sec
    • boost::hash = 5.547246e+06 hashes/sec
    • std::hash = 9.806128e+06 hashes/sec
Member BOOST_AUTO_TEST_CASE (unordered_tuple_perf)
Graph of performance results for operations on an unordered_tuple & unordered_map. Call a pure-virtual member-function in a base class of a class found in an unordered collection.
Member BOOST_AUTO_TEST_CASE_TEMPLATE (open_replace, exchg_t, exchg_t_types)
Section 9.1 "Order handling" of [1] Test: Response to a suitable BUY, DAY, LIBATSBOE NewOrder followed by an OrderCancelReplaceRequest is a cancelled ExecutionReport. Verify that the response to a buy, day, limit NewOrder that is open on the exchange then modified is a cancelled ExecutionReport. [1] "BATSBOE203 - MILLENNIUM EXCHANGE Native Trading Gateway"
Member BOOST_AUTO_TEST_CASE_TEMPLATE (primary_gateway_available, exchg_t, exchg_t_types)
Section 4.4: "Connectivity Policy" of [1] Test: primary gateway available. Verify that less than 5 seconds passes if just the primary gateway is available. [1] "BATS Chi-X Europe Binary Order Entry Specification", Version 1.44, 27 November, 2014
Member BOOST_AUTO_TEST_CASE_TEMPLATE (reject, exchg_t, exchg_t_types)
Graph of performance results for the MIT-based simulator- Results for 5000 repetitions. The timings include the full-round-trip: including time to create the MIT order, send it, time in the simulator, time to receive, all of which includes the "wire-time".
Member BOOST_AUTO_TEST_CASE_TEMPLATE (order_rejected_at_a_time, exchg_t, exchg_t_types)
Graph of performance results for the MIT-based exchange-links, sending an order and receiving the reject one-at-a-time. The histograms generated by using GNU or Clang to compile & link the code of the latest performance results, pinned and with numactl. Results for 20000 repetitions, repeated up to 500 times. The timings include the full-round-trip: including time to create the FIX order, convert it, send it, time in the simulator, time to receive, time to convert back to FIX, all of which includes the "wire-time". If numactl is to be used, the command "numactl --cpunodebind=NODE_INDEX --membind=NODE_INDEX ../../build/release/isimud/tests/test_mit_exchanges_performance" should be executed, Where NODE_INDEX should be the same value as that in thread_traits::numa_index.
Member BOOST_AUTO_TEST_CASE_TEMPLATE (order_rejects_parallel, exchg_t, exchg_t_types)
Graph of performance results for the MIT-based exchange-links, sending the orders and receiving the rejects in parallel. The histograms generated by using GNU or Clang to compile & link the code of the latest performance results, pinned and with numactl. Results for 20000 orders sent & rejects received, repeated up to 500 times. The timings include the full-round-trip: including time to create the FIX order, convert it, send it, time in the simulator, time to receive, time to convert back to FIX, all of which includes the "wire-time". If numactl is to be used, the command "numactl --cpunodebind=NODE_INDEX --membind=NODE_INDEX ../../build/release/isimud/tests/test_mit_exchanges_performance" should be executed, Where NODE_INDEX should be the same value as that in thread_traits::numa_index.
Member BOOST_AUTO_TEST_CASE_TEMPLATE (cancel_reject, exchg_t, exchg_t_types)
"Order handling" of [1] Test: Response to an invalid OrderCancelRequest. Verify that the response to an invalid OrderCancelRequest is a OrderCancelReject. [1] "BATS Chi-X Europe Binary Order Entry Specification", Version 1.44, 27 November, 2014
Member BOOST_AUTO_TEST_CASE_TEMPLATE (open_cancelled, exchg_t, exchg_t_types)
Section 9.1 "Order handling" of [1] Test: Response to a suitable BUY, DAY, LIBATSBOE NewOrder followed by an OrderCancelRequest is a cancelled ExecutionReport. Verify that the response to a buy, day, limit NewOrder that is open on the exchange then cancelled is a cancelled ExecutionReport. [1] "BATSBOE203 - MILLENNIUM EXCHANGE Native Trading Gateway"
Member BOOST_AUTO_TEST_CASE_TEMPLATE (new_order, exchg_t, exchg_t_types)
Section 9.1 "Order handling" of [1] Test: Response to a BUY, DAY, LIBATSBOE NewOrder is a filled ExecutionReport. Verify that the response to a buy, day, limit NewOrder is a filled ExecutionReport. [1] "BATSBOE203 - MILLENNIUM EXCHANGE Native Trading Gateway"
Member BOOST_AUTO_TEST_CASE_TEMPLATE (partial_fill_replace, exchg_t, exchg_t_types)
"Order handling" of [1] Test: Response to a OrderCancelReplaceRequest is a replaced ExecutionReport. Verify that the response to a OrderCancelReplaceRequest of the remaining quantity of a suitably large, buy, day, market NewOrder is a replaced ExecutionReport. [1] "BATS Chi-X Europe Binary Order Entry Specification", Version 1.44, 27 November, 2014
Member BOOST_AUTO_TEST_CASE_TEMPLATE (partial_fill_cancel, exchg_t, exchg_t_types)
"Order handling" of [1] Test: Response to a OrderCancelRequest is a cancelled ExecutionReport. Verify that the response to a OrderCancelRequest of the remaining quantity of a suitably large, buy, day, market NewOrder is a cancelled ExecutionReport. [1] "BATS Chi-X Europe Binary Order Entry Specification", Version 1.44, 27 November, 2014
Member BOOST_AUTO_TEST_CASE_TEMPLATE (partial_fill, exchg_t, exchg_t_types)
"Order handling" of [1] Test: Response to a BUY, DAY, MARKET NewOrder is a partially-filled ExecutionReport. Verify that the response to a suitably large, buy, day, market NewOrder is a partially-filled ExecutionReport. [1] "BATS Chi-X Europe Binary Order Entry Specification", Version 1.44, 27 November, 2014
Member BOOST_AUTO_TEST_CASE_TEMPLATE (new_order, exchg_t, exchg_t_types)
"Order handling" of [1] Test: Response to a BUY, DAY, MARKET NewOrder is a filled ExecutionReport. Verify that the response to a buy, day, market NewOrder is a filled ExecutionReport. [1] "BATS Chi-X Europe Binary Order Entry Specification", Version 1.44, 27 November, 2014
Member BOOST_AUTO_TEST_CASE_TEMPLATE (modify_accept, exchg_t, exchg_t_types)
"Order handling" of [1] Test: Response to a valid OrderCancelReplaceRequest. Verify that the response to a valid OrderCancelReplaceRequest is a cancelled order ExecutionReport. [1] "BATS Chi-X Europe Binary Order Entry Specification", Version 1.44, 27 November, 2014
Member BOOST_AUTO_TEST_CASE_TEMPLATE (modify_reject, exchg_t, exchg_t_types)
"Order handling" of [1] Test: Response to an invalid OrderCancelReplaceRequest. Verify that the response to an invalid OrderCancelReplaceRequest is a cancelled order OrderCancelReject. [1] "BATS Chi-X Europe Binary Order Entry Specification", Version 1.44, 27 November, 2014
Member BOOST_AUTO_TEST_CASE_TEMPLATE (cancel_accept, exchg_t, exchg_t_types)
"Order handling" of [1] Test: Response to a valid OrderCancelRequest. Verify that the response to a valid OrderCancelRequest is a cancelled order ExecutionReport. [1] "BATS Chi-X Europe Binary Order Entry Specification", Version 1.44, 27 November, 2014
Member BOOST_AUTO_TEST_CASE_TEMPLATE (re_connnect, exchg_t, exchg_t_types)

Re-connect to the available primary gateway. Verify that less than 5 seconds passes if just the primary gateway is available for the re-connections. [1] "BATS Chi-X Europe Binary Order Entry Specification", Version 1.44, 27 November, 2014

Re-connect to the available primary gateway. Verify that less than 5 seconds passes if just the primary gateway is available for the re-connections. [1] "BATS Chi-X Europe Binary Order Entry Specification", Version 1.44, 27 November, 2014

Member BOOST_AUTO_TEST_CASE_TEMPLATE (logon, exchg_t, exchg_t_types)
"Establishing a connection" Test: LogonRequest response. Verify that the response to a LogonRequest is a LogonReply. [1] "BATS Chi-X Europe Binary Order Entry Specification", Version 1.44, 27 November, 2014
Member BOOST_AUTO_TEST_CASE_TEMPLATE (client_heartbeat, exchg_t, exchg_t_types)
"Heartbeats" Test: Client Heartbeat. Verify that the response to a Heartbeat is nothing. [1] "BATS Chi-X Europe Binary Order Entry Specification", Version 1.44, 27 November, 2014
Member BOOST_AUTO_TEST_CASE_TEMPLATE (server_heartbeat, exchg_t, exchg_t_types)
"Heartbeats" Test: Server Heartbeat. ====================================. [1] "BATS Chi-X Europe Binary Order Entry Specification", Version 1.44, 27 November, 2014
Member BOOST_AUTO_TEST_CASE_TEMPLATE (logout, exchg_t, exchg_t_types)
"Terminating a connection" Test: LogoutRequest. Verify that the response to a LogoutRequest is a Logout. [1] "BATS Chi-X Europe Binary Order Entry Specification", Version 1.44, 27 November, 2014
Member BOOST_AUTO_TEST_CASE_TEMPLATE (logon_logout, exchg_t, exchg_t_types)
"Establishing a connection" Test: LogonRequest & LogoutRequest response. Verify the behaviour of a LogonRequest followed by a and LogoutRequest. [1] "BATS Chi-X Europe Binary Order Entry Specification", Version 1.44, 27 November, 2014
Member BOOST_AUTO_TEST_CASE_TEMPLATE (reject, exchg_t, exchg_t_types)

"Establishing a connection" of [1] Test: Re-LogonRequest & LogoutRequest response. Verify the behaviour of a LogonRequest followed by a and LogoutRequest, repeated. [1] "BATS Chi-X Europe Binary Order Entry Specification", Version 1.44, 27 November, 2014

"Order handling" of [1] Test: Response to an invalid NewOrder. Verify that the response to an invalid NewOrder is a Reject. [1] "BATS Chi-X Europe Binary Order Entry Specification", Version 1.44, 27 November, 2014

Member BOOST_AUTO_TEST_CASE_TEMPLATE (cancel_reject, exchg_t, exchg_t_types)
"Order handling" of [1] Test: Response to an invalid OrderCancelRequest. Verify that the response to an invalid OrderCancelRequest is a OrderCancelReject. [1] "BATS Chi-X Europe Binary Order Entry Specification", Version 1.44, 27 November, 2014
Member BOOST_AUTO_TEST_CASE_TEMPLATE (cancel_accept, exchg_t, exchg_t_types)
"Order handling" of [1] Test: Response to a valid OrderCancelRequest. Verify that the response to a valid OrderCancelRequest is a cancelled order ExecutionReport. [1] "BATS Chi-X Europe Binary Order Entry Specification", Version 1.44, 27 November, 2014
Member BOOST_AUTO_TEST_CASE_TEMPLATE (modify_reject, exchg_t, exchg_t_types)
"Order handling" of [1] Test: Response to an invalid OrderCancelReplaceRequest. Verify that the response to an invalid OrderCancelReplaceRequest is a cancelled order OrderCancelReject. [1] "BATS Chi-X Europe Binary Order Entry Specification", Version 1.44, 27 November, 2014
Member BOOST_AUTO_TEST_CASE_TEMPLATE (modify_accept, exchg_t, exchg_t_types)
"Order handling" of [1] Test: Response to a valid OrderCancelReplaceRequest. Verify that the response to a valid OrderCancelReplaceRequest is a cancelled order ExecutionReport. [1] "BATS Chi-X Europe Binary Order Entry Specification", Version 1.44, 27 November, 2014
Member BOOST_AUTO_TEST_CASE_TEMPLATE (new_order, exchg_t, exchg_t_types)
"Order handling" of [1] Test: Response to a BUY, DAY, MARKET NewOrder is a filled ExecutionReport. Verify that the response to a buy, day, market NewOrder is a filled ExecutionReport. [1] "BATS Chi-X Europe Binary Order Entry Specification", Version 1.44, 27 November, 2014
Member BOOST_AUTO_TEST_CASE_TEMPLATE (partial_fill, exchg_t, exchg_t_types)
"Order handling" of [1] Test: Response to a BUY, DAY, MARKET NewOrder is a partially-filled ExecutionReport. Verify that the response to a suitably large, buy, day, market NewOrder is a partially-filled ExecutionReport. [1] "BATS Chi-X Europe Binary Order Entry Specification", Version 1.44, 27 November, 2014
Member BOOST_AUTO_TEST_CASE_TEMPLATE (partial_fill_cancel, exchg_t, exchg_t_types)
"Order handling" of [1] Test: Response to a OrderCancelRequest is a cancelled ExecutionReport. Verify that the response to a OrderCancelRequest of the remaining quantity of a suitably large, buy, day, market NewOrder is a cancelled ExecutionReport. [1] "BATS Chi-X Europe Binary Order Entry Specification", Version 1.44, 27 November, 2014
Member BOOST_AUTO_TEST_CASE_TEMPLATE (partial_fill_replace, exchg_t, exchg_t_types)
"Order handling" of [1] Test: Response to a OrderCancelReplaceRequest is a replaced ExecutionReport. Verify that the response to a OrderCancelReplaceRequest of the remaining quantity of a suitably large, buy, day, market NewOrder is a replaced ExecutionReport. [1] "BATS Chi-X Europe Binary Order Entry Specification", Version 1.44, 27 November, 2014
Member BOOST_AUTO_TEST_CASE_TEMPLATE (time, test, timer_types)
Graph of performance results for the various timer functions. Results for 500000 repetitions. Note that accurate timings should follow the recommendations in How to Benchmark Code Execution Times on Intel (c) IA-32 and IA-64 Instruction Set Architectures and note that RDTSC is stable across processors, see section 17.14.1 of the Intel (c) 64 and IA-32 Architectures Software Developer's Manual Volume 3B: System Programming Guide, Part 2, as long as "tsc" is listed in "/sys/devices/system/clocksource/clocksource0/available_clocksource".
Member BOOST_AUTO_TEST_CASE_TEMPLATE (client_heartbeat, exchg_t, exchg_t_types)
"Heartbeats" Test: Client Heartbeat. Verify that the response to a Heartbeat is nothing.
Member BOOST_AUTO_TEST_CASE_TEMPLATE (parallel_cctor, ptr_t, ptr_types)
Graph of performance results for parallel unique_ptr cctors. Results for 100000000 items:
Member BOOST_AUTO_TEST_CASE_TEMPLATE (parallel_deletes, ptr_t, ptr_types)
Graph of performance results for parallel unique_ptr dtors. Results for 100000000 items:
Member BOOST_AUTO_TEST_CASE_TEMPLATE (small_ctor, T, string_types)
Graph of ctor & dtor, Graph of ctor, dtor & assignment and Graph of ctor, dtor & replace performance comparison of stack_string vs std::string and __gnucxx::__vstring' Results for 100000000 repetitions. On my dual, 6-core AMD Opteron 4180s at 2.6GHz box with 16Gb RAM (not quiescent), I measured the following statistics for a release build:
  1. Build 1414:
    • stack_string small string (ctors+dtors)/sec=[135662569, 136631149 ~(+/-4%), 136727642], samples=21, total=2869254133
    • std::string small string (ctors+dtors)/sec=[14223043, 14258612 ~(+/-4%), 14268891], samples=21, total=299430869
    • __gnucxx::__vstring small string (ctors+dtors)/sec=[86412573, 86559127 ~(+/-4%), 86598005], samples=21, total=1817741679
    • stack_string big string (ctors+dtors)/sec=[17663500, 17665794 ~(+/-4%), 17668187], samples=21, total=370981680
    • std::string big string (ctors+dtors)/sec=[13455498, 13810127 ~(+/-4%), 14190757], samples=24, total=331443053
    • __gnucxx::__vstring big string (ctors+dtors)/sec=[17905987, 17909566 ~(+/-4%), 17911321], samples=21, total=376100905
    • stack_string small string (ctors+dtors+assignment)/sec=[55224728, 55254120 ~(+/-4%), 55267397], samples=21, total=1160336527
    • std::string small string (ctors+dtors+assignment)/sec=[10093766, 10138325 ~(+/-4%), 10177015], samples=21, total=212904843
    • __gnucxx::__vstring small string (ctors+dtors+assignment)/sec=[37145984, 39441839 ~(+/-4%), 42999101], samples=41, total=1617115404
    • stack_string big string (ctors+dtors+assignment)/sec=[8446274, 8726725 ~(+/-4%), 8744792], samples=20, total=174534506
    • std::string big string (ctors+dtors+assignment)/sec=[9887807, 10000563 ~(+/-4%), 10065898], samples=21, total=210011827
    • __gnucxx::__vstring big string (ctors+dtors+assignment)/sec=[9993189, 10073089 ~(+/-4%), 10130002], samples=20, total=201461782
    • stack_string small string (ctors+dtors+replace)/sec=[30779326, 31247464 ~(+/-4%), 31286947], samples=21, total=656196758
    • std::string small string (ctors+dtors+replace)/sec=[3554754, 3569919 ~(+/-4%), 3580345], samples=21, total=74968318
    • __gnucxx::__vstring small string (ctors+dtors+replace)/sec=[24622578, 25761126 ~(+/-4%), 25973223], samples=20, total=515222525
    • stack_string big string (ctors+dtors+replace)/sec=[5175213, 5381860 ~(+/-4%), 5412671], samples=20, total=107637218
    • std::string big string (ctors+dtors+replace)/sec=[3548994, 3575052 ~(+/-4%), 3605774], samples=21, total=75076100
    • __gnucxx::__vstring big string (ctors+dtors+replace)/sec=[5421178, 5540581 ~(+/-4%), 5548517], samples=20, total=110811631
  2. Build 1627:
    • stack_string small string (ctors+dtors)/sec=[77688729, 78157207 ~(+/-4%), 78233671], samples=21, total=1641301351
    • std::string small string (ctors+dtors)/sec=[15288084, 15429237 ~(+/-4%), 15484286], samples=20, total=308584744
    • __gnucxx::__vstring small string (ctors+dtors)/sec=[39799648, 41135410 ~(+/-4%), 41391482], samples=20, total=822708201
    • stack_string big string (ctors+dtors)/sec=[14184497, 14435743 ~(+/-4%), 14460011], samples=21, total=303150620
    • std::string big string (ctors+dtors)/sec=[14697476, 14779399 ~(+/-4%), 14815372], samples=21, total=310367382
    • __gnucxx::__vstring big string (ctors+dtors)/sec=[12887788, 13119301 ~(+/-5%), 13231750], samples=21, total=275505323
    • stack_string small string (ctors+dtors+assignment)/sec=[66254782, 67709907 ~(+/-5%), 67908163], samples=21, total=1421908066
    • std::string small string (ctors+dtors+assignment)/sec=[10831330, 10883866 ~(+/-4%), 10897227], samples=21, total=228561205
    • __gnucxx::__vstring small string (ctors+dtors+assignment)/sec=[23789008, 24003363 ~(+/-5%), 24265407], samples=21, total=504070629
    • stack_string big string (ctors+dtors+assignment)/sec=[7340829, 7656490 ~(+/-6%), 7802339], samples=21, total=160786309
    • std::string big string (ctors+dtors+assignment)/sec=[10271093, 10534818 ~(+/-5%), 10578410], samples=21, total=221231184
    • __gnucxx::__vstring big string (ctors+dtors+assignment)/sec=[7732222, 7846254 ~(+/-5%), 7857272], samples=21, total=164771350
    • stack_string small string (ctors+dtors+replace)/sec=[16342456, 16412117 ~(+/-4%), 16427649], samples=21, total=344654458
    • std::string small string (ctors+dtors+replace)/sec=[4232467, 4267956 ~(+/-4%), 4281863], samples=21, total=89627089
    • __gnucxx::__vstring small string (ctors+dtors+replace)/sec=[15143025, 15316453 ~(+/-4%), 15364299], samples=21, total=321645514
    • stack_string big string (ctors+dtors+replace)/sec=[4185507, 4281924 ~(+/-5%), 4298870], samples=21, total=89920404
    • std::string big string (ctors+dtors+replace)/sec=[4425767, 4452773 ~(+/-4%), 4463363], samples=20, total=89055461
    • __gnucxx::__vstring big string (ctors+dtors+replace)/sec=[4680365, 4695952 ~(+/-4%), 4719313], samples=21, total=98615000
  3. Build 1643:
    • stack_string small string (ctors+dtors)/sec=[77731544, 78352331 ~(+/-4%), 78418333], samples=20, total=1567046620
    • std::string small string (ctors+dtors)/sec=[15381950, 15471575 ~(+/-4%), 15510609], samples=21, total=324903095
    • __gnucxx::__vstring small string (ctors+dtors)/sec=[40882288, 42053251 ~(+/-4%), 42234812], samples=20, total=841065030
    • stack_string big string (ctors+dtors)/sec=[14472412, 14509867 ~(+/-4%), 14522212], samples=21, total=304707207
    • std::string big string (ctors+dtors)/sec=[14733592, 14750590 ~(+/-4%), 14759905], samples=21, total=309762398
    • __gnucxx::__vstring big string (ctors+dtors)/sec=[12806720, 13027029 ~(+/-4%), 13219483], samples=35, total=455946018
    • stack_string small string (ctors+dtors+assignment)/sec=[64906657, 64933195 ~(+/-4%), 64948307], samples=21, total=1363597097
    • std::string small string (ctors+dtors+assignment)/sec=[9965722, 10753837 ~(+/-4%), 10893439], samples=25, total=268845934
    • __gnucxx::__vstring small string (ctors+dtors+assignment)/sec=[25880419, 26471226 ~(+/-4%), 26642595], samples=23, total=608838203
    • stack_string big string (ctors+dtors+assignment)/sec=[7380573, 7479894 ~(+/-4%), 7582891], samples=26, total=194477260
    • std::string big string (ctors+dtors+assignment)/sec=[10530196, 10532715 ~(+/-4%), 10535628], samples=21, total=221187030
    • __gnucxx::__vstring big string (ctors+dtors+assignment)/sec=[7574794, 7824633 ~(+/-4%), 7860065], samples=22, total=172141946
    • stack_string small string (ctors+dtors+replace)/sec=[15697091, 15820997 ~(+/-4%), 15966704], samples=22, total=348061936
    • std::string small string (ctors+dtors+replace)/sec=[4502732, 4529391 ~(+/-4%), 4540575], samples=21, total=95117212
    • __gnucxx::__vstring small string (ctors+dtors+replace)/sec=[14205080, 14691759 ~(+/-4%), 15367257], samples=32, total=470136317
    • stack_string big string (ctors+dtors+replace)/sec=[4185298, 4235308 ~(+/-4%), 4247537], samples=20, total=84706170
    • std::string big string (ctors+dtors+replace)/sec=[4468726, 4474550 ~(+/-4%), 4475729], samples=21, total=93965557
    • __gnucxx::__vstring big string (ctors+dtors+replace)/sec=[4673622, 4688568 ~(+/-4%), 4691540], samples=21, total=98459947
Member BOOST_AUTO_TEST_CASE_TEMPLATE (parallel_cctor, ctr_t, ctr_types)
Graph of performance results for parallel shared_ptr cctors. Results for 100000000 repetitions:
  1. Build 1359: g++v4.7.3, boost v1.54:
    • boost::shared_ptr (sequential?) Rate=7.92973e+06 deletions/sec. (TODO: Measure these two with parallel implementations.)
    • std::shared_ptr (sequential) Rate=8.32583e+06 deletions/sec. (TODO: Measure these two with parallel implementations.)
    • shared_ptr<sequential, simple pointer swaps> Rate=1.95911e+07 deletions/sec.
    • shared_ptr<sequential, atomic pointer swaps> Rate=7.56916e+06 deletions/sec.
    • shared_ptr<lock free, simple pointer swaps> Rate=1.25674e+07 deletions/sec.
    • shared_ptr<lock free, atomic pointer swaps> Rate=7.036e+06 deletions/sec.
  2. Build 1627: g++v4.8.4, boost v1.56:
    • boost::shared_ptr (sequential?) Rate=6.36351e+06 deletions/sec. (TODO: Measure these two with parallel implementations.)
    • std::shared_ptr (sequential) Rate=6.6604e+06 deletions/sec. (TODO: Measure these two with parallel implementations.)
    • shared_ptr<sequential, simple pointer swaps> Rate=1.08592e+07 deletions/sec.
    • shared_ptr<sequential, atomic pointer swaps> Rate=6.89014e+06 deletions/sec.
    • shared_ptr<lock free, simple pointer swaps> Rate=1.12256e+07 deletions/sec.
    • shared_ptr<lock free, atomic pointer swaps> Rate=6.52994e+06 deletions/sec.
  3. Build 1643: g++v4.8.4, boost v1.56:
    • boost::shared_ptr (sequential?) rate deletions/sec=[6616365, 6878884 ~(+/-4%), 7035776], samples=28, total=192608756 (TODO: Measure these two with parallel implementations.)
    • std::shared_ptr (sequential) rate deletions/sec=[6796090, 7164560 ~(+/-4%), 7511524], samples=26, total=186278584 (TODO: Measure these two with parallel implementations.)
    • shared_ptr<sequential, simple pointer swaps> rate deletions/sec=[10978380, 11155910 ~(+/-4%), 11483192], samples=23, total=256585947
    • shared_ptr<sequential, atomic pointer swaps> rate deletions/sec=[6660595, 6898122 ~(+/-4%), 7085593], samples=22, total=151758702
    • shared_ptr<lock free, simple pointer swaps> rate deletions/sec=[11225288, 11406743 ~(+/-4%), 11616904], samples=22, total=250948363
    • shared_ptr<lock free, atomic pointer swaps> rate deletions/sec=[6616558, 6947559 ~(+/-4%), 7187529], samples=26, total=180636540
Member BOOST_AUTO_TEST_CASE_TEMPLATE (parallel_deletes, ctr_t, ctr_types)
Graph of performance results for parallel shared_ptr dtors. Results for 100000000 items:
  1. Build 1654: g++v4.8.4, boost v1.56:
    • boost::shared_ptr (sequential?) rate dtors/sec=[7400343, 8216575 ~(+/-4%), 8687559], samples=36, total=295796708 (TODO: Measure these two with parallel implementations.)
    • std::shared_ptr (sequential) rate dtors/sec=[8611878, 8703849 ~(+/-4%), 8841397], samples=24, total=208892398 (TODO: Measure these two with parallel implementations.)
    • shared_ptr<sequential, simple pointer swaps> rate dtors/sec=[16113069, 16621324 ~(+/-4%), 17224698], samples=25, total=415533114
    • shared_ptr<sequential, atomic pointer swaps> rate dtors/sec=[6842758, 7109094 ~(+/-4%), 7291866], samples=21, total=149290992
    • shared_ptr<lock free, simple pointer swaps> rate dtors/sec=[17224692, 17370089 ~(+/-4%), 17527721], samples=25, total=434252234
    • shared_ptr<lock free, atomic pointer swaps> rate dtors/sec=[7136291, 7277720 ~(+/-4%), 7400557], samples=24, total=174665283
Member BOOST_AUTO_TEST_CASE_TEMPLATE (default_ctor, Mdl, thread_types)
Tests for the thread-as-a-class model.
Member BOOST_AUTO_TEST_CASE_TEMPLATE (accumulate, T, finite_lifo_test_types)
Graph of scalability of parallel accumulate. For 2<<10 items. Note that we observe anti-scaling, as there are simply not enough items in the collection to offset the costs of threading.
  1. Results:
    1. Build 1405:
      • Pool=0, items=1024, time taken: [0, 1.35999e-09 ~(+/-2.8e+02%), 3.1e-05], samples=100001, total=0.00014 sec.
      • Pool=1, items=1024, time taken: [1e-06, 1.01439e-06 ~(+/-10%), 2.5e-05], samples=5002, total=0.0051 sec.
      • Pool=2, items=1024, time taken: [2.9e-05, 9.26648e-05 ~(+/-10%), 0.00098], samples=13838, total=1.3 sec.
      • Pool=4, items=1024, time taken: [0.000136, 0.00021595 ~(+/-9.8%), 0.0003], samples=60, total=0.013 sec.
      • Pool=8, items=1024, time taken: [0.000272, 0.000470489 ~(+/-10%), 0.0008], samples=47, total=0.022 sec.
      • Pool=12, items=1024, time taken: [0.000419, 0.000632359 ~(+/-9.8%), 0.0015], samples=64, total=0.04 sec.
    2. Build 1469:
      • Pool=0, items=1024, time taken: [0, 2.851e-10 ~(+/-2.2e+02%), 4e-05], samples=10000001, total=0.0029 sec.
      • Pool=1, items=1024, time taken: [1e-06, 1.00901e-06 ~(+/-10%), 4.6e-05], samples=488923, total=0.49 sec.
      • Pool=2, items=1024, time taken: [8e-06, 0.000108706 ~(+/-12%), 0.0032], samples=10000001, total=1.1e+03 sec.
      • Pool=4, items=1024, time taken: [7.8e-05, 0.000269517 ~(+/-10%), 0.00054], samples=675, total=0.18 sec.
      • Pool=8, items=1024, time taken: [0.000282, 0.000469618 ~(+/-10%), 0.0017], samples=304, total=0.14 sec.
      • Pool=12, items=1024, time taken: [0.000321, 0.000540948 ~(+/-10%), 0.00077], samples=192, total=0.1 sec.
Member BOOST_AUTO_TEST_CASE_TEMPLATE (merge, T, finite_lifo_test_types)
Graph of scalability of parallel merge. For 2<<25 items.
  1. Results:
    1. Build 1655:
      • Pool=0, items=1024, time taken=
      • Pool=1, items=1024, time taken=
      • Pool=2, items=1024, time taken=
      • Pool=4, items=1024, time taken=
      • Pool=8, items=1024, time taken=
      • Pool=12, items=1024, time taken=
Member BOOST_AUTO_TEST_CASE_TEMPLATE (sort_unsorted, T, finite_lifo_test_types)
Graph of scalability of parallel sort. For 2<<25 items.
  1. Results:
    1. Build 1655:
      • Pool=0, items=1024, time taken=
      • Pool=1, items=1024, time taken=
      • Pool=2, items=1024, time taken=
      • Pool=4, items=1024, time taken=
      • Pool=8, items=1024, time taken=
      • Pool=12, items=1024, time taken=
Member BOOST_AUTO_TEST_CASE_TEMPLATE (rate, setbits_t, check_dyn_setbits_tests)
Graph of performance results for the various count-setbits functions. Computing the number of bits set in 2<<21 randomly-generated numbers:
  1. Build 1240: g++v4.5.2:
    • dyn::basic::count_setbits = 1.41313e+07 bit counts/sec
    • dyn::lookup::count_setbits, 8-bit cache = 6.68295e+07 bit counts/sec
    • dyn::unroll::count_setbits = 8.12703e+06 bit counts/sec
  2. Build 1241: g++v4.7.3:
    • dyn::basic::count_setbits = 3.66071e+07 bit counts/sec
    • dyn::lookup::count_setbits, 8-bit cache = 8.60793e+07 bit counts/sec.
    • dyn::lookup::count_setbits, 16-bit cache = 1.09846e+08 bit counts/sec
    • dyn::lookup::count_setbits, 32-bit cache = 1.09919e+08 bit counts/sec
    • dyn::lookup::count_setbits, 64-bit cache = 1.49271e+08 bit counts/sec
    • dyn::unroll::count_setbits = 2.59625e+07 bit counts/sec
  3. Build 1627: g++v4.8.4:
    • dyn::basic::count_setbits bit counts/sec = [16572381, 16907215 ~(+/-4%), 16969377], samples=21, total=355051515
    • dyn::builtin::count_setbits bit counts/sec = [287045168, 291680516 ~(+/-4%), 296752794], samples=22, total=6416971371
    • dyn::lookup::count_setbits, 8-bit cache bit counts/sec = [25221159, 25260814 ~(+/-4%), 25286541], samples=21, total=530477098
    • dyn::lookup::count_setbits, 16-bit cache bit counts/sec = [40636574, 40737874 ~(+/-4%), 40812929], samples=21, total=855495365
    • dyn::lookup::count_setbits, 32-bit cache bit counts/sec = [58788215, 58955639 ~(+/-4%), 59040610], samples=21, total=1238068428
    • dyn::lookup::count_setbits, 64-bit cache bit counts/sec = [71190047, 71557163 ~(+/-4%), 71684025], samples=21, total=1502700440
    • dyn::unroll::count_setbits bit counts/sec = [29459347, 29517343 ~(+/-4%), 29552128], samples=21, total=619864204
Member BOOST_AUTO_TEST_CASE_TEMPLATE (from_string, algorithm, from_conversion_algorithms)
Graph of performance results for string-to-long conversion algorithms. Test the performance of various string-to-long conversion algorithms.
Member BOOST_AUTO_TEST_CASE_TEMPLATE (to_string, algorithm, to_conversion_algorithms)
Graph of performance results for long-to-string conversion algorithms. Test the performance of various long-to-string conversion algorithms.
Member BOOST_AUTO_TEST_CASE_TEMPLATE (multithreaded_scoped_lock, details_t, lock_types)
Graph of performance results for a spin-lock based mutex versus other common mutexes. Results for 100*10000 repetitions.
Member BOOST_AUTO_TEST_CASE_TEMPLATE (state_changes, state_machine_t, state_machines_t)
Graph of the performance comparison of various implementations of an msm. Performance of randomly-called state-changes per second.
Member BOOST_AUTO_TEST_CASE_TEMPLATE (reject, exchg_t, exchg_t_types)
"Order handling" of [1] Test: Response to an invalid NewOrder. Verify that the response to an invalid NewOrder is a Reject. [1] "BATS Chi-X Europe Binary Order Entry Specification", Version 1.44, 27 November, 2014
Member BOOST_AUTO_TEST_CASE_TEMPLATE (single_vertical_dataflow_operations_rate, T, dataflow_ps1_test_types)
Graphs of vertical & horizontal and vertical with different pool_types dataflow (pool_size()=1) operations rate. This tests how long it takes to:
  1. Create an execution_context on the stack.
  2. Add the work to the queue.
  3. Increment and decrement the number of active work items in the queue.
  4. Have one vertical thread wake up and remove the work, i.e. the thread pool does not saturate as only the main thread produces work, and one thread in the pool consumes that work and a context-switch is involved.
  5. Signal that the work has been completed.
  6. It does not test the scalability of multiple threads contending to add work to, or remove work from, the queue.
  7. Results:
    1. Build 1405:
      • Pool=1, vertical dataflow transfers per second: [14063, 36066 ~(+/-9%), 287956], samples=1001, total=36102451 i.e. @2.6GHz, [71microsec, 28microsec, 3.5microsec] per data transfer.
    2. Build 1447:
      • Pool=1, vertical dataflow transfers per second: [8438, 53961 ~(+/-29%), 260460], samples=1001, total=54015303 i.e. @2.6GHz, [119microsec, 19microsec, 3.8microsec] per data transfer.
    3. Build 1561:
      • Pool=1, time taken: [3023, 23473 ~(+/-174%), 130458], samples=2001, total=46971159 usec. i.e. @2.6GHz, [130microsec, 23microsec, 3.0microsec] per data transfer.
Member BOOST_AUTO_TEST_CASE_TEMPLATE (vertical_dataflow_operations_rate, T, dataflow_ps12_test_types)
Graph of vertical dataflow-transfers, avoiding a context switch, (pool_size()=1) operations rate. This tests how long it takes to:
  1. Create an execution_context on the stack.
  2. Add the work to the queue, and wait for it to complete.
  3. The work task is to transfer a trivial work-item to the queue and wait for it to complete. This is performed repeatedly.
  4. The concept is that the transferred work should be run by the same thread that transferred it, potentially avoiding any context switch.
  5. Results:
    1. Build 1671:

      • Pool=1, vertical dataflow transfers per second: TODO i.e. @2.6GHz, [71microsec, 28microsec, 3.5microsec] per data transfer.

      Graphs of vertical & horizontal and vertical with different pool_types dataflow (pool_size()=12) operations rate. This tests how long it takes to:

  6. Creates twelve execution_contexts on the stack, enqueuing the work.
  7. The pool of threads process the work, i.e. a context-switch is involved.
  8. This rapidly creates work, which is processed, usually using only one of the threads in the pool. With twelve threads there is a lot of contention on the queue for the work. The vast majority is executed vertically.
  9. Results:
    1. Build 1405:
      • Pool=12, vertical dataflow transfers per second: [681, 1223 ~(+/-0%), 1811], samples=64, total=78278 i.e. @2.6GHz, [122microsec, 68microsec, 46microsec] per data transfer.
    2. Build 1415:
      • Pool=12, vertical dataflow transfers per second: [3368, 3547 ~(+/-0%), 3855], samples=181, total=642030 i.e. @2.6GHz, [25microsec, 23microsec, 22microsec] per data transfer.
    3. Build 1447:
      • Pool=12, vertical dataflow transfers per second: [4242, 4622 ~(+/-0%), 5879], samples=757, total=3499459 i.e. @2.6GHz, [20microsec, 18microsec, 14microsec] per data transfer.
Member BOOST_AUTO_TEST_CASE_TEMPLATE (horizontal_dataflow_transfers_rate, T, dataflow_ps12_test_types)
Graph of tree-creation dataflow (pool_size()=12) transfers rate. This tests how long it takes to:
  1. Recursively creates two execution_contexts on the stack, waiting for the tree to be created.
  2. The leaf-nodes are processed & return, the tree reduces. Related sibling-nodes are executed by the same thread, others may involve a context-switch.
  3. If the test_depth is small, e.g. 3, then eight leaf-nodes are created, for a total of 14 nodes . With a pool_size of 12, the work will be mutated vertically. A test-depth of 4 would produce 16 leaf-nodes, and a total of 30 nodes.
  4. This can rapidly flood the pool full of work, if the depth generates many more leaf-nodes than pool_threads, in which case the vast majority would be executed horizontally.
  5. The contention on the queue is extremely high from all of the spawned horizontal threads.
  6. Results:
    1. Build 1447:
      • Pool=12, vertical dataflow transfers per second: [8438, 53961 ~(+/-29%), 260460], samples=1001, total=54015303 i.e. @2.6GHz, [119microsec, 19microsec, 3.8microsec] per data transfer.
    2. Build 1561:
      • Pool=12, time taken: [54029, 103259 ~(+/-19%), 478100], samples=2001, total=206621313 usec. i.e. @2.6GHz, 0.53microsec per data transfer.
Member BOOST_AUTO_TEST_CASE_TEMPLATE (reject, exchg_t, exchg_t_types)
Graph of performance results for the BATSBOE-based simulator- Results for 5000 repetitions. The timings include the full-round-trip: including time to create the BATSBOE order, send it, time in the simulator, time to receive, all of which includes the "wire-time".
Member BOOST_AUTO_TEST_CASE_TEMPLATE (order_rejected_at_a_time, exchg_t, exchg_t_types)
Graph of performance results for the BATSBOE-based exchange-links, sending an order and receiving the reject one-at-a-time. The histogram of the results, pinned but no numactl. Results for 5000 repetitions. The timings include the full-round-trip: including time to create the FIX order, convert it, send it, time in the simulator, time to receive, time to convert back to FIX, all of which includes the "wire-time". If numactl is to be used, the command "numactl --cpunodebind=1 --membind=1 ../../build/release/isimud/tests/test_batsboe_exchanges_performance" should be executed, Where NODE_INDEX should be the same value as that in thread_traits::numa_index.
Member BOOST_AUTO_TEST_CASE_TEMPLATE (order_rejects_parallel, exchg_t, exchg_t_types)
Graph of performance results for the MIT-based exchange-links, sending the orders and receiving the rejects in parallel. The histogram of the results, pinned but no numactl. Results for 20000 orders sent & rejects received. The timings include the full-round-trip: including time to create the FIX order, convert it, send it, time in the simulator, time to receive, time to convert back to FIX, all of which includes the "wire-time". If numactl is to be used, the command "numactl --cpunodebind=NODE_INDEX --membind=NODE_INDEX ../../build/release/isimud/tests/test_batsboe_exchanges_performance" should be executed, Where NODE_INDEX should be the same value as that in thread_traits::numa_index.
Member BOOST_AUTO_TEST_CASE_TEMPLATE (primary_gateway_available, exchg_t, exchg_t_types)
Section 4.4: "Connectivity Policy" of [1] Test: primary gateway available. Verify that less than 5 seconds passes if just the primary gateway is available. [1] "BATS Chi-X Europe Binary Order Entry Specification", Version 1.44, 27 November, 2014
Member BOOST_AUTO_TEST_CASE_TEMPLATE (initially_no_orders, ob_t, ob_t_types)
Initially it has no orders.
Member BOOST_AUTO_TEST_CASE_TEMPLATE (logon, exchg_t, exchg_t_types)
"Establishing a connection" Test: LogonRequest response. Verify that the response to a LogonRequest is a LogonReply. [1] "BATS Chi-X Europe Binary Order Entry Specification", Version 1.44, 27 November, 2014
Member BOOST_AUTO_TEST_CASE_TEMPLATE (client_heartbeat, exchg_t, exchg_t_types)
"Heartbeats" Test: Client Heartbeat. Verify that the response to a Heartbeat is nothing. [1] "BATS Chi-X Europe Binary Order Entry Specification", Version 1.44, 27 November, 2014
Member BOOST_AUTO_TEST_CASE_TEMPLATE (server_heartbeat, exchg_t, exchg_t_types)
"Heartbeats" Test: Server Heartbeat. ====================================. [1] "BATS Chi-X Europe Binary Order Entry Specification", Version 1.44, 27 November, 2014
Member BOOST_AUTO_TEST_CASE_TEMPLATE (logout, exchg_t, exchg_t_types)
"Terminating a connection" Test: LogoutRequest. Verify that the response to a LogoutRequest is a Logout. [1] "BATS Chi-X Europe Binary Order Entry Specification", Version 1.44, 27 November, 2014
Member BOOST_AUTO_TEST_CASE_TEMPLATE (logon_logout, exchg_t, exchg_t_types)
"Establishing a connection" Test: LogonRequest & LogoutRequest response. Verify the behaviour of a LogonRequest followed by a and LogoutRequest. [1] "BATS Chi-X Europe Binary Order Entry Specification", Version 1.44, 27 November, 2014
Member BOOST_AUTO_TEST_CASE_TEMPLATE (reject, exchg_t, exchg_t_types)

"Establishing a connection" of [1] Test: Re-LogonRequest & LogoutRequest response. Verify the behaviour of a LogonRequest followed by a and LogoutRequest, repeated. [1] "BATS Chi-X Europe Binary Order Entry Specification", Version 1.44, 27 November, 2014

Section 9.1 "Order handling" of [1] Test: Response to an invalid NewOrder. Verify that the response to an invalid NewOrder is a Reject. [1] "MIT203 - MILLENNIUM EXCHANGE Native Trading Gateway"

Member BOOST_AUTO_TEST_CASE_TEMPLATE (partial_fill_replace, exchg_t, exchg_t_types)
Section 9.1 "Order handling" of [1] Test: Response to a OrderCancelReplaceRequest is a replaced ExecutionReport. Verify that the response to a OrderCancelReplaceRequest of the remaining quantity of a suitably large, buy, day, market NewOrder is a replaced ExecutionReport. [1] "MIT203 - MILLENNIUM EXCHANGE Native Trading Gateway"
Member BOOST_AUTO_TEST_CASE_TEMPLATE (partial_fill_cancel, exchg_t, exchg_t_types)
Section 9.1 "Order handling" of [1] Test: Response to a OrderCancelRequest is a cancelled ExecutionReport. Verify that the response to a OrderCancelRequest of the remaining quantity of a suitably large, buy, day, market NewOrder is a cancelled ExecutionReport. [1] "MIT203 - MILLENNIUM EXCHANGE Native Trading Gateway"
Member BOOST_AUTO_TEST_CASE_TEMPLATE (partial_fill, exchg_t, exchg_t_types)
Section 9.1 "Order handling" of [1] Test: Response to a BUY, DAY, MARKET NewOrder is a partially-filled ExecutionReport. Verify that the response to a suitably large, buy, day, market NewOrder is a partially-filled ExecutionReport. [1] "MIT203 - MILLENNIUM EXCHANGE Native Trading Gateway"
Member BOOST_AUTO_TEST_CASE_TEMPLATE (new_order, exchg_t, exchg_t_types)
Section 9.1 "Order handling" of [1] Test: Response to a BUY, DAY, MARKET NewOrder is a filled ExecutionReport. Verify that the response to a buy, day, market NewOrder is a filled ExecutionReport. [1] "MIT203 - MILLENNIUM EXCHANGE Native Trading Gateway"
Member BOOST_AUTO_TEST_CASE_TEMPLATE (modify_accept, exchg_t, exchg_t_types)
Section 9.1 "Order handling" of [1] Test: Response to a valid OrderCancelReplaceRequest. Verify that the response to a valid OrderCancelReplaceRequest is a cancelled order ExecutionReport. [1] "MIT203 - MILLENNIUM EXCHANGE Native Trading Gateway"
Member BOOST_AUTO_TEST_CASE_TEMPLATE (modify_reject, exchg_t, exchg_t_types)
Section 9.1 "Order handling" of [1] Test: Response to an invalid OrderCancelReplaceRequest. Verify that the response to an invalid OrderCancelReplaceRequest is a cancelled order OrderCancelReject. [1] "MIT203 - MILLENNIUM EXCHANGE Native Trading Gateway"
Member BOOST_AUTO_TEST_CASE_TEMPLATE (cancel_accept, exchg_t, exchg_t_types)
Section 9.1 "Order handling" of [1] Test: Response to a valid OrderCancelRequest. Verify that the response to a valid OrderCancelRequest is a cancelled order ExecutionReport. [1] "MIT203 - MILLENNIUM EXCHANGE Native Trading Gateway"
Member BOOST_AUTO_TEST_CASE_TEMPLATE (cancel_reject, exchg_t, exchg_t_types)
Section 9.1 "Order handling" of [1] Test: Response to an invalid OrderCancelRequest. Verify that the response to an invalid OrderCancelRequest is a OrderCancelReject. [1] "MIT203 - MILLENNIUM EXCHANGE Native Trading Gateway"
Member BOOST_AUTO_TEST_CASE_TEMPLATE (new_order, exchg_t, exchg_t_types)
Section 9.1 "Order handling" of [1] Test: Response to a BUY, DAY, LIMIT NewOrder is a filled ExecutionReport. Verify that the response to a buy, day, limit NewOrder is a filled ExecutionReport. [1] "MIT203 - MILLENNIUM EXCHANGE Native Trading Gateway"
Member BOOST_AUTO_TEST_CASE_TEMPLATE (reject, exchg_t, exchg_t_types)
Section 5.1: "Establishing a connection" of [1] Test: Re-LogonRequest & LogoutRequest response. Verify the behaviour of a LogonRequest followed by a and LogoutRequest, repeated. [1] "MIT203 - MILLENNIUM EXCHANGE Native Trading Gateway"
Member BOOST_AUTO_TEST_CASE_TEMPLATE (logon_logout, exchg_t, exchg_t_types)
Section 5.1: "Establishing a connection" of [1] Test: LogonRequest & LogoutRequest response. Verify the behaviour of a LogonRequest followed by a and LogoutRequest. [1] "MIT203 - MILLENNIUM EXCHANGE Native Trading Gateway"
Member BOOST_AUTO_TEST_CASE_TEMPLATE (logout, exchg_t, exchg_t_types)
Section 5.3: "Terminating a connection" of [1] Test: LogoutRequest. Verify that the response to a LogoutRequest is a Logout. [1] "MIT203 - MILLENNIUM EXCHANGE Native Trading Gateway"
Member BOOST_AUTO_TEST_CASE_TEMPLATE (server_heartbeat, exchg_t, exchg_t_types)
Section 5.2.2: "Heartbeats" of [1] Test: Server Heartbeat. Verify that the simulator sends a heartbeat after the appropriate interval. [1] "MIT203 - MILLENNIUM EXCHANGE Native Trading Gateway"
Member BOOST_AUTO_TEST_CASE_TEMPLATE (client_heartbeat, exchg_t, exchg_t_types)
Section 5.2.2: "Heartbeats" of [1] Test: Client Heartbeat. Verify that the response to a Heartbeat is nothing. [1] "MIT203 - MILLENNIUM EXCHANGE Native Trading Gateway"
Member BOOST_AUTO_TEST_CASE_TEMPLATE (logon, exchg_t, exchg_t_types)
Section 5.1: "Establishing a connection" of [1] Test: LogonRequest response. Verify that the response to a LogonRequest is a LogonReply. [1] "MIT203 - MILLENNIUM EXCHANGE Native Trading Gateway"
Member BOOST_AUTO_TEST_CASE_TEMPLATE (secondary_gateway_available, exchg_t, exchg_t_types)
Section 4.4: "Connectivity Policy" of [1] Test: primary gateway unavailable. Verify that more than 3*5 seconds passes if just the primary gateway is unavailable, and the secondary available. [1] "MIT203 - MILLENNIUM EXCHANGE Native Trading Gateway"
Member BOOST_AUTO_TEST_CASE_TEMPLATE (re_connnect, exchg_t, exchg_t_types)
Re-connect to the available primary gateway. Verify that less than 5 seconds passes if just the primary gateway is available for the re-connections. [1] "MIT203 - MILLENNIUM EXCHANGE Native Trading Gateway"
Member BOOST_AUTO_TEST_CASE_TEMPLATE (reject, exchg_t, exchg_t_types)
Response to an invalid NewOrder. Verify that the response to an invalid NewOrder is a BusinessReject.
Member BOOST_AUTO_TEST_CASE_TEMPLATE (client_heartbeat, exchg_t, exchg_t_types)
"Heartbeats" Test: Client Heartbeat. Verify that the response to a Heartbeat is nothing.
Member BOOST_AUTO_TEST_CASE_TEMPLATE (gateway_available, exchg_t, exchg_t_types)
"Connectivity Policy" Test: primary gateway available. Verify that less than 5 seconds passes if just the primary gateway is available.
Member BOOST_AUTO_TEST_CASE_TEMPLATE (gateway_unavailable, exchg_t, exchg_t_types)
"Connectivity Policy" Test: gateway unavailable. Verify that more than 1*5 seconds passes if both gateways are unavailable.
Member BOOST_AUTO_TEST_CASE_TEMPLATE (market_partial_fill, exchg_t, exchg_t_types)
"Order handling" Test: Response to a BUY, DAY, MARKET NewOrder is a filled FIX message. Verify that the response to a buy, day, market NewOrder is a filled FIX message.
Member BOOST_AUTO_TEST_CASE_TEMPLATE (market_fill, exchg_t, exchg_t_types)
"Order handling" Test: Response to a BUY, DAY, MARKET NewOrder is a filled FIX message. Verify that the response to a buy, day, market NewOrder is a filled FIX message.
Member BOOST_AUTO_TEST_CASE_TEMPLATE (modify_reject, exchg_t, exchg_t_types)
Response to an invalid OrderCancelReplaceRequest. Verify that the response to an invalid OrderCancelReplaceRequest is a cancelled order CancelRejected.
Member BOOST_AUTO_TEST_CASE_TEMPLATE (cancel_accept, exchg_t, exchg_t_types)
Response to a valid OrderCancelRequest. Verify that the response to a valid OrderCancelRequest is a cancelled order ExecutionReport.
Member BOOST_AUTO_TEST_CASE_TEMPLATE (cancel_reject, exchg_t, exchg_t_types)
Response to an invalid OrderCancelRequest. Verify that the response to an invalid OrderCancelRequest is a CancelRejected.
Member BOOST_AUTO_TEST_CASE_TEMPLATE (primary_gateway_available, exchg_t, exchg_t_types)
Section 4.4: "Connectivity Policy" of [1] Test: primary gateway available. Verify that less than 5 seconds passes if just the primary gateway is available. [1] "MIT203 - MILLENNIUM EXCHANGE Native Trading Gateway"
Member BOOST_AUTO_TEST_CASE_TEMPLATE (heartbeats_with_client, exchg_t, exchg_t_types)
Verify Heartbeats - with client. Verify that Heartbeats occur, with a connected client.
Member BOOST_AUTO_TEST_CASE_TEMPLATE (heartbeats_no_clients, exchg_t, exchg_t_types)
Verify Heartbeats - no clients. Verify that Heartbeats occur, without any clients.
Member BOOST_AUTO_TEST_CASE_TEMPLATE (re_connect_client_with_logon, exchg_t, exchg_t_types)
Verify that clients can re-connect to logged-on gateway. Verify that the gateway can re-log on to the exchange, with a connected client.
Member BOOST_AUTO_TEST_CASE_TEMPLATE (logon_with_a_client, exchg_t, exchg_t_types)
Verify Logon - with a client. Verify that the link can log on to the exchange and remains logged on, with a client connected.
Member BOOST_AUTO_TEST_CASE_TEMPLATE (re_logon_no_clients, exchg_t, exchg_t_types)
Verify that gateway can re-Logon. Verify that the gateway can re-log on to the exchange, without any clients.
Member BOOST_AUTO_TEST_CASE_TEMPLATE (logon_no_clients, exchg_t, exchg_t_types)
Verify Logon - no clients. Verify that the link can log on to the exchange, with no clients.
Member BOOST_AUTO_TEST_CASE_TEMPLATE (open_modified, exchg_t, exchg_t_types)
Section 9.1 "Order handling" of [1] Test: Response to a suitable BUY, DAY, LIMIT NewOrder followed by an OrderCancelReplaceRequest is a cancelled ExecutionReport. Verify that the response to a buy, day, limit NewOrder that is open on the exchange then modified is a cancelled ExecutionReport. [1] "MIT203 - MILLENNIUM EXCHANGE Native Trading Gateway"
Member BOOST_AUTO_TEST_CASE_TEMPLATE (open_cancelled, exchg_t, exchg_t_types)
Section 9.1 "Order handling" of [1] Test: Response to a suitable BUY, DAY, LIMIT NewOrder followed by an OrderCancelRequest is a cancelled ExecutionReport. Verify that the response to a buy, day, limit NewOrder that is open on the exchange then cancelled is a cancelled ExecutionReport. [1] "MIT203 - MILLENNIUM EXCHANGE Native Trading Gateway"
Member BOOST_AUTO_TEST_CASE_TEMPLATE (place_more_orders, ob_t, ob_t_types)
Place more orders, uncrossed.
Member BOOST_AUTO_TEST_CASE_TEMPLATE (place_orders_then_cancel_one, ob_t, ob_t_types)
Place more orders, then cancel one of them.
Member BOOST_AUTO_TEST_CASE_TEMPLATE (place_more_orders_then_buy_sell_and_buy_crosses_then_match, ob_t, ob_t_types)
Place more orders, then an aggressive buy then an aggressive sell then an aggressive buy, all crossing the exchange, then match for any executions.
Member BOOST_AUTO_TEST_CASE_TEMPLATE (place_more_orders_then_buy_and_sell_crosses_then_match, ob_t, ob_t_types)
Place more orders, then an aggressive buy then an aggressive sell, both crossing the exchange, then match for any executions.
Member BOOST_AUTO_TEST_CASE_TEMPLATE (place_more_orders_then_sell_crosses_then_match_exact, ob_t, ob_t_types)
Place more orders, then an aggressive sell one to cross the exchange, then match for any executions, removing some exactly.
Member BOOST_AUTO_TEST_CASE_TEMPLATE (place_more_orders_then_buy_crosses_then_match_exact, ob_t, ob_t_types)
Place more orders, then an aggressive buy one to cross the exchange, then match for any executions, removing some exactly.
Member BOOST_AUTO_TEST_CASE_TEMPLATE (place_more_orders_then_sell_crosses_then_match, ob_t, ob_t_types)
Place more orders, then an aggressive sell one to cross the exchange, then match for any executions.
Member BOOST_AUTO_TEST_CASE_TEMPLATE (place_more_orders_then_buy_crosses_then_match, ob_t, ob_t_types)
Place more orders, then an aggressive buy one to cross the exchange, then match for any executions.
Member BOOST_AUTO_TEST_CASE_TEMPLATE (place_more_orders_then_cross, ob_t, ob_t_types)
Place more orders, then an aggressive one to cross the exchange.
Member BOOST_AUTO_TEST_CASE_TEMPLATE (place_orders_then_cancel_one_buy_match, ob_t, ob_t_types)
Place more orders, then cancel one of them then place an aggressive buy and match.
Member BOOST_AUTO_TEST_CASE_TEMPLATE (place_two_sells_and_a_buy_orders, ob_t, ob_t_types)
Place a sell then a buy order, then another sell, uncrossed.
Member BOOST_AUTO_TEST_CASE_TEMPLATE (place_a_sell_and_a_buy_orders, ob_t, ob_t_types)
Place a sell & a buy order, uncrossed.
Member BOOST_AUTO_TEST_CASE_TEMPLATE (place_order_not_empty, ob_t, ob_t_types)
Place an order - must not be empty.
Member BOOST_AUTO_TEST_CASE_TEMPLATE (stream_out_default_ctor, ob_t, ob_t_types)
Can print default ctor'd order_book.
Member BOOST_AUTO_TEST_CASE_TEMPLATE (parallel_deletes, ptr_t, ptr_types)
Graph of performance results for parallel unique_ptr dtors. Results for 100000000 items:
Member BOOST_AUTO_TEST_CASE_TEMPLATE (ctor, ob_t, ob_t_types)
Ctor Verify it can be simply created.
Member BOOST_AUTO_TEST_CASE_TEMPLATE (open_replace, exchg_t, exchg_t_types)
Section 9.1 "Order handling" of [1] Test: Response to a suitable BUY, DAY, LIBATSBOE NewOrder followed by an OrderCancelReplaceRequest is a cancelled ExecutionReport. Verify that the response to a buy, day, limit NewOrder that is open on the exchange then modified is a cancelled ExecutionReport. [1] "BATSBOE203 - MILLENNIUM EXCHANGE Native Trading Gateway"
Member BOOST_AUTO_TEST_CASE_TEMPLATE (open_cancelled, exchg_t, exchg_t_types)
Section 9.1 "Order handling" of [1] Test: Response to a suitable BUY, DAY, LIBATSBOE NewOrder followed by an OrderCancelRequest is a cancelled ExecutionReport. Verify that the response to a buy, day, limit NewOrder that is open on the exchange then cancelled is a cancelled ExecutionReport. [1] "BATSBOE203 - MILLENNIUM EXCHANGE Native Trading Gateway"
Member BOOST_AUTO_TEST_CASE_TEMPLATE (heartbeats_no_clients, exchg_t, exchg_t_types)
Verify Heartbeats - no clients. Verify that Heartbeats occur, without any clients.
Member BOOST_AUTO_TEST_CASE_TEMPLATE (both_gateways_unavailable, exchg_t, exchg_t_types)
Section 4.4: "Connectivity Policy" of [1] Test: both gateways unavailable. Verify that more than 2*3*5 seconds passes if both gateways are unavailable. [1] "MIT203 - MILLENNIUM EXCHANGE Native Trading Gateway"
Member BOOST_AUTO_TEST_CASE_TEMPLATE (market_partial_fill, exchg_t, exchg_t_types)
"Order handling" Test: Response to a BUY, DAY, MARKET NewOrder is a filled FIX message. Verify that the response to a buy, day, market NewOrder is a filled FIX message.
Member BOOST_AUTO_TEST_CASE_TEMPLATE (market_fill, exchg_t, exchg_t_types)
"Order handling" Test: Response to a BUY, DAY, MARKET NewOrder is a filled FIX message. Verify that the response to a buy, day, market NewOrder is a filled FIX message.
Member BOOST_AUTO_TEST_CASE_TEMPLATE (modify_reject, exchg_t, exchg_t_types)
Response to an invalid OrderCancelReplaceRequest. Verify that the response to an invalid OrderCancelReplaceRequest is a cancelled order CancelRejected.
Member BOOST_AUTO_TEST_CASE_TEMPLATE (cancel_accept, exchg_t, exchg_t_types)
Response to a valid OrderCancelRequest. Verify that the response to a valid OrderCancelRequest is a cancelled order ExecutionReport.
Member BOOST_AUTO_TEST_CASE_TEMPLATE (cancel_reject, exchg_t, exchg_t_types)
Response to an invalid OrderCancelRequest. Verify that the response to an invalid OrderCancelRequest is a CancelRejected.
Member BOOST_AUTO_TEST_CASE_TEMPLATE (reject, exchg_t, exchg_t_types)
Response to an invalid NewOrder. Verify that the response to an invalid NewOrder is a BusinessReject.
Member BOOST_AUTO_TEST_CASE_TEMPLATE (heartbeats_with_client, exchg_t, exchg_t_types)
Verify Heartbeats - with client. Verify that Heartbeats occur, with a connected client.
Member BOOST_AUTO_TEST_CASE_TEMPLATE (new_order, exchg_t, exchg_t_types)
Section 9.1 "Order handling" of [1] Test: Response to a BUY, DAY, LIBATSBOE NewOrder is a filled ExecutionReport. Verify that the response to a buy, day, limit NewOrder is a filled ExecutionReport. [1] "BATSBOE203 - MILLENNIUM EXCHANGE Native Trading Gateway"
Member BOOST_AUTO_TEST_CASE_TEMPLATE (re_connect_client_with_logon, exchg_t, exchg_t_types)
Verify that clients can re-connect to logged-on gateway. Verify that the gateway can re-log on to the exchange, with a connected client.
Member BOOST_AUTO_TEST_CASE_TEMPLATE (logon_with_a_client, exchg_t, exchg_t_types)
Verify Logon - with a client. Verify that the link can log on to the exchange and remains logged on, with a client connected.
Member BOOST_AUTO_TEST_CASE_TEMPLATE (re_logon_no_clients, exchg_t, exchg_t_types)
Verify that gateway can re-Logon. Verify that the gateway can re-log on to the exchange, without any clients.
Member BOOST_AUTO_TEST_CASE_TEMPLATE (logon_no_clients, exchg_t, exchg_t_types)
Verify Logon - no clients. Verify that the link can log on to the exchange, with no clients.
Member BOOST_AUTO_TEST_CASE_TEMPLATE (process_market_data_example, ob_t, ob_t_types)
Place some orders, then cancel some of them then check the executions.
Member BOOST_AUTO_TEST_CASE_TEMPLATE (cancel_read_symbol, ob_t, ob_t_types)
Place more orders, then cancel one of them then readd it.
Member BOOST_AUTO_TEST_CASE_TEMPLATE (cancel_unknown_symbol, ob_t, ob_t_types)
Place more orders, then cancel an unknown symbol then place an aggressive buy and match.
Member BOOST_AUTO_TEST_CASE_TEMPLATE (reject, exchg_t, exchg_t_types)
Graph of performance results for the MIT-based simulator- Results for 5000 repetitions. The timings include the full-round-trip: including time to create the MIT order, send it, time in the simulator, time to receive, all of which includes the "wire-time".
Member BOOST_AUTO_TEST_CASE_TEMPLATE (logout, exchg_t, exchg_t_types)
"Terminating a connection" Test: LogoutRequest. Verify that the response to a LogoutRequest is a Logout. [1] "BATS Chi-X Europe Binary Order Entry Specification", Version 1.44, 27 November, 2014
Member BOOST_AUTO_TEST_CASE_TEMPLATE (server_heartbeat, exchg_t, exchg_t_types)
"Heartbeats" Test: Server Heartbeat. ====================================. [1] "BATS Chi-X Europe Binary Order Entry Specification", Version 1.44, 27 November, 2014
Member BOOST_AUTO_TEST_CASE_TEMPLATE (client_heartbeat, exchg_t, exchg_t_types)
"Heartbeats" Test: Client Heartbeat. Verify that the response to a Heartbeat is nothing. [1] "BATS Chi-X Europe Binary Order Entry Specification", Version 1.44, 27 November, 2014
Member BOOST_AUTO_TEST_CASE_TEMPLATE (logon, exchg_t, exchg_t_types)
"Establishing a connection" Test: LogonRequest response. Verify that the response to a LogonRequest is a LogonReply. [1] "BATS Chi-X Europe Binary Order Entry Specification", Version 1.44, 27 November, 2014
Member BOOST_AUTO_TEST_CASE_TEMPLATE (re_connnect, exchg_t, exchg_t_types)
Re-connect to the available primary gateway. Verify that less than 5 seconds passes if just the primary gateway is available for the re-connections. [1] "BATS Chi-X Europe Binary Order Entry Specification", Version 1.44, 27 November, 2014
Member BOOST_AUTO_TEST_CASE_TEMPLATE (primary_gateway_available, exchg_t, exchg_t_types)
Section 4.4: "Connectivity Policy" of [1] Test: primary gateway available. Verify that less than 5 seconds passes if just the primary gateway is available. [1] "BATS Chi-X Europe Binary Order Entry Specification", Version 1.44, 27 November, 2014
Member BOOST_AUTO_TEST_CASE_TEMPLATE (order_rejects_parallel, exchg_t, exchg_t_types)
Graph of performance results for the MIT-based exchange-links, sending the orders and receiving the rejects in parallel. The histograms generated by using GNU or Clang to compile & link the code of the latest performance results, pinned and with numactl. Results for 20000 orders sent & rejects received, repeated up to 500 times. The timings include the full-round-trip: including time to create the FIX order, convert it, send it, time in the simulator, time to receive, time to convert back to FIX, all of which includes the "wire-time". If numactl is to be used, the command "numactl --cpunodebind=NODE_INDEX --membind=NODE_INDEX ../../build/release/isimud/tests/test_mit_exchanges_performance" should be executed, Where NODE_INDEX should be the same value as that in thread_traits::numa_index.
Member BOOST_AUTO_TEST_CASE_TEMPLATE (order_rejected_at_a_time, exchg_t, exchg_t_types)
Graph of performance results for the MIT-based exchange-links, sending an order and receiving the reject one-at-a-time. The histograms generated by using GNU or Clang to compile & link the code of the latest performance results, pinned and with numactl. Results for 20000 repetitions, repeated up to 500 times. The timings include the full-round-trip: including time to create the FIX order, convert it, send it, time in the simulator, time to receive, time to convert back to FIX, all of which includes the "wire-time". If numactl is to be used, the command "numactl --cpunodebind=NODE_INDEX --membind=NODE_INDEX ../../build/release/isimud/tests/test_mit_exchanges_performance" should be executed, Where NODE_INDEX should be the same value as that in thread_traits::numa_index.
Member BOOST_AUTO_TEST_CASE_TEMPLATE (logon_logout, exchg_t, exchg_t_types)
"Establishing a connection" Test: LogonRequest & LogoutRequest response. Verify the behaviour of a LogonRequest followed by a and LogoutRequest. [1] "BATS Chi-X Europe Binary Order Entry Specification", Version 1.44, 27 November, 2014
Member BOOST_AUTO_TEST_CASE_TEMPLATE (open_replace, exchg_t, exchg_t_types)
Section 9.1 "Order handling" of [1] Test: Response to a suitable BUY, DAY, LIBATSBOE NewOrder followed by an OrderCancelReplaceRequest is a cancelled ExecutionReport. Verify that the response to a buy, day, limit NewOrder that is open on the exchange then modified is a cancelled ExecutionReport. [1] "BATSBOE203 - MILLENNIUM EXCHANGE Native Trading Gateway"
Member BOOST_AUTO_TEST_CASE_TEMPLATE (open_cancelled, exchg_t, exchg_t_types)
Section 9.1 "Order handling" of [1] Test: Response to a suitable BUY, DAY, LIBATSBOE NewOrder followed by an OrderCancelRequest is a cancelled ExecutionReport. Verify that the response to a buy, day, limit NewOrder that is open on the exchange then cancelled is a cancelled ExecutionReport. [1] "BATSBOE203 - MILLENNIUM EXCHANGE Native Trading Gateway"
Member BOOST_AUTO_TEST_CASE_TEMPLATE (new_order, exchg_t, exchg_t_types)
Section 9.1 "Order handling" of [1] Test: Response to a BUY, DAY, LIBATSBOE NewOrder is a filled ExecutionReport. Verify that the response to a buy, day, limit NewOrder is a filled ExecutionReport. [1] "BATSBOE203 - MILLENNIUM EXCHANGE Native Trading Gateway"
Member BOOST_AUTO_TEST_CASE_TEMPLATE (partial_fill_replace, exchg_t, exchg_t_types)
"Order handling" of [1] Test: Response to a OrderCancelReplaceRequest is a replaced ExecutionReport. Verify that the response to a OrderCancelReplaceRequest of the remaining quantity of a suitably large, buy, day, market NewOrder is a replaced ExecutionReport. [1] "BATS Chi-X Europe Binary Order Entry Specification", Version 1.44, 27 November, 2014
Member BOOST_AUTO_TEST_CASE_TEMPLATE (partial_fill_cancel, exchg_t, exchg_t_types)
"Order handling" of [1] Test: Response to a OrderCancelRequest is a cancelled ExecutionReport. Verify that the response to a OrderCancelRequest of the remaining quantity of a suitably large, buy, day, market NewOrder is a cancelled ExecutionReport. [1] "BATS Chi-X Europe Binary Order Entry Specification", Version 1.44, 27 November, 2014
Member BOOST_AUTO_TEST_CASE_TEMPLATE (partial_fill, exchg_t, exchg_t_types)
"Order handling" of [1] Test: Response to a BUY, DAY, MARKET NewOrder is a partially-filled ExecutionReport. Verify that the response to a suitably large, buy, day, market NewOrder is a partially-filled ExecutionReport. [1] "BATS Chi-X Europe Binary Order Entry Specification", Version 1.44, 27 November, 2014
Member BOOST_AUTO_TEST_CASE_TEMPLATE (new_order, exchg_t, exchg_t_types)
"Order handling" of [1] Test: Response to a BUY, DAY, MARKET NewOrder is a filled ExecutionReport. Verify that the response to a buy, day, market NewOrder is a filled ExecutionReport. [1] "BATS Chi-X Europe Binary Order Entry Specification", Version 1.44, 27 November, 2014
Member BOOST_AUTO_TEST_CASE_TEMPLATE (partial_fill, exchg_t, exchg_t_types)
"Order handling" of [1] Test: Response to a BUY, DAY, MARKET NewOrder is a partially-filled ExecutionReport. Verify that the response to a suitably large, buy, day, market NewOrder is a partially-filled ExecutionReport. [1] "BATS Chi-X Europe Binary Order Entry Specification", Version 1.44, 27 November, 2014
Member BOOST_AUTO_TEST_CASE_TEMPLATE (stream_out_default_ctor, ob_t, ob_t_types)
Can print default ctor'd order_book.
Member BOOST_AUTO_TEST_CASE_TEMPLATE (initially_no_orders, ob_t, ob_t_types)
Initially it has no orders.
Member BOOST_AUTO_TEST_CASE_TEMPLATE (ctor, ob_t, ob_t_types)
Ctor Verify it can be simply created.
Member BOOST_AUTO_TEST_CASE_TEMPLATE (open_replace, exchg_t, exchg_t_types)
Section 9.1 "Order handling" of [1] Test: Response to a suitable BUY, DAY, LIBATSBOE NewOrder followed by an OrderCancelReplaceRequest is a cancelled ExecutionReport. Verify that the response to a buy, day, limit NewOrder that is open on the exchange then modified is a cancelled ExecutionReport. [1] "BATSBOE203 - MILLENNIUM EXCHANGE Native Trading Gateway"
Member BOOST_AUTO_TEST_CASE_TEMPLATE (open_cancelled, exchg_t, exchg_t_types)
Section 9.1 "Order handling" of [1] Test: Response to a suitable BUY, DAY, LIBATSBOE NewOrder followed by an OrderCancelRequest is a cancelled ExecutionReport. Verify that the response to a buy, day, limit NewOrder that is open on the exchange then cancelled is a cancelled ExecutionReport. [1] "BATSBOE203 - MILLENNIUM EXCHANGE Native Trading Gateway"
Member BOOST_AUTO_TEST_CASE_TEMPLATE (new_order, exchg_t, exchg_t_types)
Section 9.1 "Order handling" of [1] Test: Response to a BUY, DAY, LIBATSBOE NewOrder is a filled ExecutionReport. Verify that the response to a buy, day, limit NewOrder is a filled ExecutionReport. [1] "BATSBOE203 - MILLENNIUM EXCHANGE Native Trading Gateway"
Member BOOST_AUTO_TEST_CASE_TEMPLATE (partial_fill_replace, exchg_t, exchg_t_types)
"Order handling" of [1] Test: Response to a OrderCancelReplaceRequest is a replaced ExecutionReport. Verify that the response to a OrderCancelReplaceRequest of the remaining quantity of a suitably large, buy, day, market NewOrder is a replaced ExecutionReport. [1] "BATS Chi-X Europe Binary Order Entry Specification", Version 1.44, 27 November, 2014
Member BOOST_AUTO_TEST_CASE_TEMPLATE (partial_fill_cancel, exchg_t, exchg_t_types)
"Order handling" of [1] Test: Response to a OrderCancelRequest is a cancelled ExecutionReport. Verify that the response to a OrderCancelRequest of the remaining quantity of a suitably large, buy, day, market NewOrder is a cancelled ExecutionReport. [1] "BATS Chi-X Europe Binary Order Entry Specification", Version 1.44, 27 November, 2014
Member BOOST_AUTO_TEST_CASE_TEMPLATE (modify_accept, exchg_t, exchg_t_types)
"Order handling" of [1] Test: Response to a valid OrderCancelReplaceRequest. Verify that the response to a valid OrderCancelReplaceRequest is a cancelled order ExecutionReport. [1] "BATS Chi-X Europe Binary Order Entry Specification", Version 1.44, 27 November, 2014
Member BOOST_AUTO_TEST_CASE_TEMPLATE (new_order, exchg_t, exchg_t_types)
"Order handling" of [1] Test: Response to a BUY, DAY, MARKET NewOrder is a filled ExecutionReport. Verify that the response to a buy, day, market NewOrder is a filled ExecutionReport. [1] "BATS Chi-X Europe Binary Order Entry Specification", Version 1.44, 27 November, 2014
Member BOOST_AUTO_TEST_CASE_TEMPLATE (modify_accept, exchg_t, exchg_t_types)
"Order handling" of [1] Test: Response to a valid OrderCancelReplaceRequest. Verify that the response to a valid OrderCancelReplaceRequest is a cancelled order ExecutionReport. [1] "BATS Chi-X Europe Binary Order Entry Specification", Version 1.44, 27 November, 2014
Member BOOST_AUTO_TEST_CASE_TEMPLATE (modify_reject, exchg_t, exchg_t_types)
"Order handling" of [1] Test: Response to an invalid OrderCancelReplaceRequest. Verify that the response to an invalid OrderCancelReplaceRequest is a cancelled order OrderCancelReject. [1] "BATS Chi-X Europe Binary Order Entry Specification", Version 1.44, 27 November, 2014
Member BOOST_AUTO_TEST_CASE_TEMPLATE (cancel_accept, exchg_t, exchg_t_types)
"Order handling" of [1] Test: Response to a valid OrderCancelRequest. Verify that the response to a valid OrderCancelRequest is a cancelled order ExecutionReport. [1] "BATS Chi-X Europe Binary Order Entry Specification", Version 1.44, 27 November, 2014
Member BOOST_AUTO_TEST_CASE_TEMPLATE (cancel_reject, exchg_t, exchg_t_types)
"Order handling" of [1] Test: Response to an invalid OrderCancelRequest. Verify that the response to an invalid OrderCancelRequest is a OrderCancelReject. [1] "BATS Chi-X Europe Binary Order Entry Specification", Version 1.44, 27 November, 2014
Member BOOST_AUTO_TEST_CASE_TEMPLATE (reject, exchg_t, exchg_t_types)

"Order handling" of [1] Test: Response to an invalid NewOrder. Verify that the response to an invalid NewOrder is a Reject. [1] "BATS Chi-X Europe Binary Order Entry Specification", Version 1.44, 27 November, 2014

"Establishing a connection" of [1] Test: Re-LogonRequest & LogoutRequest response. Verify the behaviour of a LogonRequest followed by a and LogoutRequest, repeated. [1] "BATS Chi-X Europe Binary Order Entry Specification", Version 1.44, 27 November, 2014

Member BOOST_AUTO_TEST_CASE_TEMPLATE (sort_unsorted, T, finite_lifo_test_types)
Graph of scalability of parallel sort. For 2<<25 items.
  1. Results:
    1. Build 1655:
      • Pool=0, items=1024, time taken=
      • Pool=1, items=1024, time taken=
      • Pool=2, items=1024, time taken=
      • Pool=4, items=1024, time taken=
      • Pool=8, items=1024, time taken=
      • Pool=12, items=1024, time taken=
Member BOOST_AUTO_TEST_CASE_TEMPLATE (vertical_dataflow_operations_rate, T, dataflow_ps12_test_types)
Graph of vertical dataflow-transfers, avoiding a context switch, (pool_size()=1) operations rate. This tests how long it takes to:
  1. Create an execution_context on the stack.
  2. Add the work to the queue, and wait for it to complete.
  3. The work task is to transfer a trivial work-item to the queue and wait for it to complete. This is performed repeatedly.
  4. The concept is that the transferred work should be run by the same thread that transferred it, potentially avoiding any context switch.
  5. Results:
    1. Build 1671:
      • Pool=1, vertical dataflow transfers per second: TODO i.e. @2.6GHz, [71microsec, 28microsec, 3.5microsec] per data transfer.
Member BOOST_AUTO_TEST_CASE_TEMPLATE (single_vertical_dataflow_operations_rate, T, dataflow_ps1_test_types)
Graphs of vertical & horizontal and vertical with different pool_types dataflow (pool_size()=1) operations rate. This tests how long it takes to:
  1. Create an execution_context on the stack.
  2. Add the work to the queue.
  3. Increment and decrement the number of active work items in the queue.
  4. Have one vertical thread wake up and remove the work, i.e. the thread pool does not saturate as only the main thread produces work, and one thread in the pool consumes that work and a context-switch is involved.
  5. Signal that the work has been completed.
  6. It does not test the scalability of multiple threads contending to add work to, or remove work from, the queue.
  7. Results:
    1. Build 1405:
      • Pool=1, vertical dataflow transfers per second: [14063, 36066 ~(+/-9%), 287956], samples=1001, total=36102451 i.e. @2.6GHz, [71microsec, 28microsec, 3.5microsec] per data transfer.
    2. Build 1447:
      • Pool=1, vertical dataflow transfers per second: [8438, 53961 ~(+/-29%), 260460], samples=1001, total=54015303 i.e. @2.6GHz, [119microsec, 19microsec, 3.8microsec] per data transfer.
    3. Build 1561:
      • Pool=1, time taken: [3023, 23473 ~(+/-174%), 130458], samples=2001, total=46971159 usec. i.e. @2.6GHz, [130microsec, 23microsec, 3.0microsec] per data transfer.
Member BOOST_AUTO_TEST_CASE_TEMPLATE (time, test, timer_types)
Graph of performance results for the various timer functions. Results for 500000 repetitions. Note that accurate timings should follow the recommendations in How to Benchmark Code Execution Times on Intel (c) IA-32 and IA-64 Instruction Set Architectures and note that RDTSC is stable across processors, see section 17.14.1 of the Intel (c) 64 and IA-32 Architectures Software Developer's Manual Volume 3B: System Programming Guide, Part 2, as long as "tsc" is listed in "/sys/devices/system/clocksource/clocksource0/available_clocksource".
Member BOOST_AUTO_TEST_CASE_TEMPLATE (state_changes, state_machine_t, state_machines_t)
Graph of the performance comparison of various implementations of an msm. Performance of randomly-called state-changes per second.
Member BOOST_AUTO_TEST_CASE_TEMPLATE (multithreaded_scoped_lock, details_t, lock_types)
Graph of performance results for a spin-lock based mutex versus other common mutexes. Results for 100*10000 repetitions.
Member BOOST_AUTO_TEST_CASE_TEMPLATE (to_string, algorithm, to_conversion_algorithms)
Graph of performance results for long-to-string conversion algorithms. Test the performance of various long-to-string conversion algorithms.
Member BOOST_AUTO_TEST_CASE_TEMPLATE (from_string, algorithm, from_conversion_algorithms)
Graph of performance results for string-to-long conversion algorithms. Test the performance of various string-to-long conversion algorithms.
Member BOOST_AUTO_TEST_CASE_TEMPLATE (rate, setbits_t, check_dyn_setbits_tests)
Graph of performance results for the various count-setbits functions. Computing the number of bits set in 2<<21 randomly-generated numbers:
  1. Build 1240: g++v4.5.2:
    • dyn::basic::count_setbits = 1.41313e+07 bit counts/sec
    • dyn::lookup::count_setbits, 8-bit cache = 6.68295e+07 bit counts/sec
    • dyn::unroll::count_setbits = 8.12703e+06 bit counts/sec
  2. Build 1241: g++v4.7.3:
    • dyn::basic::count_setbits = 3.66071e+07 bit counts/sec
    • dyn::lookup::count_setbits, 8-bit cache = 8.60793e+07 bit counts/sec.
    • dyn::lookup::count_setbits, 16-bit cache = 1.09846e+08 bit counts/sec
    • dyn::lookup::count_setbits, 32-bit cache = 1.09919e+08 bit counts/sec
    • dyn::lookup::count_setbits, 64-bit cache = 1.49271e+08 bit counts/sec
    • dyn::unroll::count_setbits = 2.59625e+07 bit counts/sec
  3. Build 1627: g++v4.8.4:
    • dyn::basic::count_setbits bit counts/sec = [16572381, 16907215 ~(+/-4%), 16969377], samples=21, total=355051515
    • dyn::builtin::count_setbits bit counts/sec = [287045168, 291680516 ~(+/-4%), 296752794], samples=22, total=6416971371
    • dyn::lookup::count_setbits, 8-bit cache bit counts/sec = [25221159, 25260814 ~(+/-4%), 25286541], samples=21, total=530477098
    • dyn::lookup::count_setbits, 16-bit cache bit counts/sec = [40636574, 40737874 ~(+/-4%), 40812929], samples=21, total=855495365
    • dyn::lookup::count_setbits, 32-bit cache bit counts/sec = [58788215, 58955639 ~(+/-4%), 59040610], samples=21, total=1238068428
    • dyn::lookup::count_setbits, 64-bit cache bit counts/sec = [71190047, 71557163 ~(+/-4%), 71684025], samples=21, total=1502700440
    • dyn::unroll::count_setbits bit counts/sec = [29459347, 29517343 ~(+/-4%), 29552128], samples=21, total=619864204
Member BOOST_AUTO_TEST_CASE_TEMPLATE (vertical_dataflow_operations_rate, T, dataflow_ps12_test_types)
Graphs of vertical & horizontal and vertical with different pool_types dataflow (pool_size()=12) operations rate. This tests how long it takes to:
  1. Creates twelve execution_contexts on the stack, enqueuing the work.
  2. The pool of threads process the work, i.e. a context-switch is involved.
  3. This rapidly creates work, which is processed, usually using only one of the threads in the pool. With twelve threads there is a lot of contention on the queue for the work. The vast majority is executed vertically.
  4. Results:
    1. Build 1405:
      • Pool=12, vertical dataflow transfers per second: [681, 1223 ~(+/-0%), 1811], samples=64, total=78278 i.e. @2.6GHz, [122microsec, 68microsec, 46microsec] per data transfer.
    2. Build 1415:
      • Pool=12, vertical dataflow transfers per second: [3368, 3547 ~(+/-0%), 3855], samples=181, total=642030 i.e. @2.6GHz, [25microsec, 23microsec, 22microsec] per data transfer.
    3. Build 1447:
      • Pool=12, vertical dataflow transfers per second: [4242, 4622 ~(+/-0%), 5879], samples=757, total=3499459 i.e. @2.6GHz, [20microsec, 18microsec, 14microsec] per data transfer.
Member BOOST_AUTO_TEST_CASE_TEMPLATE (merge, T, finite_lifo_test_types)
Graph of scalability of parallel merge. For 2<<25 items.
  1. Results:
    1. Build 1655:
      • Pool=0, items=1024, time taken=
      • Pool=1, items=1024, time taken=
      • Pool=2, items=1024, time taken=
      • Pool=4, items=1024, time taken=
      • Pool=8, items=1024, time taken=
      • Pool=12, items=1024, time taken=
Member BOOST_AUTO_TEST_CASE_TEMPLATE (accumulate, T, finite_lifo_test_types)
Graph of scalability of parallel accumulate. For 2<<10 items. Note that we observe anti-scaling, as there are simply not enough items in the collection to offset the costs of threading.
  1. Results:
    1. Build 1405:
      • Pool=0, items=1024, time taken: [0, 1.35999e-09 ~(+/-2.8e+02%), 3.1e-05], samples=100001, total=0.00014 sec.
      • Pool=1, items=1024, time taken: [1e-06, 1.01439e-06 ~(+/-10%), 2.5e-05], samples=5002, total=0.0051 sec.
      • Pool=2, items=1024, time taken: [2.9e-05, 9.26648e-05 ~(+/-10%), 0.00098], samples=13838, total=1.3 sec.
      • Pool=4, items=1024, time taken: [0.000136, 0.00021595 ~(+/-9.8%), 0.0003], samples=60, total=0.013 sec.
      • Pool=8, items=1024, time taken: [0.000272, 0.000470489 ~(+/-10%), 0.0008], samples=47, total=0.022 sec.
      • Pool=12, items=1024, time taken: [0.000419, 0.000632359 ~(+/-9.8%), 0.0015], samples=64, total=0.04 sec.
    2. Build 1469:
      • Pool=0, items=1024, time taken: [0, 2.851e-10 ~(+/-2.2e+02%), 4e-05], samples=10000001, total=0.0029 sec.
      • Pool=1, items=1024, time taken: [1e-06, 1.00901e-06 ~(+/-10%), 4.6e-05], samples=488923, total=0.49 sec.
      • Pool=2, items=1024, time taken: [8e-06, 0.000108706 ~(+/-12%), 0.0032], samples=10000001, total=1.1e+03 sec.
      • Pool=4, items=1024, time taken: [7.8e-05, 0.000269517 ~(+/-10%), 0.00054], samples=675, total=0.18 sec.
      • Pool=8, items=1024, time taken: [0.000282, 0.000469618 ~(+/-10%), 0.0017], samples=304, total=0.14 sec.
      • Pool=12, items=1024, time taken: [0.000321, 0.000540948 ~(+/-10%), 0.00077], samples=192, total=0.1 sec.
Member BOOST_AUTO_TEST_CASE_TEMPLATE (default_ctor, Mdl, thread_types)
Tests for the thread-as-a-class model.
Member BOOST_AUTO_TEST_CASE_TEMPLATE (parallel_deletes, ctr_t, ctr_types)
Graph of performance results for parallel shared_ptr dtors. Results for 100000000 items:
  1. Build 1654: g++v4.8.4, boost v1.56:
    • boost::shared_ptr (sequential?) rate dtors/sec=[7400343, 8216575 ~(+/-4%), 8687559], samples=36, total=295796708 (TODO: Measure these two with parallel implementations.)
    • std::shared_ptr (sequential) rate dtors/sec=[8611878, 8703849 ~(+/-4%), 8841397], samples=24, total=208892398 (TODO: Measure these two with parallel implementations.)
    • shared_ptr<sequential, simple pointer swaps> rate dtors/sec=[16113069, 16621324 ~(+/-4%), 17224698], samples=25, total=415533114
    • shared_ptr<sequential, atomic pointer swaps> rate dtors/sec=[6842758, 7109094 ~(+/-4%), 7291866], samples=21, total=149290992
    • shared_ptr<lock free, simple pointer swaps> rate dtors/sec=[17224692, 17370089 ~(+/-4%), 17527721], samples=25, total=434252234
    • shared_ptr<lock free, atomic pointer swaps> rate dtors/sec=[7136291, 7277720 ~(+/-4%), 7400557], samples=24, total=174665283
Member BOOST_AUTO_TEST_CASE_TEMPLATE (parallel_cctor, ctr_t, ctr_types)
Graph of performance results for parallel shared_ptr cctors. Results for 100000000 repetitions:
  1. Build 1359: g++v4.7.3, boost v1.54:
    • boost::shared_ptr (sequential?) Rate=7.92973e+06 deletions/sec. (TODO: Measure these two with parallel implementations.)
    • std::shared_ptr (sequential) Rate=8.32583e+06 deletions/sec. (TODO: Measure these two with parallel implementations.)
    • shared_ptr<sequential, simple pointer swaps> Rate=1.95911e+07 deletions/sec.
    • shared_ptr<sequential, atomic pointer swaps> Rate=7.56916e+06 deletions/sec.
    • shared_ptr<lock free, simple pointer swaps> Rate=1.25674e+07 deletions/sec.
    • shared_ptr<lock free, atomic pointer swaps> Rate=7.036e+06 deletions/sec.
  2. Build 1627: g++v4.8.4, boost v1.56:
    • boost::shared_ptr (sequential?) Rate=6.36351e+06 deletions/sec. (TODO: Measure these two with parallel implementations.)
    • std::shared_ptr (sequential) Rate=6.6604e+06 deletions/sec. (TODO: Measure these two with parallel implementations.)
    • shared_ptr<sequential, simple pointer swaps> Rate=1.08592e+07 deletions/sec.
    • shared_ptr<sequential, atomic pointer swaps> Rate=6.89014e+06 deletions/sec.
    • shared_ptr<lock free, simple pointer swaps> Rate=1.12256e+07 deletions/sec.
    • shared_ptr<lock free, atomic pointer swaps> Rate=6.52994e+06 deletions/sec.
  3. Build 1643: g++v4.8.4, boost v1.56:
    • boost::shared_ptr (sequential?) rate deletions/sec=[6616365, 6878884 ~(+/-4%), 7035776], samples=28, total=192608756 (TODO: Measure these two with parallel implementations.)
    • std::shared_ptr (sequential) rate deletions/sec=[6796090, 7164560 ~(+/-4%), 7511524], samples=26, total=186278584 (TODO: Measure these two with parallel implementations.)
    • shared_ptr<sequential, simple pointer swaps> rate deletions/sec=[10978380, 11155910 ~(+/-4%), 11483192], samples=23, total=256585947
    • shared_ptr<sequential, atomic pointer swaps> rate deletions/sec=[6660595, 6898122 ~(+/-4%), 7085593], samples=22, total=151758702
    • shared_ptr<lock free, simple pointer swaps> rate deletions/sec=[11225288, 11406743 ~(+/-4%), 11616904], samples=22, total=250948363
    • shared_ptr<lock free, atomic pointer swaps> rate deletions/sec=[6616558, 6947559 ~(+/-4%), 7187529], samples=26, total=180636540
Member BOOST_AUTO_TEST_CASE_TEMPLATE (small_ctor, T, string_types)
Graph of ctor & dtor, Graph of ctor, dtor & assignment and Graph of ctor, dtor & replace performance comparison of stack_string vs std::string and __gnucxx::__vstring' Results for 100000000 repetitions. On my dual, 6-core AMD Opteron 4180s at 2.6GHz box with 16Gb RAM (not quiescent), I measured the following statistics for a release build:
  1. Build 1414:
    • stack_string small string (ctors+dtors)/sec=[135662569, 136631149 ~(+/-4%), 136727642], samples=21, total=2869254133
    • std::string small string (ctors+dtors)/sec=[14223043, 14258612 ~(+/-4%), 14268891], samples=21, total=299430869
    • __gnucxx::__vstring small string (ctors+dtors)/sec=[86412573, 86559127 ~(+/-4%), 86598005], samples=21, total=1817741679
    • stack_string big string (ctors+dtors)/sec=[17663500, 17665794 ~(+/-4%), 17668187], samples=21, total=370981680
    • std::string big string (ctors+dtors)/sec=[13455498, 13810127 ~(+/-4%), 14190757], samples=24, total=331443053
    • __gnucxx::__vstring big string (ctors+dtors)/sec=[17905987, 17909566 ~(+/-4%), 17911321], samples=21, total=376100905
    • stack_string small string (ctors+dtors+assignment)/sec=[55224728, 55254120 ~(+/-4%), 55267397], samples=21, total=1160336527
    • std::string small string (ctors+dtors+assignment)/sec=[10093766, 10138325 ~(+/-4%), 10177015], samples=21, total=212904843
    • __gnucxx::__vstring small string (ctors+dtors+assignment)/sec=[37145984, 39441839 ~(+/-4%), 42999101], samples=41, total=1617115404
    • stack_string big string (ctors+dtors+assignment)/sec=[8446274, 8726725 ~(+/-4%), 8744792], samples=20, total=174534506
    • std::string big string (ctors+dtors+assignment)/sec=[9887807, 10000563 ~(+/-4%), 10065898], samples=21, total=210011827
    • __gnucxx::__vstring big string (ctors+dtors+assignment)/sec=[9993189, 10073089 ~(+/-4%), 10130002], samples=20, total=201461782
    • stack_string small string (ctors+dtors+replace)/sec=[30779326, 31247464 ~(+/-4%), 31286947], samples=21, total=656196758
    • std::string small string (ctors+dtors+replace)/sec=[3554754, 3569919 ~(+/-4%), 3580345], samples=21, total=74968318
    • __gnucxx::__vstring small string (ctors+dtors+replace)/sec=[24622578, 25761126 ~(+/-4%), 25973223], samples=20, total=515222525
    • stack_string big string (ctors+dtors+replace)/sec=[5175213, 5381860 ~(+/-4%), 5412671], samples=20, total=107637218
    • std::string big string (ctors+dtors+replace)/sec=[3548994, 3575052 ~(+/-4%), 3605774], samples=21, total=75076100
    • __gnucxx::__vstring big string (ctors+dtors+replace)/sec=[5421178, 5540581 ~(+/-4%), 5548517], samples=20, total=110811631
  2. Build 1627:
    • stack_string small string (ctors+dtors)/sec=[77688729, 78157207 ~(+/-4%), 78233671], samples=21, total=1641301351
    • std::string small string (ctors+dtors)/sec=[15288084, 15429237 ~(+/-4%), 15484286], samples=20, total=308584744
    • __gnucxx::__vstring small string (ctors+dtors)/sec=[39799648, 41135410 ~(+/-4%), 41391482], samples=20, total=822708201
    • stack_string big string (ctors+dtors)/sec=[14184497, 14435743 ~(+/-4%), 14460011], samples=21, total=303150620
    • std::string big string (ctors+dtors)/sec=[14697476, 14779399 ~(+/-4%), 14815372], samples=21, total=310367382
    • __gnucxx::__vstring big string (ctors+dtors)/sec=[12887788, 13119301 ~(+/-5%), 13231750], samples=21, total=275505323
    • stack_string small string (ctors+dtors+assignment)/sec=[66254782, 67709907 ~(+/-5%), 67908163], samples=21, total=1421908066
    • std::string small string (ctors+dtors+assignment)/sec=[10831330, 10883866 ~(+/-4%), 10897227], samples=21, total=228561205
    • __gnucxx::__vstring small string (ctors+dtors+assignment)/sec=[23789008, 24003363 ~(+/-5%), 24265407], samples=21, total=504070629
    • stack_string big string (ctors+dtors+assignment)/sec=[7340829, 7656490 ~(+/-6%), 7802339], samples=21, total=160786309
    • std::string big string (ctors+dtors+assignment)/sec=[10271093, 10534818 ~(+/-5%), 10578410], samples=21, total=221231184
    • __gnucxx::__vstring big string (ctors+dtors+assignment)/sec=[7732222, 7846254 ~(+/-5%), 7857272], samples=21, total=164771350
    • stack_string small string (ctors+dtors+replace)/sec=[16342456, 16412117 ~(+/-4%), 16427649], samples=21, total=344654458
    • std::string small string (ctors+dtors+replace)/sec=[4232467, 4267956 ~(+/-4%), 4281863], samples=21, total=89627089
    • __gnucxx::__vstring small string (ctors+dtors+replace)/sec=[15143025, 15316453 ~(+/-4%), 15364299], samples=21, total=321645514
    • stack_string big string (ctors+dtors+replace)/sec=[4185507, 4281924 ~(+/-5%), 4298870], samples=21, total=89920404
    • std::string big string (ctors+dtors+replace)/sec=[4425767, 4452773 ~(+/-4%), 4463363], samples=20, total=89055461
    • __gnucxx::__vstring big string (ctors+dtors+replace)/sec=[4680365, 4695952 ~(+/-4%), 4719313], samples=21, total=98615000
  3. Build 1643:
    • stack_string small string (ctors+dtors)/sec=[77731544, 78352331 ~(+/-4%), 78418333], samples=20, total=1567046620
    • std::string small string (ctors+dtors)/sec=[15381950, 15471575 ~(+/-4%), 15510609], samples=21, total=324903095
    • __gnucxx::__vstring small string (ctors+dtors)/sec=[40882288, 42053251 ~(+/-4%), 42234812], samples=20, total=841065030
    • stack_string big string (ctors+dtors)/sec=[14472412, 14509867 ~(+/-4%), 14522212], samples=21, total=304707207
    • std::string big string (ctors+dtors)/sec=[14733592, 14750590 ~(+/-4%), 14759905], samples=21, total=309762398
    • __gnucxx::__vstring big string (ctors+dtors)/sec=[12806720, 13027029 ~(+/-4%), 13219483], samples=35, total=455946018
    • stack_string small string (ctors+dtors+assignment)/sec=[64906657, 64933195 ~(+/-4%), 64948307], samples=21, total=1363597097
    • std::string small string (ctors+dtors+assignment)/sec=[9965722, 10753837 ~(+/-4%), 10893439], samples=25, total=268845934
    • __gnucxx::__vstring small string (ctors+dtors+assignment)/sec=[25880419, 26471226 ~(+/-4%), 26642595], samples=23, total=608838203
    • stack_string big string (ctors+dtors+assignment)/sec=[7380573, 7479894 ~(+/-4%), 7582891], samples=26, total=194477260
    • std::string big string (ctors+dtors+assignment)/sec=[10530196, 10532715 ~(+/-4%), 10535628], samples=21, total=221187030
    • __gnucxx::__vstring big string (ctors+dtors+assignment)/sec=[7574794, 7824633 ~(+/-4%), 7860065], samples=22, total=172141946
    • stack_string small string (ctors+dtors+replace)/sec=[15697091, 15820997 ~(+/-4%), 15966704], samples=22, total=348061936
    • std::string small string (ctors+dtors+replace)/sec=[4502732, 4529391 ~(+/-4%), 4540575], samples=21, total=95117212
    • __gnucxx::__vstring small string (ctors+dtors+replace)/sec=[14205080, 14691759 ~(+/-4%), 15367257], samples=32, total=470136317
    • stack_string big string (ctors+dtors+replace)/sec=[4185298, 4235308 ~(+/-4%), 4247537], samples=20, total=84706170
    • std::string big string (ctors+dtors+replace)/sec=[4468726, 4474550 ~(+/-4%), 4475729], samples=21, total=93965557
    • __gnucxx::__vstring big string (ctors+dtors+replace)/sec=[4673622, 4688568 ~(+/-4%), 4691540], samples=21, total=98459947
Member BOOST_AUTO_TEST_CASE_TEMPLATE (parallel_cctor, ptr_t, ptr_types)
Graph of performance results for parallel unique_ptr cctors. Results for 100000000 items:
Member BOOST_AUTO_TEST_CASE_TEMPLATE (client_heartbeat, exchg_t, exchg_t_types)
"Heartbeats" Test: Client Heartbeat. Verify that the response to a Heartbeat is nothing. [1] "BATS Chi-X Europe Binary Order Entry Specification", Version 1.44, 27 November, 2014
Member BOOST_AUTO_TEST_CASE_TEMPLATE (modify_reject, exchg_t, exchg_t_types)
"Order handling" of [1] Test: Response to an invalid OrderCancelReplaceRequest. Verify that the response to an invalid OrderCancelReplaceRequest is a cancelled order OrderCancelReject. [1] "BATS Chi-X Europe Binary Order Entry Specification", Version 1.44, 27 November, 2014
Member BOOST_AUTO_TEST_CASE_TEMPLATE (cancel_accept, exchg_t, exchg_t_types)
"Order handling" of [1] Test: Response to a valid OrderCancelRequest. Verify that the response to a valid OrderCancelRequest is a cancelled order ExecutionReport. [1] "BATS Chi-X Europe Binary Order Entry Specification", Version 1.44, 27 November, 2014
Member BOOST_AUTO_TEST_CASE_TEMPLATE (cancel_reject, exchg_t, exchg_t_types)
"Order handling" of [1] Test: Response to an invalid OrderCancelRequest. Verify that the response to an invalid OrderCancelRequest is a OrderCancelReject. [1] "BATS Chi-X Europe Binary Order Entry Specification", Version 1.44, 27 November, 2014
Member BOOST_AUTO_TEST_CASE_TEMPLATE (reject, exchg_t, exchg_t_types)

"Order handling" of [1] Test: Response to an invalid NewOrder. Verify that the response to an invalid NewOrder is a Reject. [1] "BATS Chi-X Europe Binary Order Entry Specification", Version 1.44, 27 November, 2014

"Establishing a connection" of [1] Test: Re-LogonRequest & LogoutRequest response. Verify the behaviour of a LogonRequest followed by a and LogoutRequest, repeated. [1] "BATS Chi-X Europe Binary Order Entry Specification", Version 1.44, 27 November, 2014

Member BOOST_AUTO_TEST_CASE_TEMPLATE (logon_logout, exchg_t, exchg_t_types)
"Establishing a connection" Test: LogonRequest & LogoutRequest response. Verify the behaviour of a LogonRequest followed by a and LogoutRequest. [1] "BATS Chi-X Europe Binary Order Entry Specification", Version 1.44, 27 November, 2014
Member BOOST_AUTO_TEST_CASE_TEMPLATE (logout, exchg_t, exchg_t_types)
"Terminating a connection" Test: LogoutRequest. Verify that the response to a LogoutRequest is a Logout. [1] "BATS Chi-X Europe Binary Order Entry Specification", Version 1.44, 27 November, 2014
Member BOOST_AUTO_TEST_CASE_TEMPLATE (server_heartbeat, exchg_t, exchg_t_types)
"Heartbeats" Test: Server Heartbeat. ====================================. [1] "BATS Chi-X Europe Binary Order Entry Specification", Version 1.44, 27 November, 2014
Member BOOST_AUTO_TEST_CASE_TEMPLATE (gateway_unavailable, exchg_t, exchg_t_types)
"Connectivity Policy" Test: gateway unavailable. Verify that more than 1*5 seconds passes if both gateways are unavailable.
Member BOOST_AUTO_TEST_CASE_TEMPLATE (logon, exchg_t, exchg_t_types)
"Establishing a connection" Test: LogonRequest response. Verify that the response to a LogonRequest is a LogonReply. [1] "BATS Chi-X Europe Binary Order Entry Specification", Version 1.44, 27 November, 2014
Member BOOST_AUTO_TEST_CASE_TEMPLATE (re_connnect, exchg_t, exchg_t_types)
Re-connect to the available primary gateway. Verify that less than 5 seconds passes if just the primary gateway is available for the re-connections. [1] "BATS Chi-X Europe Binary Order Entry Specification", Version 1.44, 27 November, 2014
Member BOOST_AUTO_TEST_CASE_TEMPLATE (primary_gateway_available, exchg_t, exchg_t_types)
Section 4.4: "Connectivity Policy" of [1] Test: primary gateway available. Verify that less than 5 seconds passes if just the primary gateway is available. [1] "BATS Chi-X Europe Binary Order Entry Specification", Version 1.44, 27 November, 2014
Member BOOST_AUTO_TEST_CASE_TEMPLATE (order_rejects_parallel, exchg_t, exchg_t_types)
Graph of performance results for the MIT-based exchange-links, sending the orders and receiving the rejects in parallel. The histogram of the results, pinned but no numactl. Results for 20000 orders sent & rejects received. The timings include the full-round-trip: including time to create the FIX order, convert it, send it, time in the simulator, time to receive, time to convert back to FIX, all of which includes the "wire-time". If numactl is to be used, the command "numactl --cpunodebind=NODE_INDEX --membind=NODE_INDEX ../../build/release/isimud/tests/test_batsboe_exchanges_performance" should be executed, Where NODE_INDEX should be the same value as that in thread_traits::numa_index.
Member BOOST_AUTO_TEST_CASE_TEMPLATE (order_rejected_at_a_time, exchg_t, exchg_t_types)
Graph of performance results for the BATSBOE-based exchange-links, sending an order and receiving the reject one-at-a-time. The histogram of the results, pinned but no numactl. Results for 5000 repetitions. The timings include the full-round-trip: including time to create the FIX order, convert it, send it, time in the simulator, time to receive, time to convert back to FIX, all of which includes the "wire-time". If numactl is to be used, the command "numactl --cpunodebind=1 --membind=1 ../../build/release/isimud/tests/test_batsboe_exchanges_performance" should be executed, Where NODE_INDEX should be the same value as that in thread_traits::numa_index.
Member BOOST_AUTO_TEST_CASE_TEMPLATE (reject, exchg_t, exchg_t_types)
Graph of performance results for the BATSBOE-based simulator- Results for 5000 repetitions. The timings include the full-round-trip: including time to create the BATSBOE order, send it, time in the simulator, time to receive, all of which includes the "wire-time".
Member BOOST_AUTO_TEST_CASE_TEMPLATE (horizontal_dataflow_transfers_rate, T, dataflow_ps12_test_types)
Graph of tree-creation dataflow (pool_size()=12) transfers rate. This tests how long it takes to:
  1. Recursively creates two execution_contexts on the stack, waiting for the tree to be created.
  2. The leaf-nodes are processed & return, the tree reduces. Related sibling-nodes are executed by the same thread, others may involve a context-switch.
  3. If the test_depth is small, e.g. 3, then eight leaf-nodes are created, for a total of 14 nodes . With a pool_size of 12, the work will be mutated vertically. A test-depth of 4 would produce 16 leaf-nodes, and a total of 30 nodes.
  4. This can rapidly flood the pool full of work, if the depth generates many more leaf-nodes than pool_threads, in which case the vast majority would be executed horizontally.
  5. The contention on the queue is extremely high from all of the spawned horizontal threads.
  6. Results:
    1. Build 1447:
      • Pool=12, vertical dataflow transfers per second: [8438, 53961 ~(+/-29%), 260460], samples=1001, total=54015303 i.e. @2.6GHz, [119microsec, 19microsec, 3.8microsec] per data transfer.
    2. Build 1561:
      • Pool=12, time taken: [54029, 103259 ~(+/-19%), 478100], samples=2001, total=206621313 usec. i.e. @2.6GHz, 0.53microsec per data transfer.
Member BOOST_AUTO_TEST_CASE_TEMPLATE (logout, exchg_t, exchg_t_types)
Section 5.3: "Terminating a connection" of [1] Test: LogoutRequest. Verify that the response to a LogoutRequest is a Logout. [1] "MIT203 - MILLENNIUM EXCHANGE Native Trading Gateway"
Member BOOST_AUTO_TEST_CASE_TEMPLATE (partial_fill, exchg_t, exchg_t_types)
Section 9.1 "Order handling" of [1] Test: Response to a BUY, DAY, MARKET NewOrder is a partially-filled ExecutionReport. Verify that the response to a suitably large, buy, day, market NewOrder is a partially-filled ExecutionReport. [1] "MIT203 - MILLENNIUM EXCHANGE Native Trading Gateway"
Member BOOST_AUTO_TEST_CASE_TEMPLATE (new_order, exchg_t, exchg_t_types)
Section 9.1 "Order handling" of [1] Test: Response to a BUY, DAY, MARKET NewOrder is a filled ExecutionReport. Verify that the response to a buy, day, market NewOrder is a filled ExecutionReport. [1] "MIT203 - MILLENNIUM EXCHANGE Native Trading Gateway"
Member BOOST_AUTO_TEST_CASE_TEMPLATE (modify_accept, exchg_t, exchg_t_types)
Section 9.1 "Order handling" of [1] Test: Response to a valid OrderCancelReplaceRequest. Verify that the response to a valid OrderCancelReplaceRequest is a cancelled order ExecutionReport. [1] "MIT203 - MILLENNIUM EXCHANGE Native Trading Gateway"
Member BOOST_AUTO_TEST_CASE_TEMPLATE (modify_reject, exchg_t, exchg_t_types)
Section 9.1 "Order handling" of [1] Test: Response to an invalid OrderCancelReplaceRequest. Verify that the response to an invalid OrderCancelReplaceRequest is a cancelled order OrderCancelReject. [1] "MIT203 - MILLENNIUM EXCHANGE Native Trading Gateway"
Member BOOST_AUTO_TEST_CASE_TEMPLATE (cancel_accept, exchg_t, exchg_t_types)
Section 9.1 "Order handling" of [1] Test: Response to a valid OrderCancelRequest. Verify that the response to a valid OrderCancelRequest is a cancelled order ExecutionReport. [1] "MIT203 - MILLENNIUM EXCHANGE Native Trading Gateway"
Member BOOST_AUTO_TEST_CASE_TEMPLATE (cancel_reject, exchg_t, exchg_t_types)
Section 9.1 "Order handling" of [1] Test: Response to an invalid OrderCancelRequest. Verify that the response to an invalid OrderCancelRequest is a OrderCancelReject. [1] "MIT203 - MILLENNIUM EXCHANGE Native Trading Gateway"
Member BOOST_AUTO_TEST_CASE_TEMPLATE (reject, exchg_t, exchg_t_types)

Section 9.1 "Order handling" of [1] Test: Response to an invalid NewOrder. Verify that the response to an invalid NewOrder is a Reject. [1] "MIT203 - MILLENNIUM EXCHANGE Native Trading Gateway"

Section 5.1: "Establishing a connection" of [1] Test: Re-LogonRequest & LogoutRequest response. Verify the behaviour of a LogonRequest followed by a and LogoutRequest, repeated. [1] "MIT203 - MILLENNIUM EXCHANGE Native Trading Gateway"

Member BOOST_AUTO_TEST_CASE_TEMPLATE (logon_logout, exchg_t, exchg_t_types)
Section 5.1: "Establishing a connection" of [1] Test: LogonRequest & LogoutRequest response. Verify the behaviour of a LogonRequest followed by a and LogoutRequest. [1] "MIT203 - MILLENNIUM EXCHANGE Native Trading Gateway"
Member BOOST_AUTO_TEST_CASE_TEMPLATE (partial_fill_cancel, exchg_t, exchg_t_types)
Section 9.1 "Order handling" of [1] Test: Response to a OrderCancelRequest is a cancelled ExecutionReport. Verify that the response to a OrderCancelRequest of the remaining quantity of a suitably large, buy, day, market NewOrder is a cancelled ExecutionReport. [1] "MIT203 - MILLENNIUM EXCHANGE Native Trading Gateway"
Member BOOST_AUTO_TEST_CASE_TEMPLATE (server_heartbeat, exchg_t, exchg_t_types)
Section 5.2.2: "Heartbeats" of [1] Test: Server Heartbeat. Verify that the simulator sends a heartbeat after the appropriate interval. [1] "MIT203 - MILLENNIUM EXCHANGE Native Trading Gateway"
Member BOOST_AUTO_TEST_CASE_TEMPLATE (client_heartbeat, exchg_t, exchg_t_types)
Section 5.2.2: "Heartbeats" of [1] Test: Client Heartbeat. Verify that the response to a Heartbeat is nothing. [1] "MIT203 - MILLENNIUM EXCHANGE Native Trading Gateway"
Member BOOST_AUTO_TEST_CASE_TEMPLATE (logon, exchg_t, exchg_t_types)
Section 5.1: "Establishing a connection" of [1] Test: LogonRequest response. Verify that the response to a LogonRequest is a LogonReply. [1] "MIT203 - MILLENNIUM EXCHANGE Native Trading Gateway"
Member BOOST_AUTO_TEST_CASE_TEMPLATE (secondary_gateway_available, exchg_t, exchg_t_types)
Section 4.4: "Connectivity Policy" of [1] Test: primary gateway unavailable. Verify that more than 3*5 seconds passes if just the primary gateway is unavailable, and the secondary available. [1] "MIT203 - MILLENNIUM EXCHANGE Native Trading Gateway"
Member BOOST_AUTO_TEST_CASE_TEMPLATE (re_connnect, exchg_t, exchg_t_types)
Re-connect to the available primary gateway. Verify that less than 5 seconds passes if just the primary gateway is available for the re-connections. [1] "MIT203 - MILLENNIUM EXCHANGE Native Trading Gateway"
Member BOOST_AUTO_TEST_CASE_TEMPLATE (primary_gateway_available, exchg_t, exchg_t_types)
Section 4.4: "Connectivity Policy" of [1] Test: primary gateway available. Verify that less than 5 seconds passes if just the primary gateway is available. [1] "MIT203 - MILLENNIUM EXCHANGE Native Trading Gateway"
Member BOOST_AUTO_TEST_CASE_TEMPLATE (both_gateways_unavailable, exchg_t, exchg_t_types)
Section 4.4: "Connectivity Policy" of [1] Test: both gateways unavailable. Verify that more than 2*3*5 seconds passes if both gateways are unavailable. [1] "MIT203 - MILLENNIUM EXCHANGE Native Trading Gateway"
Member BOOST_AUTO_TEST_CASE_TEMPLATE (market_partial_fill, exchg_t, exchg_t_types)
"Order handling" Test: Response to a BUY, DAY, MARKET NewOrder is a filled FIX message. Verify that the response to a buy, day, market NewOrder is a filled FIX message.
Member BOOST_AUTO_TEST_CASE_TEMPLATE (heartbeats_no_clients, exchg_t, exchg_t_types)
Verify Heartbeats - no clients. Verify that Heartbeats occur, without any clients.
Member BOOST_AUTO_TEST_CASE_TEMPLATE (gateway_available, exchg_t, exchg_t_types)
"Connectivity Policy" Test: primary gateway available. Verify that less than 5 seconds passes if just the primary gateway is available.
Member BOOST_AUTO_TEST_CASE_TEMPLATE (market_partial_fill, exchg_t, exchg_t_types)
"Order handling" Test: Response to a BUY, DAY, MARKET NewOrder is a filled FIX message. Verify that the response to a buy, day, market NewOrder is a filled FIX message.
Member BOOST_AUTO_TEST_CASE_TEMPLATE (market_fill, exchg_t, exchg_t_types)
"Order handling" Test: Response to a BUY, DAY, MARKET NewOrder is a filled FIX message. Verify that the response to a buy, day, market NewOrder is a filled FIX message.
Member BOOST_AUTO_TEST_CASE_TEMPLATE (modify_reject, exchg_t, exchg_t_types)
Response to an invalid OrderCancelReplaceRequest. Verify that the response to an invalid OrderCancelReplaceRequest is a cancelled order CancelRejected.
Member BOOST_AUTO_TEST_CASE_TEMPLATE (cancel_accept, exchg_t, exchg_t_types)
Response to a valid OrderCancelRequest. Verify that the response to a valid OrderCancelRequest is a cancelled order ExecutionReport.
Member BOOST_AUTO_TEST_CASE_TEMPLATE (cancel_reject, exchg_t, exchg_t_types)
Response to an invalid OrderCancelRequest. Verify that the response to an invalid OrderCancelRequest is a CancelRejected.
Member BOOST_AUTO_TEST_CASE_TEMPLATE (reject, exchg_t, exchg_t_types)
Response to an invalid NewOrder. Verify that the response to an invalid NewOrder is a BusinessReject.
Member BOOST_AUTO_TEST_CASE_TEMPLATE (heartbeats_with_client, exchg_t, exchg_t_types)
Verify Heartbeats - with client. Verify that Heartbeats occur, with a connected client.
Member BOOST_AUTO_TEST_CASE_TEMPLATE (place_a_sell_and_a_buy_orders, ob_t, ob_t_types)
Place a sell & a buy order, uncrossed.
Member BOOST_AUTO_TEST_CASE_TEMPLATE (re_connect_client_with_logon, exchg_t, exchg_t_types)
Verify that clients can re-connect to logged-on gateway. Verify that the gateway can re-log on to the exchange, with a connected client.
Member BOOST_AUTO_TEST_CASE_TEMPLATE (logon_with_a_client, exchg_t, exchg_t_types)
Verify Logon - with a client. Verify that the link can log on to the exchange and remains logged on, with a client connected.
Member BOOST_AUTO_TEST_CASE_TEMPLATE (re_logon_no_clients, exchg_t, exchg_t_types)
Verify that gateway can re-Logon. Verify that the gateway can re-log on to the exchange, without any clients.
Member BOOST_AUTO_TEST_CASE_TEMPLATE (logon_no_clients, exchg_t, exchg_t_types)
Verify Logon - no clients. Verify that the link can log on to the exchange, with no clients.
Member BOOST_AUTO_TEST_CASE_TEMPLATE (open_modified, exchg_t, exchg_t_types)
Section 9.1 "Order handling" of [1] Test: Response to a suitable BUY, DAY, LIMIT NewOrder followed by an OrderCancelReplaceRequest is a cancelled ExecutionReport. Verify that the response to a buy, day, limit NewOrder that is open on the exchange then modified is a cancelled ExecutionReport. [1] "MIT203 - MILLENNIUM EXCHANGE Native Trading Gateway"
Member BOOST_AUTO_TEST_CASE_TEMPLATE (open_cancelled, exchg_t, exchg_t_types)
Section 9.1 "Order handling" of [1] Test: Response to a suitable BUY, DAY, LIMIT NewOrder followed by an OrderCancelRequest is a cancelled ExecutionReport. Verify that the response to a buy, day, limit NewOrder that is open on the exchange then cancelled is a cancelled ExecutionReport. [1] "MIT203 - MILLENNIUM EXCHANGE Native Trading Gateway"
Member BOOST_AUTO_TEST_CASE_TEMPLATE (new_order, exchg_t, exchg_t_types)
Section 9.1 "Order handling" of [1] Test: Response to a BUY, DAY, LIMIT NewOrder is a filled ExecutionReport. Verify that the response to a buy, day, limit NewOrder is a filled ExecutionReport. [1] "MIT203 - MILLENNIUM EXCHANGE Native Trading Gateway"
Member BOOST_AUTO_TEST_CASE_TEMPLATE (partial_fill_replace, exchg_t, exchg_t_types)
Section 9.1 "Order handling" of [1] Test: Response to a OrderCancelReplaceRequest is a replaced ExecutionReport. Verify that the response to a OrderCancelReplaceRequest of the remaining quantity of a suitably large, buy, day, market NewOrder is a replaced ExecutionReport. [1] "MIT203 - MILLENNIUM EXCHANGE Native Trading Gateway"
Member BOOST_AUTO_TEST_CASE_TEMPLATE (place_order_not_empty, ob_t, ob_t_types)
Place an order - must not be empty.
Member BOOST_AUTO_TEST_CASE_TEMPLATE (place_more_orders_then_cross, ob_t, ob_t_types)
Place more orders, then an aggressive one to cross the exchange.
Member BOOST_AUTO_TEST_CASE_TEMPLATE (place_more_orders_then_buy_crosses_then_match, ob_t, ob_t_types)
Place more orders, then an aggressive buy one to cross the exchange, then match for any executions.
Member BOOST_AUTO_TEST_CASE_TEMPLATE (place_more_orders_then_sell_crosses_then_match, ob_t, ob_t_types)
Place more orders, then an aggressive sell one to cross the exchange, then match for any executions.
Member BOOST_AUTO_TEST_CASE_TEMPLATE (place_more_orders_then_buy_crosses_then_match_exact, ob_t, ob_t_types)
Place more orders, then an aggressive buy one to cross the exchange, then match for any executions, removing some exactly.
Member BOOST_AUTO_TEST_CASE_TEMPLATE (place_more_orders_then_sell_crosses_then_match_exact, ob_t, ob_t_types)
Place more orders, then an aggressive sell one to cross the exchange, then match for any executions, removing some exactly.
Member BOOST_AUTO_TEST_CASE_TEMPLATE (place_more_orders_then_buy_and_sell_crosses_then_match, ob_t, ob_t_types)
Place more orders, then an aggressive buy then an aggressive sell, both crossing the exchange, then match for any executions.
Member BOOST_AUTO_TEST_CASE_TEMPLATE (place_more_orders_then_buy_sell_and_buy_crosses_then_match, ob_t, ob_t_types)
Place more orders, then an aggressive buy then an aggressive sell then an aggressive buy, all crossing the exchange, then match for any executions.
Member BOOST_AUTO_TEST_CASE_TEMPLATE (place_orders_then_cancel_one, ob_t, ob_t_types)
Place more orders, then cancel one of them.
Member BOOST_AUTO_TEST_CASE_TEMPLATE (place_orders_then_cancel_one_buy_match, ob_t, ob_t_types)
Place more orders, then cancel one of them then place an aggressive buy and match.
Member BOOST_AUTO_TEST_CASE_TEMPLATE (cancel_unknown_symbol, ob_t, ob_t_types)
Place more orders, then cancel an unknown symbol then place an aggressive buy and match.
Member BOOST_AUTO_TEST_CASE_TEMPLATE (cancel_read_symbol, ob_t, ob_t_types)
Place more orders, then cancel one of them then readd it.
Member BOOST_AUTO_TEST_CASE_TEMPLATE (process_market_data_example, ob_t, ob_t_types)
Place some orders, then cancel some of them then check the executions.
Member BOOST_AUTO_TEST_CASE_TEMPLATE (market_fill, exchg_t, exchg_t_types)
"Order handling" Test: Response to a BUY, DAY, MARKET NewOrder is a filled FIX message. Verify that the response to a buy, day, market NewOrder is a filled FIX message.
Member BOOST_AUTO_TEST_CASE_TEMPLATE (place_more_orders, ob_t, ob_t_types)
Place more orders, uncrossed.
Member BOOST_AUTO_TEST_CASE_TEMPLATE (place_two_sells_and_a_buy_orders, ob_t, ob_t_types)
Place a sell then a buy order, then another sell, uncrossed.
Member BOOST_AUTO_TEST_CASE_TEMPLATE (heartbeats_no_clients, exchg_t, exchg_t_types)
Verify Heartbeats - no clients. Verify that Heartbeats occur, without any clients.
Member BOOST_AUTO_TEST_CASE_TEMPLATE (modify_reject, exchg_t, exchg_t_types)
Response to an invalid OrderCancelReplaceRequest. Verify that the response to an invalid OrderCancelReplaceRequest is a cancelled order CancelRejected.
Member BOOST_AUTO_TEST_CASE_TEMPLATE (cancel_accept, exchg_t, exchg_t_types)
Response to a valid OrderCancelRequest. Verify that the response to a valid OrderCancelRequest is a cancelled order ExecutionReport.
Member BOOST_AUTO_TEST_CASE_TEMPLATE (cancel_reject, exchg_t, exchg_t_types)
Response to an invalid OrderCancelRequest. Verify that the response to an invalid OrderCancelRequest is a CancelRejected.
Member BOOST_AUTO_TEST_CASE_TEMPLATE (reject, exchg_t, exchg_t_types)
Response to an invalid NewOrder. Verify that the response to an invalid NewOrder is a BusinessReject.
Member BOOST_AUTO_TEST_CASE_TEMPLATE (heartbeats_with_client, exchg_t, exchg_t_types)
Verify Heartbeats - with client. Verify that Heartbeats occur, with a connected client.
Member BOOST_AUTO_TEST_CASE_TEMPLATE (re_connect_client_with_logon, exchg_t, exchg_t_types)
Verify that clients can re-connect to logged-on gateway. Verify that the gateway can re-log on to the exchange, with a connected client.
Member BOOST_AUTO_TEST_CASE_TEMPLATE (logon_with_a_client, exchg_t, exchg_t_types)
Verify Logon - with a client. Verify that the link can log on to the exchange and remains logged on, with a client connected.
Member BOOST_AUTO_TEST_CASE_TEMPLATE (re_logon_no_clients, exchg_t, exchg_t_types)
Verify that gateway can re-Logon. Verify that the gateway can re-log on to the exchange, without any clients.
Member BOOST_AUTO_TEST_CASE_TEMPLATE (logon_no_clients, exchg_t, exchg_t_types)
Verify Logon - no clients. Verify that the link can log on to the exchange, with no clients.
Namespace isimud::ISIMUD_VER_NAMESPACE::exchanges::BATSBOE::EU::v1::tests
BATSBOE EU v1 size tests.
Namespace isimud::ISIMUD_VER_NAMESPACE::exchanges::BATSBOE::EU::v2::tests
BATSBOE EU v2 size tests.
Namespace isimud::ISIMUD_VER_NAMESPACE::exchanges::BATSBOE::US::v1::tests
BATSBOE US v1 size tests.
Namespace isimud::ISIMUD_VER_NAMESPACE::exchanges::BATSBOE::US::v2::tests
BATSBOE US v2 size tests.
Namespace isimud::ISIMUD_VER_NAMESPACE::exchanges::FIX::v5_0sp2::tests
FIX v5.0sp2 size tests.
Namespace isimud::ISIMUD_VER_NAMESPACE::exchanges::MIT::BIT::tests
MIT BIT size tests.
Namespace isimud::ISIMUD_VER_NAMESPACE::exchanges::MIT::JSE::tests
MIT JSE size tests.
Namespace isimud::ISIMUD_VER_NAMESPACE::exchanges::MIT::LSE::tests
MIT LSE size tests.
Namespace isimud::ISIMUD_VER_NAMESPACE::exchanges::MIT::OSLO::tests
MIT OSLO size tests.
Namespace isimud::ISIMUD_VER_NAMESPACE::exchanges::MIT::TRQ::tests
MIT TRQ size tests.
Namespace isimud::ISIMUD_VER_NAMESPACE::exchanges::OUCH::NYSE::tests
OUCH NYSE size tests.
Namespace isimud::ISIMUD_VER_NAMESPACE::exchanges::OUCH::SWX::tests
OUCH SWX size tests.
Namespace jmmcg::LIBJMMCG_VER_NAMESPACE::enum_tags::mpl::tests
Verify the operation of the enum-as-char-arrays.