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)
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
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
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
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
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