コード例 #1
0
ファイル: test_order.py プロジェクト: rahimklaber/anydex-core
    def setUp(self):
        # Object creation
        self.transaction_id = TransactionId(b'a' * 32)
        self.transaction = Transaction(
            self.transaction_id,
            AssetPair(AssetAmount(100, 'BTC'), AssetAmount(30, 'MC')),
            OrderId(TraderId(b'0' * 20), OrderNumber(2)),
            OrderId(TraderId(b'1' * 20), OrderNumber(1)), Timestamp(0))
        self.proposed_trade = Trade.propose(
            TraderId(b'0' * 20), OrderId(TraderId(b'0' * 20), OrderNumber(2)),
            OrderId(TraderId(b'1' * 20), OrderNumber(3)),
            AssetPair(AssetAmount(100, 'BTC'), AssetAmount(30, 'MC')),
            Timestamp(0))

        self.tick = Tick(
            OrderId(TraderId(b'0' * 20), OrderNumber(1)),
            AssetPair(AssetAmount(5, 'BTC'), AssetAmount(5, 'MC')), Timeout(0),
            Timestamp(00), True)
        self.tick2 = Tick(
            OrderId(TraderId(b'0' * 20), OrderNumber(2)),
            AssetPair(AssetAmount(500, 'BTC'), AssetAmount(5, 'MC')),
            Timeout(0), Timestamp(0), True)

        self.order_timestamp = Timestamp.now()
        self.order = Order(
            OrderId(TraderId(b'0' * 20), OrderNumber(3)),
            AssetPair(AssetAmount(50, 'BTC'), AssetAmount(40, 'MC')),
            Timeout(5000), self.order_timestamp, False)
        self.order.set_verified()
        self.order2 = Order(
            OrderId(TraderId(b'0' * 20), OrderNumber(4)),
            AssetPair(AssetAmount(50, 'BTC'), AssetAmount(10, 'MC')),
            Timeout(5), Timestamp(int(time.time() * 1000) - 1000 * 1000), True)
        self.order2.set_verified()
コード例 #2
0
    def setUp(self):
        yield super(MatchingEngineTestSuite, self).setUp()
        # Object creation
        self.ask = Ask(
            OrderId(TraderId(b'2' * 20), OrderNumber(1)),
            AssetPair(AssetAmount(3000, 'BTC'), AssetAmount(30, 'MB')),
            Timeout(30), Timestamp.now())
        self.bid = Bid(
            OrderId(TraderId(b'4' * 20), OrderNumber(2)),
            AssetPair(AssetAmount(3000, 'BTC'), AssetAmount(30, 'MB')),
            Timeout(30), Timestamp.now())
        self.ask_order = Order(
            OrderId(TraderId(b'5' * 20), OrderNumber(3)),
            AssetPair(AssetAmount(3000, 'BTC'), AssetAmount(30, 'MB')),
            Timeout(30), Timestamp.now(), True)
        self.bid_order = Order(
            OrderId(TraderId(b'6' * 20), OrderNumber(4)),
            AssetPair(AssetAmount(3000, 'BTC'), AssetAmount(30, 'MB')),
            Timeout(30), Timestamp.now(), False)
        self.order_book = OrderBook()
        self.matching_engine = MatchingEngine(
            PriceTimeStrategy(self.order_book))

        self.ask_count = 2
        self.bid_count = 2
コード例 #3
0
    async def setUp(self):
        super(TestDatabase, self).setUp()

        path = os.path.join(self.getStateDir(), 'sqlite')
        if not os.path.exists(path):
            os.makedirs(path)

        self.database = MarketDB(self.getStateDir(), 'market')

        self.order_id1 = OrderId(TraderId(b'3' * 20), OrderNumber(4))
        self.order_id2 = OrderId(TraderId(b'4' * 20), OrderNumber(5))
        self.order1 = Order(
            self.order_id1,
            AssetPair(AssetAmount(5, 'BTC'), AssetAmount(6, 'EUR')),
            Timeout(3600), Timestamp.now(), True)
        self.order2 = Order(
            self.order_id2,
            AssetPair(AssetAmount(5, 'BTC'), AssetAmount(6, 'EUR')),
            Timeout(3600), Timestamp.now(), False)
        self.order2.reserve_quantity_for_tick(
            OrderId(TraderId(b'3' * 20), OrderNumber(4)), 3)

        self.transaction_id1 = TransactionId(b'a' * 32)
        self.transaction1 = Transaction(
            self.transaction_id1,
            AssetPair(AssetAmount(100, 'BTC'), AssetAmount(30, 'MB')),
            OrderId(TraderId(b'0' * 20), OrderNumber(1)),
            OrderId(TraderId(b'1' * 20), OrderNumber(2)), Timestamp(20000))

        self.payment1 = Payment(TraderId(b'0' * 20), self.transaction_id1,
                                AssetAmount(5, 'BTC'), WalletAddress('abc'),
                                WalletAddress('def'), PaymentId("abc"),
                                Timestamp(20000))

        self.transaction1.add_payment(self.payment1)
