NAME

Tapper::MCP::State

SYNOPSIS

use Tapper::MCP::State;
my $state_handler = Tapper::MCP::State->new($testrun_id);
my $state = $state_handler->get_current_state();
$self->compare_given_state($state);

NAME

Tapper::MCP::State - Keep state information for one specific test run

FUNCTIONS

is_msg_valid

Check whether received message is valid in current state.

@param hash ref - message

@return valid - 1 @return invalid - 0

compare_given_state

Compare the current state to a given state name. Return -1 if the given state is earlier then the current, 1 if the current state is earlier then the given one and 0 if both are equal.

@param string - state name

@return current state is earlier - 1 @return given state is earlier - -1 @return states are equal - 0

get_current_timeout_span

Returns the time in seconds until the next timeout hits. When multiple timeouts are currently running (during test with multiple PRCs) the lowest of these timeouts is choosen. This value can be used for sleeping in reads.

@return int - timeout span in seconds

state_init

Initialize the state or reload it from database.

@param hash ref - initial state data (ignored in revive mode) @param bool - are we in revive mode?

@return success - 0 @return error - error string

update_installer_timeout

Update the timeout during installation.

@return success - (0, timeout span for next state change) @return error - (1, undef)

update_prc_timeout

Check and update timeouts for one PRC.

@param int - PRC number

@return success - new timeout @return error - undef

update_test_timeout

Update timeouts during test phase.

@return success - (1, new timeout) @return error - (0, undef)

update_keep_alive_timeout

Check whether keep-alive timeout has ended and if so, act accordingly.

@return success - (0, timeout span for next state change) @return error - (1, undef)

update_timeouts

Update the timeouts in $self->state_details structure.

@return success - (0, timeout span for next state change) @return error - (1, undef)

msg_takeoff

The reboot call was successfully executed, now update the state for waiting for the first message.

@param hash ref - message

@return success - (0, timeout span for next state change)

msg_start_install

Handle message start-install

@param hash ref - message

@return success - (0, timeout span for next state change) @return error - (1, undef)

msg_end_install

Handle message end-install

@param hash ref - message

@return success - (0, timeout span for next state change) @return error - (1, undef)

msg_error_install

Handle message error-install

@param hash ref - message

@return success - (0, timeout span for next state change) @return error - (1, undef)

msg_warn_install

Handle message error-install

@param hash ref - message

@return success - (0, timeout span for next state change) @return error - (1, undef)

msg_error_guest

Handle message error-guest

@param hash ref - message

@return success - (0, timeout span for next state change) @return error - (1, undef)

msg_start_guest

Handle message start-guest

@param hash ref - message

@return success - (0, timeout span for next state change) @return error - (1, undef)

msg_start_testing

Handle message start-testing

@param hash ref - message

@return success - (0, timeout span for next state change) @return error - (1, undef)

msg_end_testing

Handle message end-testing

@param hash ref - message

@return success - (0, timeout span for next state change) @return error - (1, undef)

msg_end_testprogram

Handle message end-testprogram

@param hash ref - message

@return success - (0, timeout span for next state change) @return error - (1, undef)

msg_error_testprogram

Handle message error-testprogram

@param hash ref - message

@return success - (0, timeout span for next state change) @return error - (1, undef)

msg_reboot

Handle message reboot

@param hash ref - message

@return success - (0, timeout span for next state change) @return error - (1, undef)

msg_quit

Handle message quit

@param hash ref - message

@return (1, undef)

msg_keep_alive

Handle message keep-alive. This function does not return anything because the caller ignores the return value anyway.

@param hash ref - message

next_state

Update state machine based on message.

@param Result class - message

@return success - 1 @return error - undef

Update the state based on a message received from caller. The function returns a timeout span value that is the lowest of all currently active timeouts. The given message can be empty. In this case only timeouts are checked and updated if needed.

@param hash ref - message

@return success - (0, timeout span for next state change) @return error - (1, undef)

testrun_finished

Tells caller whether the testrun is already finished or not.

@return TR finished - 1 @return TR not finished - 0

AUTHORS

  • AMD OSRC Tapper Team <tapper@amd64.org>

  • Tapper Team <tapper-ops@amazon.com>

COPYRIGHT AND LICENSE

This software is Copyright (c) 2024 by Advanced Micro Devices, Inc.

This is free software, licensed under:

The (two-clause) FreeBSD License