コード例 #1
0
binance_websocket_api_manager = BinanceWebSocketApiManager(
    exchange="binance.org-testnet")

# start a worker process to move the received stream_data from the stream_buffer to a print function
worker_thread = threading.Thread(target=print_stream_data_from_stream_buffer,
                                 args=(binance_websocket_api_manager, ))
worker_thread.start()

# $all channels
binance_websocket_api_manager.create_stream(["allTickers"], ["$all"])
binance_websocket_api_manager.create_stream(["allMiniTickers"], ["$all"])
binance_websocket_api_manager.create_stream(["blockheight"], ["$all"])

# userAddress streams
binance_dex_user_address = ""
if binance_websocket_api_manager.get_exchange() == "binance.org":
    binance_dex_user_address = ""
elif binance_websocket_api_manager.get_exchange() == "binance.org-testnet":
    binance_dex_user_address = "tbnb1unxhf8fat985ksajatfa5jea58j2kzg7mfy0e7"
binance_websocket_api_manager.create_stream('orders', binance_dex_user_address)
binance_websocket_api_manager.create_stream('accounts',
                                            binance_dex_user_address)
binance_websocket_api_manager.create_stream('transfers',
                                            binance_dex_user_address)
user_address_multi_stream_id = binance_websocket_api_manager.create_stream(
    ['orders', 'transfers'], binance_dex_user_address)