コード例 #4
0
ファイル: test_community.py プロジェクト: devos50/anydex-core
 def get_tx_done_block(ask_amount, bid_amount, traded_amount,
                       ask_total_traded, bid_total_traded):
     ask_pair = AssetPair(AssetAmount(ask_amount, 'BTC'),
                          AssetAmount(ask_amount, 'MB'))
     bid_pair = AssetPair(AssetAmount(bid_amount, 'BTC'),
                          AssetAmount(bid_amount, 'MB'))
     ask = Order(OrderId(TraderId(b'0' * 20), OrderNumber(1)), ask_pair,
                 Timeout(3600), Timestamp.now(), True)
     ask._traded_quantity = ask_total_traded
     bid = Order(OrderId(TraderId(b'1' * 20), OrderNumber(1)), bid_pair,
                 Timeout(3600), Timestamp.now(), False)
     bid._traded_quantity = bid_total_traded
     tx = Transaction(
         TransactionId(TraderId(b'0' * 20), TransactionNumber(1)),
         AssetPair(AssetAmount(traded_amount, 'BTC'),
                   AssetAmount(traded_amount, 'MB')),
         OrderId(TraderId(b'0' * 20), OrderNumber(1)),
         OrderId(TraderId(b'1' * 20), OrderNumber(1)), Timestamp(0))
     tx.transferred_assets.first += AssetAmount(traded_amount, 'BTC')
     tx.transferred_assets.second += AssetAmount(traded_amount, 'MB')
     tx_done_block = MarketBlock()
     tx_done_block.type = b'tx_done'
     tx_done_block.transaction = {
         'ask': ask.to_status_dictionary(),
         'bid': bid.to_status_dictionary(),
         'tx': tx.to_dictionary(),
         'version': MarketCommunity.PROTOCOL_VERSION
     }
     tx_done_block.transaction['ask']['address'], tx_done_block.transaction[
         'ask']['port'] = "1.1.1.1", 1234
     tx_done_block.transaction['bid']['address'], tx_done_block.transaction[
         'bid']['port'] = "1.1.1.1", 1234
     return tx_done_block
コード例 #5
0
 def setUp(self):
     # Object creation
     self.memory_order_repository = MemoryOrderRepository(b'0' * 20)
     self.order_id = OrderId(TraderId(b'0' * 20), OrderNumber(1))
     self.order = Order(self.order_id, AssetPair(AssetAmount(100, 'BTC'), AssetAmount(30, 'MC')),
                        Timeout(0), Timestamp(10), False)
     self.order2 = Order(self.order_id, AssetPair(AssetAmount(1000, 'BTC'), AssetAmount(30, 'MC')),
                         Timeout(0), Timestamp(10), False)
コード例 #6
0
 def setUp(self):
     order_id = OrderId(TraderId(b'3' * 20), OrderNumber(1))
     self.ask_order = Order(
         order_id, AssetPair(AssetAmount(5, 'BTC'), AssetAmount(6, 'EUR')),
         Timeout(3600), Timestamp.now(), True)
     self.bid_order = Order(
         order_id, AssetPair(AssetAmount(5, 'BTC'), AssetAmount(6, 'EUR')),
         Timeout(3600), Timestamp.now(), False)
     self.queue = MatchPriorityQueue(self.ask_order)
