|
Packit |
534379 |
// Copyright(c) 2018-2020, Intel Corporation
|
|
Packit |
534379 |
//
|
|
Packit |
534379 |
// Redistribution and use in source and binary forms, with or without
|
|
Packit |
534379 |
// modification, are permitted provided that the following conditions are met:
|
|
Packit |
534379 |
//
|
|
Packit |
534379 |
// * Redistributions of source code must retain the above copyright notice,
|
|
Packit |
534379 |
// this list of conditions and the following disclaimer.
|
|
Packit |
534379 |
// * Redistributions in binary form must reproduce the above copyright notice,
|
|
Packit |
534379 |
// this list of conditions and the following disclaimer in the documentation
|
|
Packit |
534379 |
// and/or other materials provided with the distribution.
|
|
Packit |
534379 |
// * Neither the name of Intel Corporation nor the names of its contributors
|
|
Packit |
534379 |
// may be used to endorse or promote products derived from this software
|
|
Packit |
534379 |
// without specific prior written permission.
|
|
Packit |
534379 |
//
|
|
Packit |
534379 |
// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
|
|
Packit |
534379 |
// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
|
|
Packit |
534379 |
// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
|
|
Packit |
534379 |
// ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
|
|
Packit |
534379 |
// LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
|
|
Packit |
534379 |
// CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
|
|
Packit |
534379 |
// SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
|
|
Packit |
534379 |
// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
|
|
Packit |
534379 |
// CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
|
|
Packit |
534379 |
// ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
|
|
Packit |
534379 |
// POSSIBILITY OF SUCH DAMAGE.
|
|
Packit |
534379 |
|
|
Packit |
534379 |
extern "C" {
|
|
Packit |
534379 |
|
|
Packit |
534379 |
#include <fcntl.h>
|
|
Packit |
534379 |
#include <json-c/json.h>
|
|
Packit |
534379 |
#include <stdlib.h>
|
|
Packit |
534379 |
#include <uuid/uuid.h>
|
|
Packit |
534379 |
#include "opae_int.h"
|
|
Packit |
534379 |
#include "types_int.h"
|
|
Packit |
534379 |
}
|
|
Packit |
534379 |
|
|
Packit |
534379 |
#include <config.h>
|
|
Packit |
534379 |
#include <opae/fpga.h>
|
|
Packit |
534379 |
|
|
Packit |
534379 |
#include <dlfcn.h>
|
|
Packit |
534379 |
#include <array>
|
|
Packit |
534379 |
#include <cstdlib>
|
|
Packit |
534379 |
#include <cstring>
|
|
Packit |
534379 |
#include <map>
|
|
Packit |
534379 |
#include <memory>
|
|
Packit |
534379 |
#include <string>
|
|
Packit |
534379 |
#include <vector>
|
|
Packit |
534379 |
#include "gtest/gtest.h"
|
|
Packit |
534379 |
#include "metrics/bmc/bmc.h"
|
|
Packit |
534379 |
#include "metrics/bmc/bmc_ioctl.h"
|
|
Packit |
534379 |
#include "metrics/bmc/bmcdata.h"
|
|
Packit |
534379 |
#include "metrics/bmc/bmcinfo.h"
|
|
Packit |
534379 |
#include "sysfs_int.h"
|
|
Packit |
534379 |
#include "mock/test_system.h"
|
|
Packit |
534379 |
#include "mock/test_utils.h"
|
|
Packit |
534379 |
#include "token_list_int.h"
|
|
Packit |
534379 |
#include "xfpga.h"
|
|
Packit |
534379 |
|
|
Packit |
534379 |
extern "C" {
|
|
Packit |
534379 |
int xfpga_plugin_initialize(void);
|
|
Packit |
534379 |
int xfpga_plugin_finalize(void);
|
|
Packit |
534379 |
}
|
|
Packit |
534379 |
|
|
Packit |
534379 |
using namespace opae::testing;
|
|
Packit |
534379 |
|
|
Packit |
534379 |
class bmc_c_p : public ::testing::TestWithParam<std::string> {
|
|
Packit |
534379 |
protected:
|
|
Packit |
534379 |
bmc_c_p()
|
|
Packit |
534379 |
: tokens_{{nullptr, nullptr}},
|
|
Packit |
534379 |
handle_(nullptr) {}
|
|
Packit |
534379 |
|
|
Packit |
534379 |
virtual void SetUp() override {
|
|
Packit |
534379 |
ASSERT_TRUE(test_platform::exists(GetParam()));
|
|
Packit |
534379 |
platform_ = test_platform::get(GetParam());
|
|
Packit |
534379 |
system_ = test_system::instance();
|
|
Packit |
534379 |
system_->initialize();
|
|
Packit |
534379 |
system_->prepare_syfs(platform_);
|
|
Packit |
534379 |
ASSERT_EQ(xfpga_plugin_initialize(), FPGA_OK);
|
|
Packit |
534379 |
|
|
Packit |
534379 |
ASSERT_EQ(xfpga_fpgaGetProperties(nullptr, &filter_), FPGA_OK);
|
|
Packit |
534379 |
ASSERT_EQ(fpgaPropertiesSetObjectType(filter_, FPGA_DEVICE), FPGA_OK);
|
|
Packit |
534379 |
ASSERT_EQ(xfpga_fpgaEnumerate(&filter_, 1, tokens_.data(), tokens_.size(),
|
|
Packit |
534379 |
&num_matches_), FPGA_OK);
|
|
Packit |
534379 |
ASSERT_GT(num_matches_, 0);
|
|
Packit |
534379 |
ASSERT_EQ(xfpga_fpgaOpen(tokens_[0], &handle_, 0), FPGA_OK);
|
|
Packit |
534379 |
}
|
|
Packit |
534379 |
|
|
Packit |
534379 |
virtual void TearDown() override {
|
|
Packit |
534379 |
EXPECT_EQ(fpgaDestroyProperties(&filter_), FPGA_OK);
|
|
Packit |
534379 |
for (auto &t : tokens_) {
|
|
Packit |
534379 |
if (t) {
|
|
Packit |
534379 |
EXPECT_EQ(xfpga_fpgaDestroyToken(&t), FPGA_OK);
|
|
Packit |
534379 |
t = nullptr;
|
|
Packit |
534379 |
}
|
|
Packit |
534379 |
}
|
|
Packit |
534379 |
if (handle_ != nullptr) {
|
|
Packit |
534379 |
EXPECT_EQ(xfpga_fpgaClose(handle_), FPGA_OK);
|
|
Packit |
534379 |
handle_ = nullptr;
|
|
Packit |
534379 |
}
|
|
Packit |
534379 |
xfpga_plugin_finalize();
|
|
Packit |
534379 |
system_->finalize();
|
|
Packit |
534379 |
}
|
|
Packit |
534379 |
|
|
Packit |
534379 |
fpga_result write_sysfs_file(fpga_token token, const char *file, void *buf,
|
|
Packit |
534379 |
size_t count);
|
|
Packit |
534379 |
|
|
Packit |
534379 |
std::array<fpga_token, 2> tokens_;
|
|
Packit |
534379 |
fpga_handle handle_;
|
|
Packit |
534379 |
fpga_properties filter_;
|
|
Packit |
534379 |
uint32_t num_matches_;
|
|
Packit |
534379 |
test_platform platform_;
|
|
Packit |
534379 |
test_system *system_;
|
|
Packit |
534379 |
};
|
|
Packit |
534379 |
|
|
Packit |
534379 |
fpga_result bmc_c_p::write_sysfs_file(fpga_token token, const char *file,
|
|
Packit |
534379 |
void *buf, size_t count) {
|
|
Packit |
534379 |
fpga_result res = FPGA_OK;
|
|
Packit |
534379 |
char sysfspath[SYSFS_PATH_MAX] = { 0, };
|
|
Packit |
534379 |
int fd = 0;
|
|
Packit |
534379 |
size_t len;
|
|
Packit |
534379 |
|
|
Packit |
534379 |
struct _fpga_token *tok = (struct _fpga_token *)token;
|
|
Packit |
534379 |
if (FPGA_TOKEN_MAGIC != tok->magic) {
|
|
Packit |
534379 |
return FPGA_INVALID_PARAM;
|
|
Packit |
534379 |
}
|
|
Packit |
534379 |
|
|
Packit |
534379 |
len = strnlen(tok->sysfspath, sizeof(sysfspath) - 1);
|
|
Packit |
534379 |
strncpy(sysfspath, tok->sysfspath, len + 1);
|
|
Packit |
534379 |
strncat(sysfspath, "/", 2);
|
|
Packit |
534379 |
len = strnlen(file, sizeof(sysfspath) - (len + 1));
|
|
Packit |
534379 |
strncat(sysfspath, file, len + 1);
|
|
Packit |
534379 |
|
|
Packit |
534379 |
glob_t pglob;
|
|
Packit |
534379 |
int gres = glob(sysfspath, GLOB_NOSORT, NULL, &pglob);
|
|
Packit |
534379 |
if ((gres) || (1 != pglob.gl_pathc)) {
|
|
Packit |
534379 |
globfree(&pglob);
|
|
Packit |
534379 |
return FPGA_NOT_FOUND;
|
|
Packit |
534379 |
}
|
|
Packit |
534379 |
fd = open(pglob.gl_pathv[0], O_WRONLY);
|
|
Packit |
534379 |
globfree(&pglob);
|
|
Packit |
534379 |
if (fd < 0) {
|
|
Packit |
534379 |
printf("open faild \n");
|
|
Packit |
534379 |
return FPGA_NOT_FOUND;
|
|
Packit |
534379 |
}
|
|
Packit |
534379 |
|
|
Packit |
534379 |
ssize_t total_written = eintr_write(fd, buf, count);
|
|
Packit |
534379 |
printf("count %ld \n", count);
|
|
Packit |
534379 |
printf("total_written %ld \n", total_written);
|
|
Packit |
534379 |
|
|
Packit |
534379 |
if (total_written == 0) {
|
|
Packit |
534379 |
close(fd);
|
|
Packit |
534379 |
printf("total_written faild \n");
|
|
Packit |
534379 |
return FPGA_INVALID_PARAM;
|
|
Packit |
534379 |
}
|
|
Packit |
534379 |
|
|
Packit |
534379 |
close(fd);
|
|
Packit |
534379 |
|
|
Packit |
534379 |
return res;
|
|
Packit |
534379 |
}
|
|
Packit |
534379 |
|
|
Packit |
534379 |
/**
|
|
Packit |
534379 |
* @test bmc
|
|
Packit |
534379 |
* @brief Tests: bmcGetLastResetCause,
|
|
Packit |
534379 |
*....................bmcGetFirmwareVersion
|
|
Packit |
534379 |
*....................bmcGetLastPowerdownCause functions
|
|
Packit |
534379 |
* @details Validates bmc reset cause ,power down cause
|
|
Packit |
534379 |
*.....................bmc version
|
|
Packit |
534379 |
*
|
|
Packit |
534379 |
*/
|
|
Packit |
534379 |
TEST_P(bmc_c_p, test_bmc_1) {
|
|
Packit |
534379 |
uint32_t version = 0;
|
|
Packit |
534379 |
char *string = NULL;
|
|
Packit |
534379 |
|
|
Packit |
534379 |
// Get Reset & Power down cause
|
|
Packit |
534379 |
|
|
Packit |
534379 |
EXPECT_EQ(bmcGetLastResetCause(tokens_[0], &string), FPGA_OK);
|
|
Packit |
534379 |
if (string) {
|
|
Packit |
534379 |
free(string);
|
|
Packit |
534379 |
string = NULL;
|
|
Packit |
534379 |
}
|
|
Packit |
534379 |
EXPECT_NE(bmcGetLastResetCause(tokens_[0], NULL), FPGA_OK);
|
|
Packit |
534379 |
|
|
Packit |
534379 |
EXPECT_EQ(bmcGetLastPowerdownCause(tokens_[0], &string), FPGA_OK);
|
|
Packit |
534379 |
if (string) {
|
|
Packit |
534379 |
free(string);
|
|
Packit |
534379 |
string = NULL;
|
|
Packit |
534379 |
}
|
|
Packit |
534379 |
EXPECT_NE(bmcGetLastPowerdownCause(tokens_[0], NULL), FPGA_OK);
|
|
Packit |
534379 |
|
|
Packit |
534379 |
// Get firmware version
|
|
Packit |
534379 |
EXPECT_EQ(bmcGetFirmwareVersion(tokens_[0], &version), FPGA_OK);
|
|
Packit |
534379 |
printf("bmc version=%d \n", version);
|
|
Packit |
534379 |
|
|
Packit |
534379 |
EXPECT_NE(bmcGetFirmwareVersion(tokens_[0], NULL), FPGA_OK);
|
|
Packit |
534379 |
}
|
|
Packit |
534379 |
|
|
Packit |
534379 |
/**
|
|
Packit |
534379 |
* @test bmc
|
|
Packit |
534379 |
* @brief Tests: bmcLoadSDRs,
|
|
Packit |
534379 |
*....................bmcReadSensorValues,
|
|
Packit |
534379 |
*....................bmcGetSDRDetails,
|
|
Packit |
534379 |
*....................bmcGetSensorReading,
|
|
Packit |
534379 |
*....................rawFromDouble,
|
|
Packit |
534379 |
*....................bmcDestroySensorValues,
|
|
Packit |
534379 |
*....................bmcDestroySDRs functions
|
|
Packit |
534379 |
* @details Validates bmc load SDR and Read sensor values
|
|
Packit |
534379 |
*
|
|
Packit |
534379 |
*/
|
|
Packit |
534379 |
TEST_P(bmc_c_p, test_bmc_2) {
|
|
Packit |
534379 |
bmc_sdr_handle sdrs = NULL;
|
|
Packit |
534379 |
bmc_values_handle values = NULL;
|
|
Packit |
534379 |
uint32_t num_sensors = 0;
|
|
Packit |
534379 |
uint32_t num_values = 0;
|
|
Packit |
534379 |
uint32_t i = 0;
|
|
Packit |
534379 |
uint32_t is_valid = 0;
|
|
Packit |
534379 |
double tmp = 0;
|
|
Packit |
534379 |
uint8_t raw = 0;
|
|
Packit |
534379 |
sdr_details details;
|
|
Packit |
534379 |
|
|
Packit |
534379 |
memset(&details, 0, sizeof(sdr_details));
|
|
Packit |
534379 |
|
|
Packit |
534379 |
// Load SDR
|
|
Packit |
534379 |
EXPECT_EQ(bmcLoadSDRs(tokens_[0], &sdrs, &num_sensors), FPGA_OK);
|
|
Packit |
534379 |
EXPECT_EQ(bmcReadSensorValues(sdrs, &values, &num_values), FPGA_OK);
|
|
Packit |
534379 |
|
|
Packit |
534379 |
// Read sensor details & value
|
|
Packit |
534379 |
for (i = 0; i < num_sensors; i++) {
|
|
Packit |
534379 |
EXPECT_EQ(bmcGetSDRDetails(values, i, &details), FPGA_OK);
|
|
Packit |
534379 |
EXPECT_EQ(bmcGetSensorReading(values, i, &is_valid, &tmp), FPGA_OK);
|
|
Packit |
534379 |
|
|
Packit |
534379 |
Values detail;
|
|
Packit |
534379 |
memset(&detail, 0, sizeof(detail));
|
|
Packit |
534379 |
EXPECT_EQ(rawFromDouble(&detail, tmp, &raw), FPGA_OK);
|
|
Packit |
534379 |
|
|
Packit |
534379 |
detail.result_exp = 2;
|
|
Packit |
534379 |
EXPECT_EQ(rawFromDouble(&detail, tmp, &raw), FPGA_OK);
|
|
Packit |
534379 |
|
|
Packit |
534379 |
detail.result_exp = -2;
|
|
Packit |
534379 |
EXPECT_EQ(rawFromDouble(&detail, tmp, &raw), FPGA_OK);
|
|
Packit |
534379 |
}
|
|
Packit |
534379 |
|
|
Packit |
534379 |
// Destroy Sensor values & SDR
|
|
Packit |
534379 |
EXPECT_EQ(bmcDestroySensorValues(&values), FPGA_OK);
|
|
Packit |
534379 |
EXPECT_EQ(bmcDestroySDRs(&sdrs), FPGA_OK);
|
|
Packit |
534379 |
}
|
|
Packit |
534379 |
|
|
Packit |
534379 |
/**
|
|
Packit |
534379 |
* @test bmc
|
|
Packit |
534379 |
* @brief Tests: bmcThresholdsTripped,
|
|
Packit |
534379 |
*....................bmcDestroyTripped functions
|
|
Packit |
534379 |
* @details Validates bmc threshold trip
|
|
Packit |
534379 |
*
|
|
Packit |
534379 |
*/
|
|
Packit |
534379 |
TEST_P(bmc_c_p, test_bmc_3) {
|
|
Packit |
534379 |
bmc_sdr_handle sdrs = NULL;
|
|
Packit |
534379 |
bmc_values_handle values = NULL;
|
|
Packit |
534379 |
uint32_t num_sensors = 0;
|
|
Packit |
534379 |
uint32_t num_values = 0;
|
|
Packit |
534379 |
tripped_thresholds *tripped = NULL;
|
|
Packit |
534379 |
uint32_t num_tripped = 0;
|
|
Packit |
534379 |
sdr_details details;
|
|
Packit |
534379 |
|
|
Packit |
534379 |
memset(&details, 0, sizeof(details));
|
|
Packit |
534379 |
// Load SDR
|
|
Packit |
534379 |
EXPECT_EQ(bmcLoadSDRs(tokens_[0], &sdrs, &num_sensors), FPGA_OK);
|
|
Packit |
534379 |
EXPECT_EQ(bmcReadSensorValues(sdrs, &values, &num_values), FPGA_OK);
|
|
Packit |
534379 |
|
|
Packit |
534379 |
// Get threshold trip point
|
|
Packit |
534379 |
EXPECT_EQ(bmcThresholdsTripped(values, &tripped, &num_tripped), FPGA_OK);
|
|
Packit |
534379 |
printf("num_tripped = %d \n", num_tripped);
|
|
Packit |
534379 |
|
|
Packit |
534379 |
struct _bmc_values *vals = (struct _bmc_values *)values;
|
|
Packit |
534379 |
for (uint32_t i = 0; i < vals->num_records; i++) {
|
|
Packit |
534379 |
vals->contents[i].threshold_events._value = 1;
|
|
Packit |
534379 |
}
|
|
Packit |
534379 |
|
|
Packit |
534379 |
// Get threshold trip point
|
|
Packit |
534379 |
EXPECT_EQ(bmcThresholdsTripped(values, &tripped, &num_tripped), FPGA_OK);
|
|
Packit |
534379 |
printf("num_tripped = %d \n", num_tripped);
|
|
Packit |
534379 |
|
|
Packit |
534379 |
// Destroy Threshold
|
|
Packit |
534379 |
EXPECT_EQ(bmcDestroyTripped(tripped), FPGA_OK);
|
|
Packit |
534379 |
|
|
Packit |
534379 |
EXPECT_EQ(bmcDestroySensorValues(&values), FPGA_OK);
|
|
Packit |
534379 |
EXPECT_EQ(bmcDestroySDRs(&sdrs), FPGA_OK);
|
|
Packit |
534379 |
}
|
|
Packit |
534379 |
|
|
Packit |
534379 |
/**
|
|
Packit |
534379 |
* @test bmc
|
|
Packit |
534379 |
* @brief Tests: bmcSetHWThresholds,
|
|
Packit |
534379 |
*..................._bmcGetThreshold
|
|
Packit |
534379 |
*..................._bmcGetThreshold
|
|
Packit |
534379 |
*................. .fill_set_request fucntions
|
|
Packit |
534379 |
* @details Validates bmc set and get thresholds
|
|
Packit |
534379 |
*
|
|
Packit |
534379 |
*/
|
|
Packit |
534379 |
TEST_P(bmc_c_p, test_bmc_4) {
|
|
Packit |
534379 |
bmc_sdr_handle sdrs = NULL;
|
|
Packit |
534379 |
bmc_values_handle values = NULL;
|
|
Packit |
534379 |
uint32_t num_sensors = 0;
|
|
Packit |
534379 |
uint32_t num_values = 0;
|
|
Packit |
534379 |
sdr_details details;
|
|
Packit |
534379 |
|
|
Packit |
534379 |
memset(&details, 0, sizeof(details));
|
|
Packit |
534379 |
// Load SDR
|
|
Packit |
534379 |
EXPECT_EQ(bmcLoadSDRs(tokens_[0], &sdrs, &num_sensors), FPGA_OK);
|
|
Packit |
534379 |
EXPECT_EQ(bmcReadSensorValues(sdrs, &values, &num_values), FPGA_OK);
|
|
Packit |
534379 |
|
|
Packit |
534379 |
threshold_list thresh;
|
|
Packit |
534379 |
|
|
Packit |
534379 |
memset(&thresh, 0, sizeof(thresh));
|
|
Packit |
534379 |
thresh.upper_nr_thresh.is_valid = 1;
|
|
Packit |
534379 |
thresh.upper_nr_thresh.value = 20;
|
|
Packit |
534379 |
|
|
Packit |
534379 |
EXPECT_NE(bmcSetHWThresholds(sdrs, 1, &thresh), FPGA_OK);
|
|
Packit |
534379 |
|
|
Packit |
534379 |
// Destroy sensor value and SDR
|
|
Packit |
534379 |
EXPECT_EQ(bmcDestroySensorValues(&values), FPGA_OK);
|
|
Packit |
534379 |
EXPECT_EQ(bmcDestroySDRs(&sdrs), FPGA_OK);
|
|
Packit |
534379 |
|
|
Packit |
534379 |
// Set & Get threshold
|
|
Packit |
534379 |
bmc_get_thresh_response thres;
|
|
Packit |
534379 |
_bmcGetThreshold(1, 1, &thres);
|
|
Packit |
534379 |
|
|
Packit |
534379 |
bmc_set_thresh_request req;
|
|
Packit |
534379 |
_bmcSetThreshold(1, 1, &req;;
|
|
Packit |
534379 |
|
|
Packit |
534379 |
Values vals;
|
|
Packit |
534379 |
memset(&vals, 0, sizeof(vals));
|
|
Packit |
534379 |
fill_set_request(&vals, &thresh, &req;;
|
|
Packit |
534379 |
|
|
Packit |
534379 |
thresh.upper_nr_thresh.is_valid = true;
|
|
Packit |
534379 |
thresh.upper_c_thresh.is_valid = true;
|
|
Packit |
534379 |
thresh.upper_nc_thresh.is_valid = true;
|
|
Packit |
534379 |
thresh.lower_nr_thresh.is_valid = true;
|
|
Packit |
534379 |
thresh.lower_c_thresh.is_valid = true;
|
|
Packit |
534379 |
thresh.lower_nc_thresh.is_valid = true;
|
|
Packit |
534379 |
|
|
Packit |
534379 |
fill_set_request(&vals, &thresh, &req;;
|
|
Packit |
534379 |
|
|
Packit |
534379 |
thresh.upper_nr_thresh.is_valid = false;
|
|
Packit |
534379 |
thresh.upper_c_thresh.is_valid = false;
|
|
Packit |
534379 |
thresh.upper_nc_thresh.is_valid = false;
|
|
Packit |
534379 |
thresh.lower_nr_thresh.is_valid = false;
|
|
Packit |
534379 |
thresh.lower_c_thresh.is_valid = false;
|
|
Packit |
534379 |
thresh.lower_nc_thresh.is_valid = false;
|
|
Packit |
534379 |
|
|
Packit |
534379 |
fill_set_request(&vals, &thresh, &req;;
|
|
Packit |
534379 |
|
|
Packit |
534379 |
thresh.upper_nr_thresh.is_valid = false;
|
|
Packit |
534379 |
fill_set_request(&vals, &thresh, &req;;
|
|
Packit |
534379 |
}
|
|
Packit |
534379 |
|
|
Packit |
534379 |
/**
|
|
Packit |
534379 |
* @test bmc
|
|
Packit |
534379 |
* @brief Tests: bmcGetLastResetCause
|
|
Packit |
534379 |
* @details Validates reset cause
|
|
Packit |
534379 |
*
|
|
Packit |
534379 |
*/
|
|
Packit |
534379 |
TEST_P(bmc_c_p, test_bmc_5) {
|
|
Packit |
534379 |
uint32_t tot_bytes_ret = 0;
|
|
Packit |
534379 |
char *string = NULL;
|
|
Packit |
534379 |
void *buf = NULL;
|
|
Packit |
534379 |
|
|
Packit |
534379 |
read_sysfs_file(
|
|
Packit |
534379 |
tokens_[0],
|
|
Packit |
534379 |
(const char *)"/sys/class/fpga/intel-fpga-dev.0/intel-fpga-fme.0/",
|
|
Packit |
534379 |
(void **)&buf, &tot_bytes_ret);
|
|
Packit |
534379 |
|
|
Packit |
534379 |
// write to reset cause
|
|
Packit |
534379 |
reset_cause reset;
|
|
Packit |
534379 |
memset(&reset, 0, sizeof(reset_cause));
|
|
Packit |
534379 |
reset.completion_code = 1;
|
|
Packit |
534379 |
write_sysfs_file(tokens_[0], SYSFS_RESET_FILE, (void *)(&reset),
|
|
Packit |
534379 |
sizeof(reset_cause));
|
|
Packit |
534379 |
|
|
Packit |
534379 |
EXPECT_NE(bmcGetLastResetCause(tokens_[0], &string), FPGA_OK);
|
|
Packit |
534379 |
printf("string= %s", string);
|
|
Packit |
534379 |
if (string) {
|
|
Packit |
534379 |
free(string);
|
|
Packit |
534379 |
string = NULL;
|
|
Packit |
534379 |
}
|
|
Packit |
534379 |
|
|
Packit |
534379 |
reset.completion_code = 0;
|
|
Packit |
534379 |
reset.reset_cause = CHIP_RESET_CAUSE_EXTRST;
|
|
Packit |
534379 |
write_sysfs_file(tokens_[0], SYSFS_RESET_FILE, (void *)(&reset),
|
|
Packit |
534379 |
sizeof(reset_cause));
|
|
Packit |
534379 |
EXPECT_EQ(bmcGetLastResetCause(tokens_[0], &string), FPGA_OK);
|
|
Packit |
534379 |
printf("string= %s", string);
|
|
Packit |
534379 |
if (string) {
|
|
Packit |
534379 |
free(string);
|
|
Packit |
534379 |
string = NULL;
|
|
Packit |
534379 |
}
|
|
Packit |
534379 |
|
|
Packit |
534379 |
reset.reset_cause = CHIP_RESET_CAUSE_BOD_IO;
|
|
Packit |
534379 |
write_sysfs_file(tokens_[0], SYSFS_RESET_FILE, (void *)(&reset),
|
|
Packit |
534379 |
sizeof(reset_cause));
|
|
Packit |
534379 |
EXPECT_EQ(bmcGetLastResetCause(tokens_[0], &string), FPGA_OK);
|
|
Packit |
534379 |
printf("string= %s", string);
|
|
Packit |
534379 |
if (string) {
|
|
Packit |
534379 |
free(string);
|
|
Packit |
534379 |
string = NULL;
|
|
Packit |
534379 |
}
|
|
Packit |
534379 |
|
|
Packit |
534379 |
reset.reset_cause = CHIP_RESET_CAUSE_OCD;
|
|
Packit |
534379 |
write_sysfs_file(tokens_[0], SYSFS_RESET_FILE, (void *)(&reset),
|
|
Packit |
534379 |
sizeof(reset_cause));
|
|
Packit |
534379 |
EXPECT_EQ(bmcGetLastResetCause(tokens_[0], &string), FPGA_OK);
|
|
Packit |
534379 |
printf("string= %s", string);
|
|
Packit |
534379 |
if (string) {
|
|
Packit |
534379 |
free(string);
|
|
Packit |
534379 |
string = NULL;
|
|
Packit |
534379 |
}
|
|
Packit |
534379 |
|
|
Packit |
534379 |
reset.reset_cause = CHIP_RESET_CAUSE_POR;
|
|
Packit |
534379 |
write_sysfs_file(tokens_[0], SYSFS_RESET_FILE, (void *)(&reset),
|
|
Packit |
534379 |
sizeof(reset_cause));
|
|
Packit |
534379 |
EXPECT_EQ(bmcGetLastResetCause(tokens_[0], &string), FPGA_OK);
|
|
Packit |
534379 |
printf("string= %s", string);
|
|
Packit |
534379 |
if (string) {
|
|
Packit |
534379 |
free(string);
|
|
Packit |
534379 |
string = NULL;
|
|
Packit |
534379 |
}
|
|
Packit |
534379 |
|
|
Packit |
534379 |
reset.reset_cause = CHIP_RESET_CAUSE_SOFT;
|
|
Packit |
534379 |
write_sysfs_file(tokens_[0], SYSFS_RESET_FILE, (void *)(&reset),
|
|
Packit |
534379 |
sizeof(reset_cause));
|
|
Packit |
534379 |
EXPECT_EQ(bmcGetLastResetCause(tokens_[0], &string), FPGA_OK);
|
|
Packit |
534379 |
printf("string= %s", string);
|
|
Packit |
534379 |
if (string) {
|
|
Packit |
534379 |
free(string);
|
|
Packit |
534379 |
string = NULL;
|
|
Packit |
534379 |
}
|
|
Packit |
534379 |
|
|
Packit |
534379 |
reset.reset_cause = CHIP_RESET_CAUSE_SPIKE;
|
|
Packit |
534379 |
write_sysfs_file(tokens_[0], SYSFS_RESET_FILE, (void *)(&reset),
|
|
Packit |
534379 |
sizeof(reset_cause));
|
|
Packit |
534379 |
EXPECT_EQ(bmcGetLastResetCause(tokens_[0], &string), FPGA_OK);
|
|
Packit |
534379 |
printf("string= %s", string);
|
|
Packit |
534379 |
if (string) {
|
|
Packit |
534379 |
free(string);
|
|
Packit |
534379 |
string = NULL;
|
|
Packit |
534379 |
}
|
|
Packit |
534379 |
|
|
Packit |
534379 |
reset.reset_cause = CHIP_RESET_CAUSE_WDT;
|
|
Packit |
534379 |
write_sysfs_file(tokens_[0], SYSFS_RESET_FILE, (void *)(&reset),
|
|
Packit |
534379 |
sizeof(reset_cause));
|
|
Packit |
534379 |
EXPECT_EQ(bmcGetLastResetCause(tokens_[0], &string), FPGA_OK);
|
|
Packit |
534379 |
printf("string= %s", string);
|
|
Packit |
534379 |
if (string) {
|
|
Packit |
534379 |
free(string);
|
|
Packit |
534379 |
string = NULL;
|
|
Packit |
534379 |
}
|
|
Packit |
534379 |
}
|
|
Packit |
534379 |
|
|
Packit |
534379 |
/**
|
|
Packit |
534379 |
* @test bmc
|
|
Packit |
534379 |
* @brief Tests: bmcGetLastPowerdownCause
|
|
Packit |
534379 |
*...................bmcGetFirmwareVersion functions
|
|
Packit |
534379 |
* @details Validates power down cause & FW version
|
|
Packit |
534379 |
*
|
|
Packit |
534379 |
*/
|
|
Packit |
534379 |
TEST_P(bmc_c_p, test_bmc_6) {
|
|
Packit |
534379 |
powerdown_cause reset;
|
|
Packit |
534379 |
char *string = NULL;
|
|
Packit |
534379 |
device_id dev_id;
|
|
Packit |
534379 |
|
|
Packit |
534379 |
memset(&reset, 0, sizeof(powerdown_cause));
|
|
Packit |
534379 |
memset(&dev_id, 0, sizeof(device_id));
|
|
Packit |
534379 |
reset.completion_code = 1;
|
|
Packit |
534379 |
write_sysfs_file(tokens_[0], SYSFS_PWRDN_FILE, (void *)(&reset),
|
|
Packit |
534379 |
sizeof(powerdown_cause));
|
|
Packit |
534379 |
EXPECT_NE(bmcGetLastPowerdownCause(tokens_[0], &string), FPGA_OK);
|
|
Packit |
534379 |
if (string) {
|
|
Packit |
534379 |
printf("string= %s", string);
|
|
Packit |
534379 |
free(string);
|
|
Packit |
534379 |
string = NULL;
|
|
Packit |
534379 |
}
|
|
Packit |
534379 |
|
|
Packit |
534379 |
dev_id.completion_code = 1;
|
|
Packit |
534379 |
uint32_t version;
|
|
Packit |
534379 |
write_sysfs_file(tokens_[0], SYSFS_DEVID_FILE, (void *)(&dev_id),
|
|
Packit |
534379 |
sizeof(device_id));
|
|
Packit |
534379 |
EXPECT_NE(bmcGetFirmwareVersion(tokens_[0], &version), FPGA_OK);
|
|
Packit |
534379 |
}
|
|
Packit |
534379 |
|
|
Packit |
534379 |
/**
|
|
Packit |
534379 |
* @test bmc
|
|
Packit |
534379 |
* @brief Tests: bmc_build_values
|
|
Packit |
534379 |
* @details Validates build values
|
|
Packit |
534379 |
*
|
|
Packit |
534379 |
*/
|
|
Packit |
534379 |
TEST_P(bmc_c_p, test_bmc_7) {
|
|
Packit |
534379 |
sensor_reading reading;
|
|
Packit |
534379 |
sdr_header header;
|
|
Packit |
534379 |
sdr_key key;
|
|
Packit |
534379 |
sdr_body body;
|
|
Packit |
534379 |
Values *vals = NULL;
|
|
Packit |
534379 |
|
|
Packit |
534379 |
memset(&reading, 0, sizeof(sensor_reading));
|
|
Packit |
534379 |
memset(&key, 0, sizeof(sdr_key));
|
|
Packit |
534379 |
memset(&header, 0, sizeof(sdr_header));
|
|
Packit |
534379 |
memset(&body, 0, sizeof(sdr_body));
|
|
Packit |
534379 |
|
|
Packit |
534379 |
// build bmc values
|
|
Packit |
534379 |
reading.sensor_validity.sensor_state.sensor_scanning_disabled = true;
|
|
Packit |
534379 |
vals = bmc_build_values(&reading, &header, &key, &body);
|
|
Packit |
534379 |
if (vals) {
|
|
Packit |
534379 |
free(vals->name);
|
|
Packit |
534379 |
free(vals);
|
|
Packit |
534379 |
vals = NULL;
|
|
Packit |
534379 |
}
|
|
Packit |
534379 |
|
|
Packit |
534379 |
reading.sensor_validity.sensor_state.sensor_scanning_disabled = false;
|
|
Packit |
534379 |
reading.sensor_validity.sensor_state.event_messages_disabled = true;
|
|
Packit |
534379 |
vals = bmc_build_values(&reading, &header, &key, &body);
|
|
Packit |
534379 |
if (vals) {
|
|
Packit |
534379 |
free(vals->name);
|
|
Packit |
534379 |
free(vals);
|
|
Packit |
534379 |
vals = NULL;
|
|
Packit |
534379 |
}
|
|
Packit |
534379 |
|
|
Packit |
534379 |
reading.sensor_validity.sensor_state.sensor_scanning_disabled = false;
|
|
Packit |
534379 |
reading.sensor_validity.sensor_state.event_messages_disabled = false;
|
|
Packit |
534379 |
vals = bmc_build_values(&reading, &header, &key, &body);
|
|
Packit |
534379 |
if (vals) {
|
|
Packit |
534379 |
free(vals->name);
|
|
Packit |
534379 |
free(vals);
|
|
Packit |
534379 |
vals = NULL;
|
|
Packit |
534379 |
}
|
|
Packit |
534379 |
|
|
Packit |
534379 |
body.id_string_type_length_code.bits.format = ASCII_8;
|
|
Packit |
534379 |
body.id_string_type_length_code.bits.len_in_characters = 0;
|
|
Packit |
534379 |
vals = bmc_build_values(&reading, &header, &key, &body);
|
|
Packit |
534379 |
if (vals) {
|
|
Packit |
534379 |
free(vals->name);
|
|
Packit |
534379 |
free(vals);
|
|
Packit |
534379 |
vals = NULL;
|
|
Packit |
534379 |
}
|
|
Packit |
534379 |
|
|
Packit |
534379 |
body.sensor_units_1.bits.analog_data_format = 0x3;
|
|
Packit |
534379 |
vals = bmc_build_values(&reading, &header, &key, &body);
|
|
Packit |
534379 |
if (vals) {
|
|
Packit |
534379 |
free(vals->name);
|
|
Packit |
534379 |
free(vals);
|
|
Packit |
534379 |
vals = NULL;
|
|
Packit |
534379 |
}
|
|
Packit |
534379 |
|
|
Packit |
534379 |
body.sensor_units_2 = 0xff;
|
|
Packit |
534379 |
vals = bmc_build_values(&reading, &header, &key, &body);
|
|
Packit |
534379 |
if (vals) {
|
|
Packit |
534379 |
free(vals->name);
|
|
Packit |
534379 |
free(vals);
|
|
Packit |
534379 |
vals = NULL;
|
|
Packit |
534379 |
}
|
|
Packit |
534379 |
}
|
|
Packit |
534379 |
|
|
Packit |
534379 |
INSTANTIATE_TEST_CASE_P(bmc_c, bmc_c_p,
|
|
Packit |
534379 |
::testing::ValuesIn(test_platform::mock_platforms({"dcp-rc"})));
|