# subscribe is going to be rewritten, dont use for now!
#if binance_websocket_api_manager.wait_till_stream_has_started(user_address_multi_stream_id):
#    binance_websocket_api_manager.subscribe_to_stream(user_address_multi_stream_id,
#                                                      'accounts',
class TestBinanceComManager(unittest.TestCase):
    # Test binance.com (Binance)

    def setUp(self):
        self.binance_com_api_key = BINANCE_COM_API_KEY
        self.binance_com_api_secret = BINANCE_COM_API_SECRET
        self.binance_com_websocket_api_manager = BinanceWebSocketApiManager(
            exchange="binance.com", disable_colorama=True)

    def test_create_uri_miniticker_regular_com(self):
        self.assertEqual(
            self.binance_com_websocket_api_manager.create_websocket_uri(
                ["!miniTicker"], ["arr"]),
            'wss://stream.binance.com:9443/ws/!miniTicker@arr')

    def test_create_uri_miniticker_reverse_com(self):
        self.assertEqual(
            self.binance_com_websocket_api_manager.create_websocket_uri(
                ["arr"], ["!miniTicker"]),
            'wss://stream.binance.com:9443/ws/!miniTicker@arr')

    def test_create_uri_ticker_regular_com(self):
        self.assertEqual(
            self.binance_com_websocket_api_manager.create_websocket_uri(
                ["!ticker"], ["arr"]),
            'wss://stream.binance.com:9443/ws/!ticker@arr')

    def test_create_uri_ticker_reverse_com(self):
        self.assertEqual(
            self.binance_com_websocket_api_manager.create_websocket_uri(
                ["arr"], ["!ticker"]),
            'wss://stream.binance.com:9443/ws/!ticker@arr')

    def test_create_uri_userdata_regular_false_com(self):
        self.assertFalse(
            self.binance_com_websocket_api_manager.create_websocket_uri(
                ["!userData"], ["arr"]))

    def test_create_uri_userdata_reverse_false_com(self):
        self.assertFalse(
            self.binance_com_websocket_api_manager.create_websocket_uri(
                ["arr"], ["!userData"]))

    def test_create_uri_userdata_regular_com(self):
        if len(self.binance_com_api_key) == 0 or len(
                self.binance_com_api_secret) == 0:
            print(
                "\r\nempty API key and/or secret: can not successfully test test_create_uri_userdata_regular_com() "
                "for binance.com")
        else:
            stream_id = uuid.uuid4()
            self.binance_com_websocket_api_manager._add_socket_to_socket_list(
                stream_id, ["!userData"], ["arr"])
            self.assertRegex(
                self.binance_com_websocket_api_manager.create_websocket_uri(
                    ["!userData"], ["arr"], stream_id,
                    self.binance_com_api_key, self.binance_com_api_secret),
                r'wss://stream.binance.com:9443/ws/.')

    def test_create_uri_userdata_reverse_com(self):
        if len(self.binance_com_api_key) == 0 or len(
                self.binance_com_api_secret) == 0:
            print(
                "\r\nempty API key and/or secret: can not successfully test test_create_uri_userdata_reverse_com() "
                "for binance.com")
        else:
            stream_id = uuid.uuid4()
            self.binance_com_websocket_api_manager._add_socket_to_socket_list(
                stream_id, ["arr"], ["!userData"])
            self.assertRegex(
                self.binance_com_websocket_api_manager.create_websocket_uri(
                    ["arr"], ["!userData"], stream_id,
                    self.binance_com_api_key, self.binance_com_api_secret),
                r'wss://stream.binance.com:9443/ws/.')

    def test_is_exchange_type_cex(self):
        self.assertEqual(
            self.binance_com_websocket_api_manager.is_exchange_type("cex"),
            True)

    def test_is_exchange_type_dex(self):
        self.assertEqual(
            self.binance_com_websocket_api_manager.is_exchange_type("dex"),
            False)

    def test_is_update_available(self):
        self.assertEqual(
            self.binance_com_websocket_api_manager.is_update_availabe(), False)

    def test_is_manager_stopping(self):
        self.assertEqual(
            self.binance_com_websocket_api_manager.is_manager_stopping(),
            False)

    def test_get_human_uptime(self):
        self.assertEqual(
            self.binance_com_websocket_api_manager.get_human_uptime(
                60 * 60 * 60 * 61), "152d:12h:0m:0s")
        self.assertEqual(
            self.binance_com_websocket_api_manager.get_human_uptime(
                60 * 60 * 24), "24h:0m:0s")
        self.assertEqual(
            self.binance_com_websocket_api_manager.get_human_uptime(60 * 60),
            "60m:0s")
        self.assertEqual(
            self.binance_com_websocket_api_manager.get_human_uptime(60),
            "60 seconds")

    def test_get_human_bytesize(self):
        self.assertEqual(
            self.binance_com_websocket_api_manager.get_human_bytesize(
                1024 * 1024 * 1024 * 1024 * 1024), "1024.0 tB")
        self.assertEqual(
            self.binance_com_websocket_api_manager.get_human_bytesize(
                1024 * 1024 * 1024 * 1024), "1024.0 gB")
        self.assertEqual(
            self.binance_com_websocket_api_manager.get_human_bytesize(
                1024 * 1024 * 1024), "1024.0 mB")
        self.assertEqual(
            self.binance_com_websocket_api_manager.get_human_bytesize(
                1024 * 1024), "1024.0 kB")
        self.assertEqual(
            self.binance_com_websocket_api_manager.get_human_bytesize(1024),
            "1024 B")
        self.assertEqual(
            self.binance_com_websocket_api_manager.get_human_bytesize(1),
            "1 B")

    def test_get_exchange(self):
        self.assertEqual(self.binance_com_websocket_api_manager.get_exchange(),
                         "binance.com")

    def test_get_listenkey_from_restclient(self):
        self.assertEqual(
            self.binance_com_websocket_api_manager.
            get_listen_key_from_restclient(), False)

    def test_get_listenkey_from_restclient(self):
        stream_id = uuid.uuid4()
        self.assertEqual(
            self.binance_com_websocket_api_manager.
            delete_listen_key_by_stream_id(stream_id), False)

    def test_keepalive_listen_key(self):
        stream_id = uuid.uuid4()
        binance_websocket_api_restclient = BinanceWebSocketApiRestclient(
            self.binance_com_websocket_api_manager)
        self.assertEqual(
            str(
                binance_websocket_api_restclient.keepalive_listen_key(
                    stream_id, listen_key="invalid_testkey")),
            "{'code': -2014, 'msg': 'API-key format invalid.'}")

    def test_delete_listen_key(self):
        stream_id = uuid.uuid4()
        binance_websocket_api_restclient = BinanceWebSocketApiRestclient(
            self.binance_com_websocket_api_manager)
        self.assertEqual(
            str(
                binance_websocket_api_restclient.delete_listen_key(
                    stream_id, listen_key="invalid_testkey")),
            "{'code': -2014, 'msg': 'API-key format invalid.'}")
        self.binance_com_websocket_api_manager.show_secrets_in_logs = True
        self.assertEqual(
            str(
                binance_websocket_api_restclient.delete_listen_key(
                    stream_id, listen_key="invalid_testkey")),
            "{'code': -2014, 'msg': 'API-key format invalid.'}")

    def test_create_payload_subscribe(self):
        result = "[{'method': 'SUBSCRIBE', 'params': ['bnbbtc@kline_1m'], 'id': 1}]"
        stream_id = uuid.uuid4()
        self.assertEqual(
            str(
                self.binance_com_websocket_api_manager.create_payload(
                    stream_id, "subscribe", ['kline_1m'], ['bnbbtc'])), result)

    def test_fill_up_space_centered(self):
        result = "==========test text=========="
        self.assertEqual(
            str(
                self.binance_com_websocket_api_manager.fill_up_space_centered(
                    30, "test text", "=")), result)

    def test_fill_up_space_right(self):
        result = "|test text||||||||||||||||||||"
        self.assertEqual(
            str(
                self.binance_com_websocket_api_manager.fill_up_space_right(
                    30, "test text", "|")), result)

    def test_fill_up_space_left(self):
        result = "||||||||||||||||||||test text|"
        self.assertEqual(
            str(
                self.binance_com_websocket_api_manager.fill_up_space_left(
                    30, "test text", "|")), result)

    def test_create_stream(self):
        self.assertTrue(
            bool(
                self.binance_com_websocket_api_manager.create_stream(
                    'arr', '!userData', "userData", "key", "secret")))
        self.assertTrue(
            bool(
                self.binance_com_websocket_api_manager.create_stream(
                    markets=['bnbbtc'],
                    channels="trade",
                    stream_label="test_stream")))
        stream_id = self.binance_com_websocket_api_manager.get_stream_id_by_label(
            "test_stream")
        #time.sleep(5)
        #self.binance_com_websocket_api_manager.unsubscribe_from_stream(stream_id, markets=['bnbbtc'])
        #self.binance_com_websocket_api_manager.unsubscribe_from_stream(stream_id, channels=['trade'])
        time.sleep(5)
        self.assertTrue(
            self.binance_com_websocket_api_manager.set_restart_request(
                stream_id))
        time.sleep(10)
        self.binance_com_websocket_api_manager.get_monitoring_status_icinga()
        self.binance_com_websocket_api_manager.print_summary()
        self.binance_com_websocket_api_manager.print_stream_info(stream_id)

    def test_restart_stream(self):
        self.assertFalse(
            bool(
                self.binance_com_websocket_api_manager._restart_stream(
                    uuid.uuid4())))

    def test_start_monitoring_api(self):
        self.assertTrue(
            self.binance_com_websocket_api_manager.start_monitoring_api())
        time.sleep(5)
        self.assertTrue(
            self.binance_com_websocket_api_manager.stop_monitoring_api())

    def tearDown(self):
        self.binance_com_websocket_api_manager.stop_manager_with_all_streams()