def test_filelock(sender_privkey, client_contract_proxy, client_token_proxy, datadir, channel_manager_contract_address, token_contract_address): kwargs = { 'privkey': sender_privkey, 'channel_manager_proxy': client_contract_proxy, 'token_proxy': client_token_proxy, 'datadir': datadir, 'channel_manager_address': channel_manager_contract_address, 'token_address': token_contract_address } client = Client(**kwargs) client.close() client = Client(**kwargs) with pytest.raises(filelock.Timeout): Client(**kwargs) client.close() with Client(**kwargs): pass with Client(**kwargs): with pytest.raises(filelock.Timeout): Client(**kwargs)
def client(sender_privkey: str, client_contract_proxy: ChannelContractProxy, client_token_proxy: ContractProxy, datadir: str): client = Client(privkey=sender_privkey, channel_manager_proxy=client_contract_proxy, token_proxy=client_token_proxy, datadir=datadir) yield client client.close()
def client(sender_privkey, client_contract_proxy, client_token_proxy, datadir, channel_manager_contract_address, token_contract_address): client = Client(privkey=sender_privkey, channel_manager_proxy=client_contract_proxy, token_proxy=client_token_proxy, datadir=datadir, channel_manager_address=channel_manager_contract_address, token_address=token_contract_address) yield client client.close()
class ETHTickerClient(ttk.Frame): def __init__( self, sender_privkey: str, httpclient: DefaultHTTPClient = None ): self.root = tkinter.Tk() ttk.Frame.__init__(self, self.root) self.root.title('µRaiden ETH Ticker') self.root.protocol('WM_DELETE_WINDOW', self.close) self.pack() self.pricevar = tkinter.StringVar(value='0.00 USD') ttk.Label(self, textvariable=self.pricevar, font=('Helvetica', '72')).pack() if httpclient: self.httpclient = httpclient self.client = httpclient.client else: self.client = Client(sender_privkey) self.httpclient = DefaultHTTPClient( self.client, 'localhost', 5000, initial_deposit=lambda x: 10 * x, topup_deposit=lambda x: 5 * x ) self.active_query = False self.running = False def run(self): self.running = True self.root.after(1000, self.query_price) self.root.mainloop() def query_price(self): if not self.running: return self.active_query = True response = self.httpclient.run('ETHUSD') if response: ticker = json.loads(response.decode()) price = float(ticker['last_price']) log.info('New price received: {:.2f} USD'.format(price)) self.pricevar.set('{:.2f} USD'.format(price)) else: log.warning('No response.') if self.running: self.root.after(5000, self.query_price) self.active_query = False def close(self): log.info('Shutting down gracefully.') self.running = False self.root.destroy() self.httpclient.stop() # Sloppy handling of thread joining but works for this small demo. while self.active_query: gevent.sleep(1) self.httpclient.close_active_channel() self.client.close()