コード例 #7
0
    def setUp(self):
        # Object creation

        self.tick = Tick(OrderId(TraderId(b'0' * 20), OrderNumber(1)),
                         AssetPair(AssetAmount(60, 'BTC'), AssetAmount(30, 'MB')),
                         Timeout(100), Timestamp.now(), True)
        self.tick2 = Tick(OrderId(TraderId(b'1' * 20), OrderNumber(2)),
                          AssetPair(AssetAmount(120, 'BTC'), AssetAmount(30, 'MB')),
                          Timeout(100), Timestamp.now(), True)
        self.side = Side()
コード例 #8
0
ファイル: test_block.py プロジェクト: devos50/anydex-core
    def setUp(self):
        BaseTestCase.setUp(self)

        self.ask = Ask(
            OrderId(TraderId(b'0' * 20), OrderNumber(1)),
            AssetPair(AssetAmount(30, 'BTC'), AssetAmount(30, 'MB')),
            Timeout(30), Timestamp(0), True)
        self.bid = Ask(
            OrderId(TraderId(b'1' * 20), OrderNumber(1)),
            AssetPair(AssetAmount(30, 'BTC'), AssetAmount(30, 'MB')),
            Timeout(30), Timestamp(0), False)
        self.transaction = Transaction(
            TransactionId(TraderId(b'0' * 20), TransactionNumber(1)),
            AssetPair(AssetAmount(30, 'BTC'), AssetAmount(30, 'MB')),
            OrderId(TraderId(b'0' * 20), OrderNumber(1)),
            OrderId(TraderId(b'1' * 20), OrderNumber(1)), Timestamp(0))

        ask_tx = self.ask.to_block_dict()
        bid_tx = self.bid.to_block_dict()

        self.tick_block = MarketBlock()
        self.tick_block.type = b'ask'
        self.tick_block.transaction = {'tick': ask_tx}

        self.cancel_block = MarketBlock()
        self.cancel_block.type = b'cancel_order'
        self.cancel_block.transaction = {
            'trader_id': 'a' * 20,
            'order_number': 1
        }

        self.tx_block = MarketBlock()
        self.tx_block.type = b'tx_init'
        self.tx_block.transaction = {
            'ask': ask_tx,
            'bid': bid_tx,
            'tx': self.transaction.to_dictionary()
        }

        payment = {
            'trader_id': 'a' * 40,
            'transaction_number': 3,
            'transferred': {
                'amount': 3,
                'type': 'BTC'
            },
            'payment_id': 'a',
            'address_from': 'a',
            'address_to': 'b',
            'timestamp': 1234,
            'success': True
        }
        self.payment_block = MarketBlock()
        self.payment_block.type = b'tx_payment'
        self.payment_block.transaction = {'payment': payment}
コード例 #9
0
ファイル: test_tickentry.py プロジェクト: devos50/anydex-core
    def setUp(self):
        yield super(TickEntryTestSuite, self).setUp()

        # Object creation
        tick = Tick(OrderId(TraderId(b'0' * 20), OrderNumber(1)), AssetPair(AssetAmount(60, 'BTC'),
                                                                            AssetAmount(30, 'MB')),
                    Timeout(0), Timestamp(0), True)
        tick2 = Tick(OrderId(TraderId(b'0' * 20), OrderNumber(2)),
                     AssetPair(AssetAmount(63400, 'BTC'), AssetAmount(30, 'MB')), Timeout(100), Timestamp.now(), True)

        self.price_level = PriceLevel(Price(100, 1, 'MB', 'BTC'))
        self.tick_entry = TickEntry(tick, self.price_level)
        self.tick_entry2 = TickEntry(tick2, self.price_level)
