def test_match_equal(self): insert_many_orders([create_book_order('bid', 240, 0.0, str(round(time.time(), 2)), 0.1, str(uuid.uuid4())), create_book_order('ask', 240, 0.0, str(round(time.time(), 2)), 0.1, str(uuid.uuid4()))]) trade = match_orders() self.assertIsNotNone(trade) self.assertIsInstance(trade, Trade) bid = get_next_order('bid') self.assertIsNone(bid) ask = get_next_order('ask') self.assertIsNone(ask)
def test_match_different_prices_time(self): t1 = str(round(time.time(), 2)) time.sleep(0.015) t2 = str(round(time.time(), 2)) insert_many_orders([create_book_order('bid', 242, 0.0, t1, 0.1, str(uuid.uuid4())), create_book_order('ask', 240, 0.0, t2, 0.1, str(uuid.uuid4()))]) trade = match_orders() self.assertIsNotNone(trade) self.assertIsInstance(trade, Trade) self.assertEqual(trade.price, 240) bid = get_next_order('bid') self.assertIsNone(bid) ask = get_next_order('ask') self.assertIsNone(ask)
def test_speed(self): book = [] for i in range(0, 50000): book.append(create_book_order('bid', 250, 0.0, round(time.time(), 2), 0.1, uuid.uuid4())) book.append(create_book_order('ask', 250, 0.0, round(time.time(), 2), 0.1, uuid.uuid4())) t1 = time.time() insert_many_orders(book) t2 = time.time() while match_orders(): pass t3 = time.time() self.assertLessEqual(t2 - t1, 3) # calibrated on Ira's laptop then doubled for margin self.assertLessEqual(t3 - t2, 30) # calibrated on Ira's laptop then doubled for margin print "time to insert 100k orders: %s" % (t2 - t1) print "time to process 100k orders: %s" % (t3 - t2)