Source code for microraiden.test.test_performance

import time
import logging
import datetime

import gevent
from eth_utils import encode_hex

from microraiden import Session

log = logging.getLogger(__name__)


[docs]def test_resource_request(doggo_proxy, http_doggo_url: str, session: Session): n_requests = 10 session.initial_deposit = lambda x: (n_requests + 1) * x # First transfer creates channel on-chain => exclude from profiling. response = session.get(http_doggo_url) assert response.text == 'HI I AM A DOGGO' t_start = time.time() for i in range(n_requests): log.debug('Transfer {}'.format(i)) response = session.get(http_doggo_url) assert response.text == 'HI I AM A DOGGO' t_diff = time.time() - t_start log.info("{} requests in {} ({} rps)".format( n_requests, datetime.timedelta(seconds=t_diff), n_requests / t_diff) )
[docs]def test_receiver_validation(channel_manager, client, wait_for_blocks): n = 100 # open channel channel = client.open_channel(channel_manager.state.receiver, n) wait_for_blocks(channel_manager.blockchain.n_confirmations) gevent.sleep(channel_manager.blockchain.poll_interval) assert (channel.sender, channel.block) in channel_manager.channels # prepare balance proofs t_start = time.time() balance_proofs = [encode_hex(channel.create_transfer(1)) for _ in range(n)] t_diff = time.time() - t_start log.info("%d balance proofs prepared in %s (%f / s)", n, datetime.timedelta(seconds=t_diff), n / t_diff) # validate t_start = time.time() for i, balance_proof in enumerate(balance_proofs): log.debug('Transfer {}'.format(i)) sender, received = channel_manager.register_payment( channel.sender, channel.block, i + 1, balance_proof) assert sender == channel.sender assert received == 1 t_diff = time.time() - t_start log.info("%d balance proofs verified in %s (%f / s)", n, datetime.timedelta(seconds=t_diff), n / t_diff)