コード例 #10
0
ファイル: orderbook.py プロジェクト: rahimklaber/anydex-core
    def update_ticks(self, ask_order_dict, bid_order_dict, traded_quantity):
        """
        Update ticks according to a TrustChain block containing the status of the ask/bid orders.

        :type ask_order_dict: dict
        :type bid_order_dict: dict
        :type traded_quantity: int
        """
        ask_order_id = OrderId(TraderId(unhexlify(ask_order_dict["trader_id"])),
                               OrderNumber(ask_order_dict["order_number"]))
        bid_order_id = OrderId(TraderId(unhexlify(bid_order_dict["trader_id"])),
                               OrderNumber(bid_order_dict["order_number"]))

        self._logger.debug("Updating ticks in order book: %s and %s (traded quantity: %s)",
                           str(ask_order_id), str(bid_order_id), str(traded_quantity))

        # Update ask tick
        ask_exists = self.tick_exists(ask_order_id)
        if ask_exists and ask_order_dict["traded"] >= self.get_tick(ask_order_id).traded:
            tick = self.get_tick(ask_order_id)
            tick.traded = ask_order_dict["traded"]
            if tick.traded >= tick.assets.first.amount:
                self.remove_tick(tick.order_id)
                self.completed_orders.add(tick.order_id)
        elif not ask_exists and ask_order_dict["traded"] < ask_order_dict["assets"]["first"]["amount"] and \
                ask_order_id not in self.completed_orders:
            new_pair = AssetPair.from_dictionary(ask_order_dict["assets"])
            ask = Ask(ask_order_id, new_pair, Timeout(ask_order_dict["timeout"]),
                      Timestamp(ask_order_dict["timestamp"]), traded=ask_order_dict["traded"])
            self.insert_ask(ask)
        elif not ask_exists and ask_order_dict["traded"] >= ask_order_dict["assets"]["first"]["amount"]:
            self.completed_orders.add(ask_order_id)

        # Update bid tick
        bid_exists = self.tick_exists(bid_order_id)
        if bid_exists and bid_order_dict["traded"] >= self.get_tick(bid_order_id).traded:
            tick = self.get_tick(bid_order_id)
            tick.traded = bid_order_dict["traded"]
            if tick.traded >= tick.assets.first.amount:
                self.remove_tick(tick.order_id)
                self.completed_orders.add(tick.order_id)
        elif not bid_exists and bid_order_dict["traded"] < bid_order_dict["assets"]["first"]["amount"] and \
                bid_order_id not in self.completed_orders:
            new_pair = AssetPair.from_dictionary(bid_order_dict["assets"])
            bid = Bid(bid_order_id, new_pair, Timeout(bid_order_dict["timeout"]),
                      Timestamp(bid_order_dict["timestamp"]), traded=bid_order_dict["traded"])
            self.insert_bid(bid)
        elif not bid_exists and bid_order_dict["traded"] >= bid_order_dict["assets"]["first"]["amount"]:
            self.completed_orders.add(bid_order_id)
コード例 #11
0
    def setUp(self):
        # Object creation
        tick = Tick(OrderId(TraderId(b'0' * 20), OrderNumber(1)),
                    AssetPair(AssetAmount(60, 'BTC'), AssetAmount(30, 'MC')),
                    Timeout(100), Timestamp.now(), True)
        tick2 = Tick(OrderId(TraderId(b'0' * 20), OrderNumber(2)),
                     AssetPair(AssetAmount(30, 'BTC'), AssetAmount(30, 'MC')),
                     Timeout(100), Timestamp.now(), True)

        self.price_level = PriceLevel(Price(50, 5, 'MC', 'BTC'))
        self.tick_entry1 = TickEntry(tick, self.price_level)
        self.tick_entry2 = TickEntry(tick, self.price_level)
        self.tick_entry3 = TickEntry(tick, self.price_level)
        self.tick_entry4 = TickEntry(tick, self.price_level)
        self.tick_entry5 = TickEntry(tick2, self.price_level)
コード例 #12
0
ファイル: test_tickentry.py プロジェクト: Tribler/anydex-core
async def tick_entry2(price_level):
    tick = Tick(OrderId(TraderId(b'0' * 20), OrderNumber(2)),
                AssetPair(AssetAmount(63400, 'BTC'), AssetAmount(30, 'MB')),
                Timeout(100), Timestamp.now(), True)
    tick_entry = TickEntry(tick, price_level)
    yield tick_entry
    await tick_entry.shutdown_task_manager()
コード例 #13
0
ファイル: test_order.py プロジェクト: rahimklaber/anydex-core
 def test_status(self):
     """
     Test the status of an order
     """
     self.order._verified = False
     self.assertEqual(self.order.status, "unverified")
     self.order.set_verified()
     self.assertEqual(self.order.status, "open")
     self.order._timeout = Timeout(0)
     self.assertEqual(self.order.status, "expired")
     self.order._timeout = Timeout(3600)
     self.order._traded_quantity = self.order.assets.first.amount
     self.order._received_quantity = self.order.assets.second.amount
     self.assertEqual(self.order.status, "completed")
     self.order._cancelled = True
     self.assertEqual(self.order.status, "cancelled")
