Dosyalar
rocm-systems/tests/rdc_tests/test_base.cc
T
Galantsev, Dmitrii 2c171767b3 Compile rdctst and improve CMakeLists
Main CMake improvements:

* Add rdctst with -DBUILD_TESTS=ON
* Set default ROCM_DIR to /opt/rocm/
* Split rdc_libs/CMakeLists.txt into subdirectories
* Package tests into rdc-tests.deb and .rpm

Misc improvements:

* Add .editorconfig to normalize code formatting
* Add .gitignore
* Expand RPATH for gRPC to reduce LD_LIBRARY_PATH usage
* Export compile_commands.json
* Show warning and do not install gRPC if GRPC_ROOT is left as default
* Move .in files into relevant subdirectories
* Move most variables into project CMakeLists.txt to avoid redefinitions
* Normalize CMakeLists.txt formatting (4 spaces indentation)
* Rename DIAGNOSTIC_LIB to RDC_ROCR_LIB
* Update gRPC version in README to 1.44.0
* Remove gtest source
* Pull gtest from github if not installed

Signed-off-by: Galantsev, Dmitrii <dmitrii.galantsev@amd.com>
Depends-On: I1039ef61247e3f0ff822925cc869fb0c2bf3af85
Change-Id: I879b21428e6642f19fda67092b365d8b78b7ba7b
2022-10-07 13:58:50 -05:00

138 satır
3.8 KiB
C++
Çalıştırılabilir Dosya

/*
Copyright (c) 2019 - Advanced Micro Devices, Inc. All rights reserved.
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in
all copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
THE SOFTWARE.
*/
#include <assert.h>
#include <gtest/gtest.h>
#include "rocm_smi/rocm_smi.h"
#include "rdc_tests/test_base.h"
#include "rdc_tests/test_common.h"
static const int kOutputLineLength = 80;
static const char kLabelDelimiter[] = "####";
static const char kDescriptionLabel[] = "TEST DESCRIPTION";
static const char kTitleLabel[] = "TEST NAME";
static const char kSetupLabel[] = "TEST SETUP";
static const char kRunLabel[] = "TEST EXECUTION";
static const char kCloseLabel[] = "TEST CLEAN UP";
static const char kResultsLabel[] = "TEST RESULTS";
rdc_status_t result;
/*TestBase::TestBase() : description_(""), rdc_channel_(0) {
}*/
TestBase::TestBase() : description_("") {
}
TestBase::~TestBase() {
}
static void MakeHeaderStr(const char *inStr, std::string *outStr) {
assert(outStr != nullptr);
assert(inStr != nullptr);
outStr->clear();
*outStr = kLabelDelimiter;
*outStr += " ";
*outStr += inStr;
*outStr += " ";
*outStr += kLabelDelimiter;
}
void TestBase::SetUp(void) {
std::string label;
MakeHeaderStr(kSetupLabel, &label);
printf("\n\t%s\n", label.c_str());
return;
}
void TestBase::PrintDeviceHeader(uint32_t dv_ind) {
IF_VERB(STANDARD) {
std::cout << "\t**Device index: " << dv_ind << std::endl;
}
std::cout << std::setbase(10);
}
rdc_status_t
TestBase::AllocateRDCChannel(void) {
IF_VERB(STANDARD) {
std::cout << "\t**Initializing RDC" << std::endl;
}
rdc_status_t result = rdc_init(0);
if (result != RDC_ST_OK) {
std::cout << "Error initializing RDC.... " <<
rdc_status_string(result) << std::endl;
return result;
}
return result;
}
void TestBase::Run(void) {
std::string label;
MakeHeaderStr(kRunLabel, &label);
printf("\n\t%s\n", label.c_str());
}
void TestBase::Close(void) {
std::string label;
MakeHeaderStr(kCloseLabel, &label);
printf("\n\t%s\n", label.c_str());
}
void TestBase::DisplayResults(void) const {
std::string label;
MakeHeaderStr(kResultsLabel, &label);
printf("\n\t%s\n", label.c_str());
}
void TestBase::DisplayTestInfo(void) {
printf("#########################################"
"######################################\n");
std::string label;
MakeHeaderStr(kTitleLabel, &label);
printf("\n\t%s\n%s\n", label.c_str(), title().c_str());
if (verbosity() >= VERBOSE_STANDARD) {
MakeHeaderStr(kDescriptionLabel, &label);
printf("\n\t%s\n%s\n", label.c_str(), description().c_str());
}
}
void TestBase::set_description(std::string d) {
int le = kOutputLineLength - 4;
description_ = d;
size_t endlptr;
for (size_t i = le; i < description_.size(); i += le) {
endlptr = description_.find_last_of(" ", i);
description_.replace(endlptr, 1, "\n");
i = endlptr;
}
}