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)
Beispiel #2
0
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()
Beispiel #4
0
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()