コード例 #14
0
ファイル: payload.py プロジェクト: devos50/anydex-core
 def from_unpack_list(cls, trader_id, timestamp, order_number, asset1_amount, asset1_type, asset2_amount,
                      asset2_type, timeout, traded, recipient_order_number, match_trader_id, matchmaker_trader_id):
     return MatchPayload(TraderId(trader_id), Timestamp(timestamp), OrderNumber(order_number),
                         AssetPair(AssetAmount(asset1_amount, asset1_type.decode('utf-8')),
                                   AssetAmount(asset2_amount, asset2_type.decode('utf-8'))),
                         Timeout(timeout), traded, OrderNumber(recipient_order_number),
                         TraderId(match_trader_id), TraderId(matchmaker_trader_id))
コード例 #15
0
ファイル: test_order.py プロジェクト: rahimklaber/anydex-core
    def test_has_acceptable_price(self):
        """
        Test the acceptable price method
        """
        order = Order(OrderId(TraderId(b'0' * 20), OrderNumber(3)),
                      AssetPair(AssetAmount(60, 'BTC'), AssetAmount(30, 'MB')),
                      Timeout(5000), self.order_timestamp, True)

        pair = AssetPair(AssetAmount(60, 'BTC'), AssetAmount(30, 'MB'))
        self.assertTrue(order.has_acceptable_price(pair))

        pair = AssetPair(AssetAmount(60, 'BTC'), AssetAmount(15, 'MB'))
        self.assertFalse(order.has_acceptable_price(pair))

        pair = AssetPair(AssetAmount(60, 'BTC'), AssetAmount(60, 'MB'))
        self.assertTrue(order.has_acceptable_price(pair))

        order._is_ask = False

        pair = AssetPair(AssetAmount(60, 'BTC'), AssetAmount(30, 'MB'))
        self.assertTrue(order.has_acceptable_price(pair))

        pair = AssetPair(AssetAmount(60, 'BTC'), AssetAmount(15, 'MB'))
        self.assertTrue(order.has_acceptable_price(pair))

        pair = AssetPair(AssetAmount(60, 'BTC'), AssetAmount(60, 'MB'))
        self.assertFalse(order.has_acceptable_price(pair))
コード例 #16
0
    def from_database(cls, data, reserved_ticks):
        """
        Create an Order object based on information in the database.
        """
        (trader_id, order_number, asset1_amount, asset1_type, asset2_amount,
         asset2_type, traded_quantity, timeout, order_timestamp,
         completed_timestamp, is_ask, cancelled, verified) = data

        order_id = OrderId(TraderId(bytes(trader_id)),
                           OrderNumber(order_number))
        order = cls(
            order_id,
            AssetPair(AssetAmount(asset1_amount, str(asset1_type)),
                      AssetAmount(asset2_amount, str(asset2_type))),
            Timeout(timeout), Timestamp(order_timestamp), bool(is_ask))
        order._traded_quantity = traded_quantity
        order._cancelled = bool(cancelled)
        order._verified = verified
        if completed_timestamp:
            order._completed_timestamp = Timestamp(completed_timestamp)

        for reserved_order_id, quantity in reserved_ticks:
            order.reserved_ticks[reserved_order_id] = quantity
            order._reserved_quantity += quantity

        return order
コード例 #17
0
def order2():
    order_id2 = OrderId(TraderId(b'4' * 20), OrderNumber(5))
    order2 = Order(order_id2,
                   AssetPair(AssetAmount(5, 'BTC'), AssetAmount(6, 'EUR')),
                   Timeout(3600), Timestamp.now(), False)
    order2.reserve_quantity_for_tick(
        OrderId(TraderId(b'3' * 20), OrderNumber(4)), 3)
    return order2
コード例 #18
0
def test_match_order_divided(order_book, strategy, ask):
    """
    Test for match order divided over two ticks
    """
    order_book.insert_ask(ask)

    ask2 = Ask(OrderId(TraderId(b'1' * 20), OrderNumber(2)),
               AssetPair(AssetAmount(3000, 'BTC'), AssetAmount(30, 'MB')),
               Timeout(100), Timestamp.now())
    bid_order2 = Order(
        OrderId(TraderId(b'9' * 20), OrderNumber(14)),
        AssetPair(AssetAmount(6000, 'BTC'), AssetAmount(60, 'MB')),
        Timeout(100), Timestamp.now(), False)
    order_book.insert_ask(ask2)
    matching_ticks = strategy.match(bid_order2.order_id, bid_order2.price,
                                    bid_order2.available_quantity, False)
    assert len(matching_ticks) == 2
