def test_channel_closed_event_handler_closes_existing_channel(context: Context): context = setup_state_with_open_channel(context) current_block = get_posix_utc_time_now() // 15 event = ReceiveChannelClosedEvent( token_network_address=DEFAULT_TOKEN_NETWORK_ADDRESS, channel_identifier=DEFAULT_CHANNEL_IDENTIFIER, closing_participant=DEFAULT_PARTICIPANT2, block_number=BlockNumber(current_block + 1), ) channel_closed_event_handler(event, context) assert context.database.channel_count() == 1 assert_channel_state(context, ChannelState.CLOSED) event = ReceiveChannelClosedEvent( token_network_address=DEFAULT_TOKEN_NETWORK_ADDRESS, channel_identifier=DEFAULT_CHANNEL_IDENTIFIER, closing_participant=DEFAULT_PARTICIPANT2, block_number=BlockNumber(current_block), ) channel_closed_event_handler(event, context) # ActionMonitoringTriggeredEvent has been triggered assert context.database.scheduled_event_count() == 1 assert context.database.channel_count() == 1 assert_channel_state(context, ChannelState.CLOSED)
def test_channel_closed_event_handler_trigger_action_monitor_event_without_monitor_request( context: Context, ): context = setup_state_with_open_channel(context) event = ReceiveChannelClosedEvent( token_network_address=DEFAULT_TOKEN_NETWORK_ADDRESS, channel_identifier=DEFAULT_CHANNEL_IDENTIFIER, closing_participant=DEFAULT_PARTICIPANT2, block_number=BlockNumber(52), ) channel_closed_event_handler(event, context) assert context.db.scheduled_event_count() == 1
def test_channel_closed_event_handler_leaves_existing_channel(context: Context): context = setup_state_with_open_channel(context) event = ReceiveChannelClosedEvent( token_network_address=DEFAULT_TOKEN_NETWORK_ADDRESS, channel_identifier=ChannelID(4), closing_participant=DEFAULT_PARTICIPANT2, block_number=BlockNumber(52), ) channel_closed_event_handler(event, context) assert context.database.channel_count() == 1 assert_channel_state(context, ChannelState.OPENED)
def setup_state_with_closed_channel(context: Context) -> Context: context = setup_state_with_open_channel(context) event2 = ReceiveChannelClosedEvent( token_network_address=DEFAULT_TOKEN_NETWORK_ADDRESS, channel_identifier=DEFAULT_CHANNEL_IDENTIFIER, closing_participant=DEFAULT_PARTICIPANT2, block_number=BlockNumber(52), ) channel_closed_event_handler(event2, context) assert context.db.channel_count() == 1 assert_channel_state(context, ChannelState.CLOSED) return context
def test_channel_closed_event_handler_closes_existing_channel(context: Context): context = setup_state_with_open_channel(context) context.web3.eth.blockNumber = BlockNumber(60) event = ReceiveChannelClosedEvent( token_network_address=DEFAULT_TOKEN_NETWORK_ADDRESS, channel_identifier=DEFAULT_CHANNEL_IDENTIFIER, closing_participant=DEFAULT_PARTICIPANT2, block_number=BlockNumber(52), ) channel_closed_event_handler(event, context) # ActionMonitoringTriggeredEvent has been triggered assert context.db.scheduled_event_count() == 1 assert context.db.channel_count() == 1 assert_channel_state(context, ChannelState.CLOSED)
def test_channel_closed_event_handler_trigger_action_monitor_event_with_monitor_request( context: Context, ): context = setup_state_with_open_channel(context) # add MR to DB context.database.upsert_monitor_request(create_signed_monitor_request()) current_block_number = get_posix_utc_time_now() // 15 event = ReceiveChannelClosedEvent( token_network_address=DEFAULT_TOKEN_NETWORK_ADDRESS, channel_identifier=DEFAULT_CHANNEL_IDENTIFIER, closing_participant=DEFAULT_PARTICIPANT2, block_number=BlockNumber(current_block_number + 1), ) channel_closed_event_handler(event, context) assert context.database.scheduled_event_count() == 1
def setup_state_with_closed_channel(context: Context) -> Context: context = setup_state_with_open_channel(context) event = ReceiveChannelClosedEvent( token_network_address=DEFAULT_TOKEN_NETWORK_ADDRESS, channel_identifier=DEFAULT_CHANNEL_IDENTIFIER, closing_participant=DEFAULT_PARTICIPANT2, block_number=BlockNumber(52), ) channel_closed_event_handler(event, context) assert context.database.channel_count() == 1 assert_channel_state(context, ChannelState.CLOSED) context.web3.eth.get_block = lambda x: Mock( timestamp=context.web3.eth.block_number * 15 if x == "latest" else x * 15 ) return context
def test_channel_closed_event_handler_ignores_existing_channel_after_timeout( context: Context, ): context = setup_state_with_open_channel(context) context.last_known_block = 200 event = ReceiveChannelClosedEvent( token_network_address=DEFAULT_TOKEN_NETWORK_ADDRESS, channel_identifier=DEFAULT_CHANNEL_IDENTIFIER, closing_participant=DEFAULT_PARTICIPANT2, block_number=52, ) channel_closed_event_handler(event, context) # no ActionMonitoringTriggeredEvent has been triggered assert context.db.scheduled_event_count() == 0 assert context.db.channel_count() == 1 assert_channel_state(context, ChannelState.CLOSED)
def test_channel_closed_event_handler_channel_not_in_database( context: Context): metrics_state = save_metrics_state(metrics.REGISTRY) # only setup the token network without channels create_default_token_network(context) event = ReceiveChannelClosedEvent( token_network_address=DEFAULT_TOKEN_NETWORK_ADDRESS, channel_identifier=ChannelID(4), closing_participant=DEFAULT_PARTICIPANT2, block_number=BlockNumber(52), ) assert context.database.channel_count() == 0 channel_closed_event_handler(event, context) assert context.database.channel_count() == 0 assert (metrics_state.get_delta( "events_log_errors_total", labels=metrics.ErrorCategory.STATE.to_label_dict()) == 1.0)