RVS - Report test progress in realtime
Change-Id: Id9fea71f242f372f408ecd777c030465b7ef9989 Signed-off-by: Galantsev, Dmitrii <dmitrii.galantsev@amd.com>
This commit is contained in:
committed by
Galantsev, Dmitrii
parent
9c77312c51
commit
37ddd5bf50
@@ -27,22 +27,12 @@ THE SOFTWARE.
|
||||
#include "rdc_lib/rdc_common.h"
|
||||
#include "rdc_modules/rdc_rvs/RvsBase.h"
|
||||
|
||||
// TODO: Replace with client-side feedback channel
|
||||
#define RVS_LOG() RDC_LOG(RDC_DEBUG, "!HELLO_FROM_RVS! " << __FILE__ << ":" << __LINE__)
|
||||
rdc_status_t rdc_diag_init(uint64_t) { return RDC_ST_OK; }
|
||||
|
||||
rdc_status_t rdc_diag_init(uint64_t) {
|
||||
RVS_LOG();
|
||||
return RDC_ST_OK;
|
||||
}
|
||||
|
||||
rdc_status_t rdc_diag_destroy() {
|
||||
RVS_LOG();
|
||||
return RDC_ST_OK;
|
||||
}
|
||||
rdc_status_t rdc_diag_destroy() { return RDC_ST_OK; }
|
||||
|
||||
rdc_status_t rdc_diag_test_cases_query(rdc_diag_test_cases_t test_cases[MAX_TEST_CASES],
|
||||
uint32_t* test_case_count) {
|
||||
RVS_LOG();
|
||||
if (test_case_count == nullptr) {
|
||||
return RDC_ST_BAD_PARAMETER;
|
||||
}
|
||||
@@ -59,7 +49,6 @@ rdc_status_t rdc_diag_test_case_run(rdc_diag_test_cases_t test_case,
|
||||
const char* config, size_t config_size,
|
||||
rdc_diag_test_result_t* result, rdc_diag_callback_t* callback) {
|
||||
rvs_status_t rvs_status = RVS_STATUS_SUCCESS;
|
||||
RVS_LOG();
|
||||
if (result == nullptr || gpu_count == 0) {
|
||||
return RDC_ST_BAD_PARAMETER;
|
||||
}
|
||||
@@ -68,16 +57,22 @@ rdc_status_t rdc_diag_test_case_run(rdc_diag_test_cases_t test_case,
|
||||
return RDC_ST_BAD_PARAMETER;
|
||||
}
|
||||
|
||||
amd::rdc::RdcRVSBase rvs_base;
|
||||
|
||||
// init the return data
|
||||
*result = {};
|
||||
result->test_case = test_case;
|
||||
result->status = RDC_DIAG_RESULT_PASS;
|
||||
result->per_gpu_result_count = 0;
|
||||
|
||||
if (cookie != nullptr && cookie->callback != nullptr && cookie->writer != nullptr) {
|
||||
std::string str = "RVS test";
|
||||
cookie->callback(cookie->writer, str.data());
|
||||
}
|
||||
switch (test_case) {
|
||||
case RDC_DIAG_RVS_TEST:
|
||||
strncpy_with_null(result->info, "Finished running RDC_DIAG_RVS_TEST!", MAX_DIAG_MSG_LENGTH);
|
||||
rvs_status = amd::rdc::run_rvs_app(config, config_size);
|
||||
strncpy_with_null(result->info, "Finished running RDC_DIAG_RVS_TEST", MAX_DIAG_MSG_LENGTH);
|
||||
rvs_status = rvs_base.run_rvs_app(config, config_size, cookie);
|
||||
break;
|
||||
default:
|
||||
result->status = RDC_DIAG_RESULT_SKIP;
|
||||
|
||||
@@ -25,19 +25,23 @@ THE SOFTWARE.
|
||||
|
||||
#include "rdc_lib/RdcLogger.h"
|
||||
#include "rdc_lib/rdc_common.h"
|
||||
#include "rdc_modules/rdc_rvs/RvsBase.h"
|
||||
#include "rvs/rvs.h"
|
||||
|
||||
// TODO: Make generic test
|
||||
// TODO: Allow for user to override defaults with a custom string
|
||||
static constexpr size_t MAX_CONFIG_LENGTH = 1024;
|
||||
|
||||
volatile rvs_session_state_t state = RVS_SESSION_STATE_IDLE;
|
||||
amd::rdc::RdcRVSBase* amd::rdc::RdcRVSBase::s_instance = nullptr;
|
||||
|
||||
rvs_status_t amd::rdc::run_rvs_app(const char* config, const size_t config_size) {
|
||||
rvs_status_t amd::rdc::RdcRVSBase::run_rvs_app(const char* config, const size_t config_size,
|
||||
cookie_t* cookie) {
|
||||
char active_config[MAX_CONFIG_LENGTH];
|
||||
rvs_session_property_t session_property = {RVS_SESSION_TYPE_DEFAULT_CONF, {{RVS_MODULE_GST}}};
|
||||
rvs_session_id_t session_id;
|
||||
rvs_status_t status;
|
||||
// NOTE: device_index is NOT set by RDC unless a custom config is provided.
|
||||
// Meaning RDC index has no impact on RVS index.
|
||||
const char mem_config[MAX_CONFIG_LENGTH] =
|
||||
"{actions: [{name: action_1, device: all, module: mem, parallel: true, "
|
||||
"count: 1, wait: 100, mapped_memory: false, mem_blocks: 128, "
|
||||
@@ -70,11 +74,12 @@ rvs_status_t amd::rdc::run_rvs_app(const char* config, const size_t config_size)
|
||||
|
||||
/*******************************/
|
||||
|
||||
state = RVS_SESSION_STATE_IDLE;
|
||||
_state = RVS_SESSION_STATE_IDLE;
|
||||
|
||||
/* Using custom gst configuration in string format */
|
||||
|
||||
status = rvs_session_create(&session_id, amd::rdc::session_callback);
|
||||
_cookie = cookie;
|
||||
status = rvs_session_create(&session_id, &RdcRVSBase::static_callback);
|
||||
|
||||
session_property.type = RVS_SESSION_TYPE_CUSTOM_ACTION;
|
||||
session_property.custom_action.config = active_config;
|
||||
@@ -89,9 +94,11 @@ rvs_status_t amd::rdc::run_rvs_app(const char* config, const size_t config_size)
|
||||
return status;
|
||||
}
|
||||
|
||||
while (state != RVS_SESSION_STATE_COMPLETED) {
|
||||
while (_state != RVS_SESSION_STATE_COMPLETED) {
|
||||
};
|
||||
|
||||
_cookie = nullptr;
|
||||
|
||||
status = rvs_session_destroy(session_id);
|
||||
if (status != RVS_STATUS_SUCCESS) {
|
||||
RDC_LOG(RDC_ERROR, "RVS session destroy failed with status: " << status);
|
||||
@@ -99,20 +106,3 @@ rvs_status_t amd::rdc::run_rvs_app(const char* config, const size_t config_size)
|
||||
|
||||
return status;
|
||||
}
|
||||
|
||||
void amd::rdc::session_callback(rvs_session_id_t session_id, const rvs_results_t* results) {
|
||||
// NOTE: This is a placeholder!
|
||||
// TODO: Use GRPC to send message back to client periodically
|
||||
printf(
|
||||
"/*******************************************************************/"
|
||||
"\n");
|
||||
printf("session id -> %d state -> %d\n", session_id, results->state);
|
||||
printf("session id -> %d status -> %d\n", session_id, results->status);
|
||||
printf("session id -> %d output -> %s\n", session_id, results->output_log);
|
||||
printf(
|
||||
"/*******************************************************************/"
|
||||
"\n");
|
||||
|
||||
state = results->state;
|
||||
printf("state -> %d\n", state);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user