コード例 #19
0
 def from_unpack_list(cls, trader_id, timestamp, order_number,
                      asset1_amount, asset1_type, asset2_amount,
                      asset2_type, timeout, traded, identifier):
     return OrderStatusResponsePayload(
         TraderId(trader_id), Timestamp(timestamp),
         OrderNumber(order_number),
         AssetPair(AssetAmount(asset1_amount, asset1_type.decode('utf-8')),
                   AssetAmount(asset2_amount, asset2_type.decode('utf-8'))),
         Timeout(timeout), traded, identifier)
コード例 #20
0
 def get_tick_block(return_ask, pair):
     tick_cls = Ask if return_ask else Bid
     ask = tick_cls(OrderId(TraderId(b'0' * 20), OrderNumber(1)), pair, Timeout(3600), Timestamp.now(), return_ask)
     ask_tx = ask.to_block_dict()
     ask_tx["address"], ask_tx["port"] = "127.0.0.1", 1337
     tick_block = MarketBlock()
     tick_block.type = b'ask' if return_ask else b'bid'
     tick_block.transaction = {'tick': ask_tx, 'version': MarketCommunity.PROTOCOL_VERSION}
     return tick_block
コード例 #21
0
ファイル: test_tick.py プロジェクト: rahimklaber/anydex-core
 def setUp(self):
     # Object creation
     self.timestamp_now = Timestamp.now()
     self.tick = Tick(
         OrderId(TraderId(b'0' * 20), OrderNumber(1)),
         AssetPair(AssetAmount(30, 'BTC'), AssetAmount(30, 'MB')),
         Timeout(30), Timestamp(0), True)
     self.tick2 = Tick(
         OrderId(TraderId(b'0' * 20), OrderNumber(2)),
         AssetPair(AssetAmount(30, 'BTC'), AssetAmount(30, 'MB')),
         Timeout(0), Timestamp(0), False)
     self.order_ask = Order(
         OrderId(TraderId(b'0' * 20), OrderNumber(2)),
         AssetPair(AssetAmount(30, 'BTC'), AssetAmount(30, 'MB')),
         Timeout(0), Timestamp(0), True)
     self.order_bid = Order(
         OrderId(TraderId(b'0' * 20), OrderNumber(2)),
         AssetPair(AssetAmount(30, 'BTC'), AssetAmount(30, 'MB')),
         Timeout(0), Timestamp(0), False)
コード例 #22
0
 def create_ask(self, amount1, amount2):
     """
     Create an ask with a specific price and quantity
     """
     new_ask = Ask(
         OrderId(TraderId(b'2' * 20), OrderNumber(self.ask_count)),
         AssetPair(AssetAmount(amount1, 'BTC'), AssetAmount(amount2, 'MB')),
         Timeout(30), Timestamp.now())
     self.ask_count += 1
     return new_ask
コード例 #23
0
 def create_bid(self, amount1, amount2):
     """
     Create a bid with a specific price and quantity
     """
     new_bid = Bid(
         OrderId(TraderId(b'3' * 20), OrderNumber(self.bid_count)),
         AssetPair(AssetAmount(amount1, 'BTC'), AssetAmount(amount2, 'MB')),
         Timeout(30), Timestamp.now())
     self.bid_count += 1
     return new_bid
コード例 #24
0
def test_match_order_other_price(order_book, strategy, bid_order):
    """
    Test whether two ticks with different price types are not matched
    """
    ask = Ask(OrderId(TraderId(b'1' * 20), OrderNumber(4)),
              AssetPair(AssetAmount(3000, 'A'), AssetAmount(3000, 'MB')),
              Timeout(100), Timestamp.now())
    order_book.insert_ask(ask)
    assert not strategy.match(bid_order.order_id, bid_order.price,
                              bid_order.available_quantity, False)
