Example #1
0
    def test_thread_provider(self):
        p_list_1 = providers.providers_for_config_string(
            "blockchain.info", "BTC")
        p_list_2 = providers.providers_for_config_string(
            "blockexplorer.com", "BTC")
        providers.set_default_providers_for_netcode("BTC", p_list_1)
        self.assertEqual(providers.get_default_providers_for_netcode("BTC"),
                         p_list_1)
        # use a dictionary so it can be mutable in the subthread
        d = {"is_ok": False}

        def subthread():
            providers.set_default_providers_for_netcode("BTC", [])
            self.assertEqual(
                providers.get_default_providers_for_netcode("BTC"), [])
            providers.set_default_providers_for_netcode("BTC", p_list_2)
            self.assertEqual(
                providers.get_default_providers_for_netcode("BTC"), p_list_2)
            d["is_ok"] = True

        t = threading.Thread(target=subthread)
        t.start()
        t.join()
        self.assertTrue(d["is_ok"])
        self.assertEqual(providers.get_default_providers_for_netcode("BTC"),
                         p_list_1)
Example #2
0
 def subthread():
     providers.set_default_providers_for_netcode("BTC", [])
     self.assertEqual(
         providers.get_default_providers_for_netcode("BTC"), [])
     providers.set_default_providers_for_netcode("BTC", p_list_2)
     self.assertEqual(
         providers.get_default_providers_for_netcode("BTC"), p_list_2)
     d["is_ok"] = True
Example #3
0
    def test_thread_provider(self):
        p_list_1 = providers.providers_for_config_string("blockchain.info", "BTC")
        p_list_2 = providers.providers_for_config_string("blockexplorer.com", "BTC")
        providers.set_default_providers_for_netcode("BTC", p_list_1)
        self.assertEqual(providers.get_default_providers_for_netcode("BTC"), p_list_1)
        # use a dictionary so it can be mutable in the subthread
        l = {"is_ok": False}

        def subthread():
            providers.set_default_providers_for_netcode("BTC", [])
            self.assertEqual(providers.get_default_providers_for_netcode("BTC"), [])
            providers.set_default_providers_for_netcode("BTC", p_list_2)
            self.assertEqual(providers.get_default_providers_for_netcode("BTC"), p_list_2)
            l["is_ok"] = True
        t = threading.Thread(target=subthread)
        t.start()
        t.join()
        self.assertTrue(l["is_ok"])
        self.assertEqual(providers.get_default_providers_for_netcode("BTC"), p_list_1)
def pay(from_address, to_address, amount, fee):
    last_exception = None
    for method_provider in service_provider_methods('pay', get_default_providers_for_netcode(CONFIG_NETCODE)):
        try:
            method_provider(from_address, to_address, amount, fee, CONFIG_NETCODE)
            return
        except Exception as e:
            logging.warning('Caught exception trying provider %s. Trying another. Exception=%s', str(method_provider), e)
            last_exception = e
    logging.error('Failed paying through all providers')
    raise last_exception
Example #5
0
def pay(from_address, to_address, amount, fee):
    last_exception = None
    for method_provider in service_provider_methods(
            'pay', get_default_providers_for_netcode(CONFIG_NETCODE)):
        try:
            method_provider(from_address, to_address, amount, fee,
                            CONFIG_NETCODE)
            return
        except Exception as e:
            logging.warning(
                'Caught exception trying provider %s. Trying another. Exception=%s',
                str(method_provider), e)
            last_exception = e
    logging.error('Failed paying through all providers')
    raise last_exception
def broadcast_tx(tx, netcode=CONFIG_NETCODE):
    """
    Broadcast the transaction through the configured set of providers

    :param tx:
    :param netcode:
    :return:
    """
    last_exception = None
    for method_provider in service_provider_methods('broadcast_tx', get_default_providers_for_netcode(netcode)):
        try:
            tx_id = method_provider(tx)
            if tx_id:
                return tx_id
        except Exception as e:
            logging.warning('Caught exception trying provider %s. Trying another. Exception=%s', str(method_provider), e)
            last_exception = e
    logging.error('Failed broadcasting through all providers')
    raise last_exception
Example #7
0
def broadcast_tx(tx, netcode=CONFIG_NETCODE):
    """
    Broadcast the transaction through the configured set of providers

    :param tx:
    :param netcode:
    :return:
    """
    last_exception = None
    for method_provider in service_provider_methods(
            'broadcast_tx', get_default_providers_for_netcode(netcode)):
        try:
            tx_id = method_provider(tx)
            if tx_id:
                return tx_id
        except Exception as e:
            logging.warning(
                'Caught exception trying provider %s. Trying another. Exception=%s',
                str(method_provider), e)
            last_exception = e
    logging.error('Failed broadcasting through all providers')
    raise last_exception
Example #8
0
 def subthread():
     providers.set_default_providers_for_netcode("BTC", [])
     self.assertEqual(providers.get_default_providers_for_netcode("BTC"), [])
     providers.set_default_providers_for_netcode("BTC", p_list_2)
     self.assertEqual(providers.get_default_providers_for_netcode("BTC"), p_list_2)
     l["is_ok"] = True