def test_next_route_amount(): """ Routes that dont have enough available_balance must be ignored. """ amount = 10 reveal_timeout = 30 timeout_blocks = reveal_timeout + 10 routes = [ factories.make_route( factories.HOP2, available_balance=amount * 2, reveal_timeout=reveal_timeout, ), factories.make_route( factories.HOP1, available_balance=amount + 1, reveal_timeout=reveal_timeout, ), factories.make_route( factories.HOP3, available_balance=amount // 2, reveal_timeout=reveal_timeout, ), factories.make_route( factories.HOP4, available_balance=amount, reveal_timeout=reveal_timeout, ), ] routes_state = RoutesState( list(routes)) # copy because the list will be modified inplace route1 = mediator.next_route(routes_state, timeout_blocks, amount) assert route1 == routes[0] assert routes_state.available_routes == routes[1:] assert routes_state.ignored_routes == list() route2 = mediator.next_route(routes_state, timeout_blocks, amount) assert route2 == routes[1] assert routes_state.available_routes == routes[2:] assert routes_state.ignored_routes == list() route3 = mediator.next_route(routes_state, timeout_blocks, amount) assert route3 == routes[3] assert routes_state.available_routes == list() assert routes_state.ignored_routes == [routes[2]] assert mediator.next_route(routes_state, timeout_blocks, amount) is None
def test_next_route_amount(): """ Routes that dont have enough available_balance must be ignored. """ amount = 10 reveal_timeout = 30 timeout_blocks = reveal_timeout + 10 routes = [ factories.make_route( factories.HOP2, available_balance=amount * 2, reveal_timeout=reveal_timeout, ), factories.make_route( factories.HOP1, available_balance=amount + 1, reveal_timeout=reveal_timeout, ), factories.make_route( factories.HOP3, available_balance=amount // 2, reveal_timeout=reveal_timeout, ), factories.make_route( factories.HOP4, available_balance=amount, reveal_timeout=reveal_timeout, ), ] routes_state = RoutesState(list(routes)) # copy because the list will be modified inplace route1 = mediator.next_route(routes_state, timeout_blocks, amount) assert route1 == routes[0] assert routes_state.available_routes == routes[1:] assert routes_state.ignored_routes == list() route2 = mediator.next_route(routes_state, timeout_blocks, amount) assert route2 == routes[1] assert routes_state.available_routes == routes[2:] assert routes_state.ignored_routes == list() route3 = mediator.next_route(routes_state, timeout_blocks, amount) assert route3 == routes[3] assert routes_state.available_routes == list() assert routes_state.ignored_routes == [routes[2]] assert mediator.next_route(routes_state, timeout_blocks, amount) is None
def test_next_route_reveal_timeout(): """ Routes with a larger reveal timeout than timeout_blocks must be ignored. """ amount = 10 balance = 20 timeout_blocks = 10 routes = [ factories.make_route( factories.HOP1, available_balance=balance, reveal_timeout=timeout_blocks * 2, ), factories.make_route( factories.HOP2, available_balance=balance, reveal_timeout=timeout_blocks + 1, ), factories.make_route( factories.HOP3, available_balance=balance, reveal_timeout=timeout_blocks // 2, ), factories.make_route( factories.HOP4, available_balance=balance, reveal_timeout=timeout_blocks, ), ] routes_state = RoutesState( list(routes)) # copy because the list will be modified inplace route1 = mediator.next_route(routes_state, timeout_blocks, amount) assert route1 == routes[2] assert routes_state.available_routes == [ routes[3], ] assert routes_state.ignored_routes == [routes[0], routes[1]] assert mediator.next_route(routes_state, timeout_blocks, amount) is None assert routes_state.available_routes == list() assert routes_state.ignored_routes == [routes[0], routes[1], routes[3]]
def test_next_route_reveal_timeout(): """ Routes with a larger reveal timeout than timeout_blocks must be ignored. """ amount = 10 balance = 20 timeout_blocks = 10 routes = [ factories.make_route( factories.HOP1, available_balance=balance, reveal_timeout=timeout_blocks * 2, ), factories.make_route( factories.HOP2, available_balance=balance, reveal_timeout=timeout_blocks + 1, ), factories.make_route( factories.HOP3, available_balance=balance, reveal_timeout=timeout_blocks // 2, ), factories.make_route( factories.HOP4, available_balance=balance, reveal_timeout=timeout_blocks, ), ] routes_state = RoutesState(list(routes)) # copy because the list will be modified inplace route1 = mediator.next_route(routes_state, timeout_blocks, amount) assert route1 == routes[2] assert routes_state.available_routes == [routes[3], ] assert routes_state.ignored_routes == [routes[0], routes[1]] assert mediator.next_route(routes_state, timeout_blocks, amount) is None assert routes_state.available_routes == list() assert routes_state.ignored_routes == [routes[0], routes[1], routes[3]]