コード例 #25
0
 async def test_cancel_order_not_found(self):
     """
     Test whether a 404 is returned when we try to cancel an order that does not exist
     """
     self.nodes[0].overlay.order_manager.create_ask_order(
         AssetPair(AssetAmount(3, 'DUM1'), AssetAmount(4, 'DUM2')),
         Timeout(3600))
     self.should_check_equality = False
     await self.do_request('orders/1234/cancel',
                           request_type='POST',
                           expected_code=404)
コード例 #26
0
 async def test_cancel_order_not_found(self):
     """
     Test whether a 404 is returned when we try to cancel an order that does not exist
     """
     self.nodes[0].get_overlay(
         MarketCommunity).order_manager.create_ask_order(
             AssetPair(AssetAmount(3, 'DUM1'), AssetAmount(4, 'DUM2')),
             Timeout(3600))
     await self.make_request(self.nodes[0],
                             'orders/1234/cancel',
                             'POST',
                             expected_status=404)
コード例 #27
0
 async def setUp(self):
     super(AbstractTestOrderBook, self).setUp()
     # Object creation
     self.ask = Ask(OrderId(TraderId(b'0' * 20), OrderNumber(1)),
                    AssetPair(AssetAmount(100, 'BTC'), AssetAmount(30, 'MB')), Timeout(100), Timestamp.now())
     self.invalid_ask = Ask(OrderId(TraderId(b'0' * 20), OrderNumber(1)),
                            AssetPair(AssetAmount(100, 'BTC'), AssetAmount(30, 'MB')), Timeout(0), Timestamp(0))
     self.ask2 = Ask(OrderId(TraderId(b'1' * 20), OrderNumber(1)),
                     AssetPair(AssetAmount(400, 'BTC'), AssetAmount(30, 'MB')), Timeout(100), Timestamp.now())
     self.bid = Bid(OrderId(TraderId(b'2' * 20), OrderNumber(1)),
                    AssetPair(AssetAmount(200, 'BTC'), AssetAmount(30, 'MB')), Timeout(100), Timestamp.now())
     self.invalid_bid = Bid(OrderId(TraderId(b'0' * 20), OrderNumber(1)),
                            AssetPair(AssetAmount(100, 'BTC'), AssetAmount(30, 'MB')), Timeout(0), Timestamp(0))
     self.bid2 = Bid(OrderId(TraderId(b'3' * 20), OrderNumber(1)),
                     AssetPair(AssetAmount(300, 'BTC'), AssetAmount(30, 'MB')), Timeout(100), Timestamp.now())
     self.trade = Trade.propose(TraderId(b'0' * 20),
                                OrderId(TraderId(b'0' * 20), OrderNumber(1)),
                                OrderId(TraderId(b'0' * 20), OrderNumber(1)),
                                AssetPair(AssetAmount(100, 'BTC'), AssetAmount(30, 'MB')),
                                Timestamp(1462224447117))
     self.order_book = OrderBook()
コード例 #28
0
 async def test_cancel_order_invalid(self):
     """
     Test whether an error is returned when we try to cancel an order that has expired
     """
     order = self.market_community.order_manager.create_ask_order(
         AssetPair(AssetAmount(3, 'DUM1'), AssetAmount(4, 'DUM2')),
         Timeout(0))
     order.set_verified()
     self.market_community.order_manager.order_repository.update(order)
     await self.make_request(self.nodes[0],
                             'orders/1/cancel',
                             'POST',
                             expected_status=400)
コード例 #29
0
 async def test_cancel_order_invalid(self):
     """
     Test whether an error is returned when we try to cancel an order that has expired
     """
     order = self.nodes[0].overlay.order_manager.create_ask_order(
         AssetPair(AssetAmount(3, 'DUM1'), AssetAmount(4, 'DUM2')),
         Timeout(0))
     order.set_verified()
     self.nodes[0].overlay.order_manager.order_repository.update(order)
     self.should_check_equality = False
     await self.do_request('orders/1/cancel',
                           request_type='POST',
                           expected_code=400)
コード例 #30
0
    async def test_get_orders(self):
        """
        Test whether the API returns the right orders when we perform a request
        """

        self.nodes[0].overlay.order_manager.create_ask_order(
            AssetPair(AssetAmount(3, 'DUM1'), AssetAmount(4, 'DUM2')),
            Timeout(3600))

        self.should_check_equality = False
        json_response = await self.do_request('orders', expected_code=200)
        self.assertIn('orders', json_response)
        self.assertEqual(len(json_response['orders']), 1)