|
Packit |
534379 |
// Copyright(c) 2019-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 |
#include "libbitstream/bitstream.h"
|
|
Packit |
534379 |
#include "libbitstream/metadatav1.h"
|
|
Packit |
534379 |
|
|
Packit |
534379 |
extern "C" {
|
|
Packit |
534379 |
|
|
Packit |
534379 |
fpga_result opae_bitstream_parse_accelerator_cluster_v1(json_object *j_cluster,
|
|
Packit |
534379 |
opae_metadata_accelerator_cluster_v1 *cluster);
|
|
Packit |
534379 |
|
|
Packit |
534379 |
fpga_result opae_bitstream_parse_afu_image_v1(json_object *j_afu_image,
|
|
Packit |
534379 |
opae_metadata_afu_image_v1 *img,
|
|
Packit |
534379 |
fpga_guid pr_interface_id);
|
|
Packit |
534379 |
|
|
Packit |
534379 |
}
|
|
Packit |
534379 |
|
|
Packit |
534379 |
#include <config.h>
|
|
Packit |
534379 |
#include <opae/fpga.h>
|
|
Packit |
534379 |
|
|
Packit |
534379 |
#include "gtest/gtest.h"
|
|
Packit |
534379 |
#include "mock/test_system.h"
|
|
Packit |
534379 |
|
|
Packit |
534379 |
using namespace opae::testing;
|
|
Packit |
534379 |
|
|
Packit |
534379 |
class metadatav1_c_p : public ::testing::TestWithParam<std::string> {
|
|
Packit |
534379 |
protected:
|
|
Packit |
534379 |
|
|
Packit |
534379 |
virtual void SetUp() override {
|
|
Packit |
534379 |
std::string platform_key = GetParam();
|
|
Packit |
534379 |
ASSERT_TRUE(test_platform::exists(platform_key));
|
|
Packit |
534379 |
platform_ = test_platform::get(platform_key);
|
|
Packit |
534379 |
system_ = test_system::instance();
|
|
Packit |
534379 |
system_->initialize();
|
|
Packit |
534379 |
system_->prepare_syfs(platform_);
|
|
Packit |
534379 |
|
|
Packit |
534379 |
j_root_ = nullptr;
|
|
Packit |
534379 |
}
|
|
Packit |
534379 |
|
|
Packit |
534379 |
virtual void TearDown() override {
|
|
Packit |
534379 |
|
|
Packit |
534379 |
if (j_root_)
|
|
Packit |
534379 |
json_object_put(j_root_);
|
|
Packit |
534379 |
|
|
Packit |
534379 |
system_->finalize();
|
|
Packit |
534379 |
}
|
|
Packit |
534379 |
|
|
Packit |
534379 |
json_object *parse(const char *json_str)
|
|
Packit |
534379 |
{
|
|
Packit |
534379 |
enum json_tokener_error j_err = json_tokener_success;
|
|
Packit |
534379 |
return j_root_ = json_tokener_parse_verbose(json_str, &j_err);
|
|
Packit |
534379 |
}
|
|
Packit |
534379 |
|
|
Packit |
534379 |
json_object *j_root_;
|
|
Packit |
534379 |
test_platform platform_;
|
|
Packit |
534379 |
test_system *system_;
|
|
Packit |
534379 |
};
|
|
Packit |
534379 |
|
|
Packit |
534379 |
/**
|
|
Packit |
534379 |
* @test cluster_err0
|
|
Packit |
534379 |
* @brief Test: opae_bitstream_parse_accelerator_cluster_v1
|
|
Packit |
534379 |
* @details If the given json_object contains no,
|
|
Packit |
534379 |
* "total-contexts" key,
|
|
Packit |
534379 |
* the fn returns FPGA_EXCEPTION.
|
|
Packit |
534379 |
*/
|
|
Packit |
534379 |
TEST_P(metadatav1_c_p, cluster_err0) {
|
|
Packit |
534379 |
const char *mdata =
|
|
Packit |
534379 |
R"mdata({
|
|
Packit |
534379 |
"name": "nlb_400",
|
|
Packit |
534379 |
"accelerator-type-uuid": "d8424dc4-a4a3-c413-f89e-433683f9040b"
|
|
Packit |
534379 |
})mdata";
|
|
Packit |
534379 |
json_object *j_cluster;
|
|
Packit |
534379 |
|
|
Packit |
534379 |
j_cluster = parse(mdata);
|
|
Packit |
534379 |
ASSERT_NE(j_cluster, nullptr);
|
|
Packit |
534379 |
|
|
Packit |
534379 |
opae_metadata_accelerator_cluster_v1 cluster;
|
|
Packit |
534379 |
memset(&cluster, 0, sizeof(cluster));
|
|
Packit |
534379 |
|
|
Packit |
534379 |
EXPECT_EQ(opae_bitstream_parse_accelerator_cluster_v1(j_cluster,
|
|
Packit |
534379 |
&cluster),
|
|
Packit |
534379 |
FPGA_EXCEPTION);
|
|
Packit |
534379 |
|
|
Packit |
534379 |
EXPECT_EQ(cluster.total_contexts, 0);
|
|
Packit |
534379 |
EXPECT_EQ(cluster.name, nullptr);
|
|
Packit |
534379 |
EXPECT_EQ(cluster.accelerator_type_uuid, nullptr);
|
|
Packit |
534379 |
}
|
|
Packit |
534379 |
|
|
Packit |
534379 |
/**
|
|
Packit |
534379 |
* @test cluster_err1
|
|
Packit |
534379 |
* @brief Test: opae_bitstream_parse_accelerator_cluster_v1
|
|
Packit |
534379 |
* @details If the given json_object contains no,
|
|
Packit |
534379 |
* "name" key,
|
|
Packit |
534379 |
* the fn returns FPGA_EXCEPTION.
|
|
Packit |
534379 |
*/
|
|
Packit |
534379 |
TEST_P(metadatav1_c_p, cluster_err1) {
|
|
Packit |
534379 |
const char *mdata =
|
|
Packit |
534379 |
R"mdata({
|
|
Packit |
534379 |
"total-contexts": 1,
|
|
Packit |
534379 |
"accelerator-type-uuid": "d8424dc4-a4a3-c413-f89e-433683f9040b"
|
|
Packit |
534379 |
})mdata";
|
|
Packit |
534379 |
json_object *j_cluster;
|
|
Packit |
534379 |
|
|
Packit |
534379 |
j_cluster = parse(mdata);
|
|
Packit |
534379 |
ASSERT_NE(j_cluster, nullptr);
|
|
Packit |
534379 |
|
|
Packit |
534379 |
opae_metadata_accelerator_cluster_v1 cluster;
|
|
Packit |
534379 |
memset(&cluster, 0, sizeof(cluster));
|
|
Packit |
534379 |
|
|
Packit |
534379 |
EXPECT_EQ(opae_bitstream_parse_accelerator_cluster_v1(j_cluster,
|
|
Packit |
534379 |
&cluster),
|
|
Packit |
534379 |
FPGA_EXCEPTION);
|
|
Packit |
534379 |
|
|
Packit |
534379 |
EXPECT_EQ(cluster.total_contexts, 1);
|
|
Packit |
534379 |
EXPECT_EQ(cluster.name, nullptr);
|
|
Packit |
534379 |
EXPECT_EQ(cluster.accelerator_type_uuid, nullptr);
|
|
Packit |
534379 |
}
|
|
Packit |
534379 |
|
|
Packit |
534379 |
/**
|
|
Packit |
534379 |
* @test cluster_err2
|
|
Packit |
534379 |
* @brief Test: opae_bitstream_parse_accelerator_cluster_v1
|
|
Packit |
534379 |
* @details If the given json_object contains no,
|
|
Packit |
534379 |
* "accelerator-type-uuid" key,
|
|
Packit |
534379 |
* the fn returns FPGA_EXCEPTION.
|
|
Packit |
534379 |
*/
|
|
Packit |
534379 |
TEST_P(metadatav1_c_p, cluster_err2) {
|
|
Packit |
534379 |
const char *mdata =
|
|
Packit |
534379 |
R"mdata({
|
|
Packit |
534379 |
"total-contexts": 1,
|
|
Packit |
534379 |
"name": "nlb_400"
|
|
Packit |
534379 |
})mdata";
|
|
Packit |
534379 |
json_object *j_cluster;
|
|
Packit |
534379 |
|
|
Packit |
534379 |
j_cluster = parse(mdata);
|
|
Packit |
534379 |
ASSERT_NE(j_cluster, nullptr);
|
|
Packit |
534379 |
|
|
Packit |
534379 |
opae_metadata_accelerator_cluster_v1 cluster;
|
|
Packit |
534379 |
memset(&cluster, 0, sizeof(cluster));
|
|
Packit |
534379 |
|
|
Packit |
534379 |
EXPECT_EQ(opae_bitstream_parse_accelerator_cluster_v1(j_cluster,
|
|
Packit |
534379 |
&cluster),
|
|
Packit |
534379 |
FPGA_EXCEPTION);
|
|
Packit |
534379 |
|
|
Packit |
534379 |
EXPECT_EQ(cluster.total_contexts, 1);
|
|
Packit |
534379 |
EXPECT_EQ(cluster.name, nullptr);
|
|
Packit |
534379 |
EXPECT_EQ(cluster.accelerator_type_uuid, nullptr);
|
|
Packit |
534379 |
}
|
|
Packit |
534379 |
|
|
Packit |
534379 |
/**
|
|
Packit |
534379 |
* @test image_err0
|
|
Packit |
534379 |
* @brief Test: opae_bitstream_parse_afu_image_v1
|
|
Packit |
534379 |
* @details If the given json_object contains no,
|
|
Packit |
534379 |
* "clock-frequency-high" key,
|
|
Packit |
534379 |
* the fn returns FPGA_OK.
|
|
Packit |
534379 |
*/
|
|
Packit |
534379 |
TEST_P(metadatav1_c_p, image_err0) {
|
|
Packit |
534379 |
const char *mdata =
|
|
Packit |
534379 |
R"mdata({
|
|
Packit |
534379 |
"clock-frequency-low": 156,
|
|
Packit |
534379 |
"power": 50,
|
|
Packit |
534379 |
"interface-uuid": "01234567-89AB-CDEF-0123-456789ABCDEF",
|
|
Packit |
534379 |
"magic-no": 488605312,
|
|
Packit |
534379 |
|
|
Packit |
534379 |
"accelerator-clusters": [
|
|
Packit |
534379 |
{
|
|
Packit |
534379 |
"total-contexts": 1,
|
|
Packit |
534379 |
"name": "nlb_400",
|
|
Packit |
534379 |
"accelerator-type-uuid": "d8424dc4-a4a3-c413-f89e-433683f9040b"
|
|
Packit |
534379 |
}
|
|
Packit |
534379 |
]
|
|
Packit |
534379 |
})mdata";
|
|
Packit |
534379 |
json_object *j_afu_image;
|
|
Packit |
534379 |
|
|
Packit |
534379 |
j_afu_image = parse(mdata);
|
|
Packit |
534379 |
ASSERT_NE(j_afu_image, nullptr);
|
|
Packit |
534379 |
|
|
Packit |
534379 |
opae_metadata_afu_image_v1 img;
|
|
Packit |
534379 |
memset(&img, 0, sizeof(img));
|
|
Packit |
534379 |
|
|
Packit |
534379 |
fpga_guid ifc_id;
|
|
Packit |
534379 |
|
|
Packit |
534379 |
EXPECT_EQ(opae_bitstream_parse_afu_image_v1(j_afu_image,
|
|
Packit |
534379 |
&img,
|
|
Packit |
534379 |
ifc_id),
|
|
Packit |
534379 |
FPGA_OK);
|
|
Packit |
534379 |
|
|
Packit |
534379 |
free(img.interface_uuid);
|
|
Packit |
534379 |
free(img.accelerator_clusters[0].name);
|
|
Packit |
534379 |
free(img.accelerator_clusters[0].accelerator_type_uuid);
|
|
Packit |
534379 |
free(img.accelerator_clusters);
|
|
Packit |
534379 |
}
|
|
Packit |
534379 |
|
|
Packit |
534379 |
/**
|
|
Packit |
534379 |
* @test image_err1
|
|
Packit |
534379 |
* @brief Test: opae_bitstream_parse_afu_image_v1
|
|
Packit |
534379 |
* @details If the given json_object contains no,
|
|
Packit |
534379 |
* "clock-frequency-low" key,
|
|
Packit |
534379 |
* the fn returns FPGA_OK.
|
|
Packit |
534379 |
*/
|
|
Packit |
534379 |
TEST_P(metadatav1_c_p, image_err1) {
|
|
Packit |
534379 |
const char *mdata =
|
|
Packit |
534379 |
R"mdata({
|
|
Packit |
534379 |
"clock-frequency-high": 31.2,
|
|
Packit |
534379 |
"power": 50,
|
|
Packit |
534379 |
"interface-uuid": "01234567-89AB-CDEF-0123-456789ABCDEF",
|
|
Packit |
534379 |
"magic-no": 488605312,
|
|
Packit |
534379 |
|
|
Packit |
534379 |
"accelerator-clusters": [
|
|
Packit |
534379 |
{
|
|
Packit |
534379 |
"total-contexts": 1,
|
|
Packit |
534379 |
"name": "nlb_400",
|
|
Packit |
534379 |
"accelerator-type-uuid": "d8424dc4-a4a3-c413-f89e-433683f9040b"
|
|
Packit |
534379 |
}
|
|
Packit |
534379 |
]
|
|
Packit |
534379 |
})mdata";
|
|
Packit |
534379 |
json_object *j_afu_image;
|
|
Packit |
534379 |
|
|
Packit |
534379 |
j_afu_image = parse(mdata);
|
|
Packit |
534379 |
ASSERT_NE(j_afu_image, nullptr);
|
|
Packit |
534379 |
|
|
Packit |
534379 |
opae_metadata_afu_image_v1 img;
|
|
Packit |
534379 |
memset(&img, 0, sizeof(img));
|
|
Packit |
534379 |
|
|
Packit |
534379 |
fpga_guid ifc_id;
|
|
Packit |
534379 |
|
|
Packit |
534379 |
EXPECT_EQ(opae_bitstream_parse_afu_image_v1(j_afu_image,
|
|
Packit |
534379 |
&img,
|
|
Packit |
534379 |
ifc_id),
|
|
Packit |
534379 |
FPGA_OK);
|
|
Packit |
534379 |
|
|
Packit |
534379 |
EXPECT_EQ(img.clock_frequency_high, 31.2);
|
|
Packit |
534379 |
EXPECT_EQ(img.power, 50.0);
|
|
Packit |
534379 |
|
|
Packit |
534379 |
free(img.interface_uuid);
|
|
Packit |
534379 |
free(img.accelerator_clusters[0].name);
|
|
Packit |
534379 |
free(img.accelerator_clusters[0].accelerator_type_uuid);
|
|
Packit |
534379 |
free(img.accelerator_clusters);
|
|
Packit |
534379 |
}
|
|
Packit |
534379 |
|
|
Packit |
534379 |
/**
|
|
Packit |
534379 |
* @test image_err2
|
|
Packit |
534379 |
* @brief Test: opae_bitstream_parse_afu_image_v1
|
|
Packit |
534379 |
* @details If the given json_object contains no,
|
|
Packit |
534379 |
* "power" key,
|
|
Packit |
534379 |
* the fn returns FPGA_OK.
|
|
Packit |
534379 |
*/
|
|
Packit |
534379 |
TEST_P(metadatav1_c_p, image_err2) {
|
|
Packit |
534379 |
const char *mdata =
|
|
Packit |
534379 |
R"mdata({
|
|
Packit |
534379 |
"clock-frequency-high": 3.12,
|
|
Packit |
534379 |
"clock-frequency-low": 1.56,
|
|
Packit |
534379 |
"interface-uuid": "01234567-89AB-CDEF-0123-456789ABCDEF",
|
|
Packit |
534379 |
"magic-no": 488605312,
|
|
Packit |
534379 |
|
|
Packit |
534379 |
"accelerator-clusters": [
|
|
Packit |
534379 |
{
|
|
Packit |
534379 |
"total-contexts": 1,
|
|
Packit |
534379 |
"name": "nlb_400",
|
|
Packit |
534379 |
"accelerator-type-uuid": "d8424dc4-a4a3-c413-f89e-433683f9040b"
|
|
Packit |
534379 |
}
|
|
Packit |
534379 |
]
|
|
Packit |
534379 |
})mdata";
|
|
Packit |
534379 |
json_object *j_afu_image;
|
|
Packit |
534379 |
|
|
Packit |
534379 |
j_afu_image = parse(mdata);
|
|
Packit |
534379 |
ASSERT_NE(j_afu_image, nullptr);
|
|
Packit |
534379 |
|
|
Packit |
534379 |
opae_metadata_afu_image_v1 img;
|
|
Packit |
534379 |
memset(&img, 0, sizeof(img));
|
|
Packit |
534379 |
|
|
Packit |
534379 |
fpga_guid ifc_id;
|
|
Packit |
534379 |
|
|
Packit |
534379 |
EXPECT_EQ(opae_bitstream_parse_afu_image_v1(j_afu_image,
|
|
Packit |
534379 |
&img,
|
|
Packit |
534379 |
ifc_id),
|
|
Packit |
534379 |
FPGA_OK);
|
|
Packit |
534379 |
|
|
Packit |
534379 |
EXPECT_EQ(img.clock_frequency_high, 3.12);
|
|
Packit |
534379 |
EXPECT_EQ(img.clock_frequency_low, 1.56);
|
|
Packit |
534379 |
|
|
Packit |
534379 |
free(img.interface_uuid);
|
|
Packit |
534379 |
free(img.accelerator_clusters[0].name);
|
|
Packit |
534379 |
free(img.accelerator_clusters[0].accelerator_type_uuid);
|
|
Packit |
534379 |
free(img.accelerator_clusters);
|
|
Packit |
534379 |
}
|
|
Packit |
534379 |
|
|
Packit |
534379 |
/**
|
|
Packit |
534379 |
* @test image_err3
|
|
Packit |
534379 |
* @brief Test: opae_bitstream_parse_afu_image_v1
|
|
Packit |
534379 |
* @details If the given json_object contains no,
|
|
Packit |
534379 |
* "magic-no" key,
|
|
Packit |
534379 |
* the fn returns FPGA_EXCEPTION.
|
|
Packit |
534379 |
*/
|
|
Packit |
534379 |
TEST_P(metadatav1_c_p, image_err3) {
|
|
Packit |
534379 |
const char *mdata =
|
|
Packit |
534379 |
R"mdata({
|
|
Packit |
534379 |
"clock-frequency-high": 312,
|
|
Packit |
534379 |
"clock-frequency-low": 156,
|
|
Packit |
534379 |
"power": 50,
|
|
Packit |
534379 |
"interface-uuid": "01234567-89AB-CDEF-0123-456789ABCDEF",
|
|
Packit |
534379 |
|
|
Packit |
534379 |
"accelerator-clusters": [
|
|
Packit |
534379 |
{
|
|
Packit |
534379 |
"total-contexts": 1,
|
|
Packit |
534379 |
"name": "nlb_400",
|
|
Packit |
534379 |
"accelerator-type-uuid": "d8424dc4-a4a3-c413-f89e-433683f9040b"
|
|
Packit |
534379 |
}
|
|
Packit |
534379 |
]
|
|
Packit |
534379 |
})mdata";
|
|
Packit |
534379 |
json_object *j_afu_image;
|
|
Packit |
534379 |
|
|
Packit |
534379 |
j_afu_image = parse(mdata);
|
|
Packit |
534379 |
ASSERT_NE(j_afu_image, nullptr);
|
|
Packit |
534379 |
|
|
Packit |
534379 |
opae_metadata_afu_image_v1 img;
|
|
Packit |
534379 |
memset(&img, 0, sizeof(img));
|
|
Packit |
534379 |
|
|
Packit |
534379 |
fpga_guid ifc_id;
|
|
Packit |
534379 |
|
|
Packit |
534379 |
EXPECT_EQ(opae_bitstream_parse_afu_image_v1(j_afu_image,
|
|
Packit |
534379 |
&img,
|
|
Packit |
534379 |
ifc_id),
|
|
Packit |
534379 |
FPGA_EXCEPTION);
|
|
Packit |
534379 |
|
|
Packit |
534379 |
EXPECT_EQ(img.interface_uuid, nullptr);
|
|
Packit |
534379 |
EXPECT_EQ(img.accelerator_clusters, nullptr);
|
|
Packit |
534379 |
}
|
|
Packit |
534379 |
|
|
Packit |
534379 |
/**
|
|
Packit |
534379 |
* @test image_err4
|
|
Packit |
534379 |
* @brief Test: opae_bitstream_parse_afu_image_v1
|
|
Packit |
534379 |
* @details If the given json_object contains,
|
|
Packit |
534379 |
* a "magic-no" key that doesn't match the expected,
|
|
Packit |
534379 |
* the fn returns FPGA_EXCEPTION.
|
|
Packit |
534379 |
*/
|
|
Packit |
534379 |
TEST_P(metadatav1_c_p, image_err4) {
|
|
Packit |
534379 |
const char *mdata =
|
|
Packit |
534379 |
R"mdata({
|
|
Packit |
534379 |
"clock-frequency-high": 312,
|
|
Packit |
534379 |
"clock-frequency-low": 156,
|
|
Packit |
534379 |
"power": 50,
|
|
Packit |
534379 |
"interface-uuid": "01234567-89AB-CDEF-0123-456789ABCDEF",
|
|
Packit |
534379 |
"magic-no": 488605311,
|
|
Packit |
534379 |
|
|
Packit |
534379 |
"accelerator-clusters": [
|
|
Packit |
534379 |
{
|
|
Packit |
534379 |
"total-contexts": 1,
|
|
Packit |
534379 |
"name": "nlb_400",
|
|
Packit |
534379 |
"accelerator-type-uuid": "d8424dc4-a4a3-c413-f89e-433683f9040b"
|
|
Packit |
534379 |
}
|
|
Packit |
534379 |
]
|
|
Packit |
534379 |
})mdata";
|
|
Packit |
534379 |
json_object *j_afu_image;
|
|
Packit |
534379 |
|
|
Packit |
534379 |
j_afu_image = parse(mdata);
|
|
Packit |
534379 |
ASSERT_NE(j_afu_image, nullptr);
|
|
Packit |
534379 |
|
|
Packit |
534379 |
opae_metadata_afu_image_v1 img;
|
|
Packit |
534379 |
memset(&img, 0, sizeof(img));
|
|
Packit |
534379 |
|
|
Packit |
534379 |
fpga_guid ifc_id;
|
|
Packit |
534379 |
|
|
Packit |
534379 |
EXPECT_EQ(opae_bitstream_parse_afu_image_v1(j_afu_image,
|
|
Packit |
534379 |
&img,
|
|
Packit |
534379 |
ifc_id),
|
|
Packit |
534379 |
FPGA_EXCEPTION);
|
|
Packit |
534379 |
|
|
Packit |
534379 |
EXPECT_EQ(img.interface_uuid, nullptr);
|
|
Packit |
534379 |
EXPECT_EQ(img.accelerator_clusters, nullptr);
|
|
Packit |
534379 |
}
|
|
Packit |
534379 |
|
|
Packit |
534379 |
/**
|
|
Packit |
534379 |
* @test image_err5
|
|
Packit |
534379 |
* @brief Test: opae_bitstream_parse_afu_image_v1
|
|
Packit |
534379 |
* @details If the given json_object contains no,
|
|
Packit |
534379 |
* "interface-uuid" key,
|
|
Packit |
534379 |
* the fn returns FPGA_EXCEPTION.
|
|
Packit |
534379 |
*/
|
|
Packit |
534379 |
TEST_P(metadatav1_c_p, image_err5) {
|
|
Packit |
534379 |
const char *mdata =
|
|
Packit |
534379 |
R"mdata({
|
|
Packit |
534379 |
"clock-frequency-high": 312,
|
|
Packit |
534379 |
"clock-frequency-low": 156,
|
|
Packit |
534379 |
"power": 50,
|
|
Packit |
534379 |
"magic-no": 488605312,
|
|
Packit |
534379 |
|
|
Packit |
534379 |
"accelerator-clusters": [
|
|
Packit |
534379 |
{
|
|
Packit |
534379 |
"total-contexts": 1,
|
|
Packit |
534379 |
"name": "nlb_400",
|
|
Packit |
534379 |
"accelerator-type-uuid": "d8424dc4-a4a3-c413-f89e-433683f9040b"
|
|
Packit |
534379 |
}
|
|
Packit |
534379 |
]
|
|
Packit |
534379 |
})mdata";
|
|
Packit |
534379 |
json_object *j_afu_image;
|
|
Packit |
534379 |
|
|
Packit |
534379 |
j_afu_image = parse(mdata);
|
|
Packit |
534379 |
ASSERT_NE(j_afu_image, nullptr);
|
|
Packit |
534379 |
|
|
Packit |
534379 |
opae_metadata_afu_image_v1 img;
|
|
Packit |
534379 |
memset(&img, 0, sizeof(img));
|
|
Packit |
534379 |
|
|
Packit |
534379 |
fpga_guid ifc_id;
|
|
Packit |
534379 |
|
|
Packit |
534379 |
EXPECT_EQ(opae_bitstream_parse_afu_image_v1(j_afu_image,
|
|
Packit |
534379 |
&img,
|
|
Packit |
534379 |
ifc_id),
|
|
Packit |
534379 |
FPGA_EXCEPTION);
|
|
Packit |
534379 |
|
|
Packit |
534379 |
EXPECT_EQ(img.interface_uuid, nullptr);
|
|
Packit |
534379 |
EXPECT_EQ(img.accelerator_clusters, nullptr);
|
|
Packit |
534379 |
}
|
|
Packit |
534379 |
|
|
Packit |
534379 |
/**
|
|
Packit |
534379 |
* @test image_err6
|
|
Packit |
534379 |
* @brief Test: opae_bitstream_parse_afu_image_v1
|
|
Packit |
534379 |
* @details If the given json_object contains an,
|
|
Packit |
534379 |
* "interface-uuid" key that is not a valid guid,
|
|
Packit |
534379 |
* the fn returns FPGA_EXCEPTION.
|
|
Packit |
534379 |
*/
|
|
Packit |
534379 |
TEST_P(metadatav1_c_p, image_err6) {
|
|
Packit |
534379 |
const char *mdata =
|
|
Packit |
534379 |
R"mdata({
|
|
Packit |
534379 |
"clock-frequency-high": 312,
|
|
Packit |
534379 |
"clock-frequency-low": 156,
|
|
Packit |
534379 |
"power": 50,
|
|
Packit |
534379 |
"interface-uuid": "not a valid guid",
|
|
Packit |
534379 |
"magic-no": 488605312,
|
|
Packit |
534379 |
|
|
Packit |
534379 |
"accelerator-clusters": [
|
|
Packit |
534379 |
{
|
|
Packit |
534379 |
"total-contexts": 1,
|
|
Packit |
534379 |
"name": "nlb_400",
|
|
Packit |
534379 |
"accelerator-type-uuid": "d8424dc4-a4a3-c413-f89e-433683f9040b"
|
|
Packit |
534379 |
}
|
|
Packit |
534379 |
]
|
|
Packit |
534379 |
})mdata";
|
|
Packit |
534379 |
json_object *j_afu_image;
|
|
Packit |
534379 |
|
|
Packit |
534379 |
j_afu_image = parse(mdata);
|
|
Packit |
534379 |
ASSERT_NE(j_afu_image, nullptr);
|
|
Packit |
534379 |
|
|
Packit |
534379 |
opae_metadata_afu_image_v1 img;
|
|
Packit |
534379 |
memset(&img, 0, sizeof(img));
|
|
Packit |
534379 |
|
|
Packit |
534379 |
fpga_guid ifc_id;
|
|
Packit |
534379 |
|
|
Packit |
534379 |
EXPECT_EQ(opae_bitstream_parse_afu_image_v1(j_afu_image,
|
|
Packit |
534379 |
&img,
|
|
Packit |
534379 |
ifc_id),
|
|
Packit |
534379 |
FPGA_EXCEPTION);
|
|
Packit |
534379 |
|
|
Packit |
534379 |
EXPECT_EQ(img.interface_uuid, nullptr);
|
|
Packit |
534379 |
EXPECT_EQ(img.accelerator_clusters, nullptr);
|
|
Packit |
534379 |
}
|
|
Packit |
534379 |
|
|
Packit |
534379 |
/**
|
|
Packit |
534379 |
* @test image_err7
|
|
Packit |
534379 |
* @brief Test: opae_bitstream_parse_afu_image_v1
|
|
Packit |
534379 |
* @details If the given json_object contains no
|
|
Packit |
534379 |
* "accelerator-clusters" key,
|
|
Packit |
534379 |
* the fn returns FPGA_EXCEPTION.
|
|
Packit |
534379 |
*/
|
|
Packit |
534379 |
TEST_P(metadatav1_c_p, image_err7) {
|
|
Packit |
534379 |
const char *mdata =
|
|
Packit |
534379 |
R"mdata({
|
|
Packit |
534379 |
"clock-frequency-high": 312,
|
|
Packit |
534379 |
"clock-frequency-low": 156,
|
|
Packit |
534379 |
"power": 50,
|
|
Packit |
534379 |
"interface-uuid": "01234567-89AB-CDEF-0123-456789ABCDEF",
|
|
Packit |
534379 |
"magic-no": 488605312,
|
|
Packit |
534379 |
})mdata";
|
|
Packit |
534379 |
json_object *j_afu_image;
|
|
Packit |
534379 |
|
|
Packit |
534379 |
j_afu_image = parse(mdata);
|
|
Packit |
534379 |
ASSERT_NE(j_afu_image, nullptr);
|
|
Packit |
534379 |
|
|
Packit |
534379 |
opae_metadata_afu_image_v1 img;
|
|
Packit |
534379 |
memset(&img, 0, sizeof(img));
|
|
Packit |
534379 |
|
|
Packit |
534379 |
fpga_guid ifc_id;
|
|
Packit |
534379 |
|
|
Packit |
534379 |
EXPECT_EQ(opae_bitstream_parse_afu_image_v1(j_afu_image,
|
|
Packit |
534379 |
&img,
|
|
Packit |
534379 |
ifc_id),
|
|
Packit |
534379 |
FPGA_EXCEPTION);
|
|
Packit |
534379 |
|
|
Packit |
534379 |
EXPECT_EQ(img.interface_uuid, nullptr);
|
|
Packit |
534379 |
EXPECT_EQ(img.accelerator_clusters, nullptr);
|
|
Packit |
534379 |
}
|
|
Packit |
534379 |
|
|
Packit |
534379 |
/**
|
|
Packit |
534379 |
* @test image_err8
|
|
Packit |
534379 |
* @brief Test: opae_bitstream_parse_afu_image_v1
|
|
Packit |
534379 |
* @details If the given json_object contains an,
|
|
Packit |
534379 |
* "accelerator-clusters" key that is not an array,
|
|
Packit |
534379 |
* the fn returns FPGA_EXCEPTION.
|
|
Packit |
534379 |
*/
|
|
Packit |
534379 |
TEST_P(metadatav1_c_p, image_err8) {
|
|
Packit |
534379 |
const char *mdata =
|
|
Packit |
534379 |
R"mdata({
|
|
Packit |
534379 |
"clock-frequency-high": 312,
|
|
Packit |
534379 |
"clock-frequency-low": 156,
|
|
Packit |
534379 |
"power": 50,
|
|
Packit |
534379 |
"interface-uuid": "01234567-89AB-CDEF-0123-456789ABCDEF",
|
|
Packit |
534379 |
"magic-no": 488605312,
|
|
Packit |
534379 |
|
|
Packit |
534379 |
"accelerator-clusters": 3
|
|
Packit |
534379 |
})mdata";
|
|
Packit |
534379 |
json_object *j_afu_image;
|
|
Packit |
534379 |
|
|
Packit |
534379 |
j_afu_image = parse(mdata);
|
|
Packit |
534379 |
ASSERT_NE(j_afu_image, nullptr);
|
|
Packit |
534379 |
|
|
Packit |
534379 |
opae_metadata_afu_image_v1 img;
|
|
Packit |
534379 |
memset(&img, 0, sizeof(img));
|
|
Packit |
534379 |
|
|
Packit |
534379 |
fpga_guid ifc_id;
|
|
Packit |
534379 |
|
|
Packit |
534379 |
EXPECT_EQ(opae_bitstream_parse_afu_image_v1(j_afu_image,
|
|
Packit |
534379 |
&img,
|
|
Packit |
534379 |
ifc_id),
|
|
Packit |
534379 |
FPGA_EXCEPTION);
|
|
Packit |
534379 |
|
|
Packit |
534379 |
EXPECT_EQ(img.interface_uuid, nullptr);
|
|
Packit |
534379 |
EXPECT_EQ(img.accelerator_clusters, nullptr);
|
|
Packit |
534379 |
}
|
|
Packit |
534379 |
|
|
Packit |
534379 |
/**
|
|
Packit |
534379 |
* @test image_err10
|
|
Packit |
534379 |
* @brief Test: opae_bitstream_parse_afu_image_v1
|
|
Packit |
534379 |
* @details If an error occurs when parsing
|
|
Packit |
534379 |
* the "accelerator-clusters" array,
|
|
Packit |
534379 |
* the fn frees any successfully-parsed
|
|
Packit |
534379 |
* array entries and propagates the error
|
|
Packit |
534379 |
* code from opae_bitstream_parse_accelerator_cluster_v1.
|
|
Packit |
534379 |
*/
|
|
Packit |
534379 |
TEST_P(metadatav1_c_p, image_err10) {
|
|
Packit |
534379 |
const char *mdata =
|
|
Packit |
534379 |
R"mdata({
|
|
Packit |
534379 |
"clock-frequency-high": 312,
|
|
Packit |
534379 |
"clock-frequency-low": 156,
|
|
Packit |
534379 |
"power": 50,
|
|
Packit |
534379 |
"interface-uuid": "01234567-89AB-CDEF-0123-456789ABCDEF",
|
|
Packit |
534379 |
"magic-no": 488605312,
|
|
Packit |
534379 |
|
|
Packit |
534379 |
"accelerator-clusters": [
|
|
Packit |
534379 |
{
|
|
Packit |
534379 |
"total-contexts": 1,
|
|
Packit |
534379 |
"name": "nlb_400",
|
|
Packit |
534379 |
"accelerator-type-uuid": "d8424dc4-a4a3-c413-f89e-433683f9040b"
|
|
Packit |
534379 |
},
|
|
Packit |
534379 |
{
|
|
Packit |
534379 |
"total-contexts": "not an integer",
|
|
Packit |
534379 |
"name": "nlb_400",
|
|
Packit |
534379 |
"accelerator-type-uuid": "d8424dc4-a4a3-c413-f89e-433683f9040b"
|
|
Packit |
534379 |
}
|
|
Packit |
534379 |
]
|
|
Packit |
534379 |
})mdata";
|
|
Packit |
534379 |
json_object *j_afu_image;
|
|
Packit |
534379 |
|
|
Packit |
534379 |
j_afu_image = parse(mdata);
|
|
Packit |
534379 |
ASSERT_NE(j_afu_image, nullptr);
|
|
Packit |
534379 |
|
|
Packit |
534379 |
opae_metadata_afu_image_v1 img;
|
|
Packit |
534379 |
memset(&img, 0, sizeof(img));
|
|
Packit |
534379 |
|
|
Packit |
534379 |
fpga_guid ifc_id;
|
|
Packit |
534379 |
|
|
Packit |
534379 |
EXPECT_EQ(opae_bitstream_parse_afu_image_v1(j_afu_image,
|
|
Packit |
534379 |
&img,
|
|
Packit |
534379 |
ifc_id),
|
|
Packit |
534379 |
FPGA_EXCEPTION);
|
|
Packit |
534379 |
|
|
Packit |
534379 |
EXPECT_EQ(img.interface_uuid, nullptr);
|
|
Packit |
534379 |
EXPECT_EQ(img.accelerator_clusters, nullptr);
|
|
Packit |
534379 |
}
|
|
Packit |
534379 |
|
|
Packit |
534379 |
/**
|
|
Packit |
534379 |
* @test parse_v1_err1
|
|
Packit |
534379 |
* @brief Test: opae_bitstream_parse_metadata_v1
|
|
Packit |
534379 |
* @details If the given json_object has no
|
|
Packit |
534379 |
* "platform-name" key,
|
|
Packit |
534379 |
* the fn returns a valid v1 metadata object.
|
|
Packit |
534379 |
*/
|
|
Packit |
534379 |
TEST_P(metadatav1_c_p, parse_v1_err1) {
|
|
Packit |
534379 |
const char *mdata =
|
|
Packit |
534379 |
R"mdata({
|
|
Packit |
534379 |
"version": 1,
|
|
Packit |
534379 |
"afu-image": {
|
|
Packit |
534379 |
"clock-frequency-high": 312,
|
|
Packit |
534379 |
"clock-frequency-low": 156,
|
|
Packit |
534379 |
"power": 50,
|
|
Packit |
534379 |
"interface-uuid": "01234567-89AB-CDEF-0123-456789ABCDEF",
|
|
Packit |
534379 |
"magic-no": 488605312,
|
|
Packit |
534379 |
|
|
Packit |
534379 |
"accelerator-clusters": [
|
|
Packit |
534379 |
{
|
|
Packit |
534379 |
"total-contexts": 1,
|
|
Packit |
534379 |
"name": "nlb_400",
|
|
Packit |
534379 |
"accelerator-type-uuid": "d8424dc4-a4a3-c413-f89e-433683f9040b"
|
|
Packit |
534379 |
}
|
|
Packit |
534379 |
]
|
|
Packit |
534379 |
}
|
|
Packit |
534379 |
})mdata";
|
|
Packit |
534379 |
|
|
Packit |
534379 |
json_object *root;
|
|
Packit |
534379 |
|
|
Packit |
534379 |
root = parse(mdata);
|
|
Packit |
534379 |
ASSERT_NE(root, nullptr);
|
|
Packit |
534379 |
|
|
Packit |
534379 |
fpga_guid ifc_id;
|
|
Packit |
534379 |
|
|
Packit |
534379 |
opae_bitstream_metadata_v1 *md =
|
|
Packit |
534379 |
opae_bitstream_parse_metadata_v1(root, ifc_id);
|
|
Packit |
534379 |
|
|
Packit |
534379 |
ASSERT_NE(md, nullptr);
|
|
Packit |
534379 |
opae_bitstream_release_metadata_v1(md);
|
|
Packit |
534379 |
}
|
|
Packit |
534379 |
|
|
Packit |
534379 |
/**
|
|
Packit |
534379 |
* @test parse_v1_err2
|
|
Packit |
534379 |
* @brief Test: opae_bitstream_parse_metadata_v1
|
|
Packit |
534379 |
* @details If the given json_object has no
|
|
Packit |
534379 |
* "afu-image" key,
|
|
Packit |
534379 |
* the fn returns NULL.
|
|
Packit |
534379 |
*/
|
|
Packit |
534379 |
TEST_P(metadatav1_c_p, parse_v1_err2) {
|
|
Packit |
534379 |
const char *mdata =
|
|
Packit |
534379 |
R"mdata({
|
|
Packit |
534379 |
"version": 1,
|
|
Packit |
534379 |
"platform-name": "DCP"
|
|
Packit |
534379 |
})mdata";
|
|
Packit |
534379 |
|
|
Packit |
534379 |
json_object *root;
|
|
Packit |
534379 |
|
|
Packit |
534379 |
root = parse(mdata);
|
|
Packit |
534379 |
ASSERT_NE(root, nullptr);
|
|
Packit |
534379 |
|
|
Packit |
534379 |
fpga_guid ifc_id;
|
|
Packit |
534379 |
|
|
Packit |
534379 |
EXPECT_EQ(opae_bitstream_parse_metadata_v1(root,
|
|
Packit |
534379 |
ifc_id),
|
|
Packit |
534379 |
nullptr);
|
|
Packit |
534379 |
}
|
|
Packit |
534379 |
|
|
Packit |
534379 |
/**
|
|
Packit |
534379 |
* @test parse_v1_err3
|
|
Packit |
534379 |
* @brief Test: opae_bitstream_parse_metadata_v1
|
|
Packit |
534379 |
* @details If the call to opae_bitstream_parse_afu_image_v1 fails,
|
|
Packit |
534379 |
* the fn returns NULL.
|
|
Packit |
534379 |
*/
|
|
Packit |
534379 |
TEST_P(metadatav1_c_p, parse_v1_err3) {
|
|
Packit |
534379 |
const char *mdata =
|
|
Packit |
534379 |
R"mdata({
|
|
Packit |
534379 |
"version": 1,
|
|
Packit |
534379 |
"afu-image": {
|
|
Packit |
534379 |
"clock-frequency-high": 312,
|
|
Packit |
534379 |
"clock-frequency-low": 156,
|
|
Packit |
534379 |
"power": 50,
|
|
Packit |
534379 |
"interface-uuid": "not a valid guid",
|
|
Packit |
534379 |
"magic-no": 488605312,
|
|
Packit |
534379 |
|
|
Packit |
534379 |
"accelerator-clusters": [
|
|
Packit |
534379 |
{
|
|
Packit |
534379 |
"total-contexts": 1,
|
|
Packit |
534379 |
"name": "nlb_400",
|
|
Packit |
534379 |
"accelerator-type-uuid": "d8424dc4-a4a3-c413-f89e-433683f9040b"
|
|
Packit |
534379 |
}
|
|
Packit |
534379 |
]
|
|
Packit |
534379 |
},
|
|
Packit |
534379 |
"platform-name": "DCP"
|
|
Packit |
534379 |
})mdata";
|
|
Packit |
534379 |
|
|
Packit |
534379 |
json_object *root;
|
|
Packit |
534379 |
|
|
Packit |
534379 |
root = parse(mdata);
|
|
Packit |
534379 |
ASSERT_NE(root, nullptr);
|
|
Packit |
534379 |
|
|
Packit |
534379 |
fpga_guid ifc_id;
|
|
Packit |
534379 |
|
|
Packit |
534379 |
EXPECT_EQ(opae_bitstream_parse_metadata_v1(root,
|
|
Packit |
534379 |
ifc_id),
|
|
Packit |
534379 |
nullptr);
|
|
Packit |
534379 |
}
|
|
Packit |
534379 |
|
|
Packit |
534379 |
/**
|
|
Packit |
534379 |
* @test parse_v1_ok
|
|
Packit |
534379 |
* @brief Test: opae_bitstream_parse_metadata_v1
|
|
Packit |
534379 |
* @details When successful,
|
|
Packit |
534379 |
* the fn returns places the parsed "interface-uuid" key
|
|
Packit |
534379 |
* into the pr_interface_id parameter,
|
|
Packit |
534379 |
* and returns FPGA_OK.
|
|
Packit |
534379 |
*/
|
|
Packit |
534379 |
TEST_P(metadatav1_c_p, parse_v1_ok) {
|
|
Packit |
534379 |
const char *mdata =
|
|
Packit |
534379 |
R"mdata({
|
|
Packit |
534379 |
"version": 1,
|
|
Packit |
534379 |
"afu-image": {
|
|
Packit |
534379 |
"clock-frequency-high": 312.0,
|
|
Packit |
534379 |
"clock-frequency-low": 156,
|
|
Packit |
534379 |
"power": 50.2,
|
|
Packit |
534379 |
"interface-uuid": "01234567-89AB-CDEF-0123-456789ABCDEF",
|
|
Packit |
534379 |
"magic-no": 488605312,
|
|
Packit |
534379 |
|
|
Packit |
534379 |
"accelerator-clusters": [
|
|
Packit |
534379 |
{
|
|
Packit |
534379 |
"total-contexts": 1,
|
|
Packit |
534379 |
"name": "nlb_400",
|
|
Packit |
534379 |
"accelerator-type-uuid": "d8424dc4-a4a3-c413-f89e-433683f9040b"
|
|
Packit |
534379 |
},
|
|
Packit |
534379 |
{
|
|
Packit |
534379 |
"total-contexts": 2,
|
|
Packit |
534379 |
"name": "nlb_400",
|
|
Packit |
534379 |
"accelerator-type-uuid": "d8424dc4-a4a3-c413-f89e-433683f9040b"
|
|
Packit |
534379 |
},
|
|
Packit |
534379 |
{
|
|
Packit |
534379 |
"total-contexts": 3,
|
|
Packit |
534379 |
"name": "nlb_400",
|
|
Packit |
534379 |
"accelerator-type-uuid": "d8424dc4-a4a3-c413-f89e-433683f9040b"
|
|
Packit |
534379 |
}
|
|
Packit |
534379 |
]
|
|
Packit |
534379 |
},
|
|
Packit |
534379 |
"platform-name": "DCP"
|
|
Packit |
534379 |
})mdata";
|
|
Packit |
534379 |
|
|
Packit |
534379 |
fpga_guid expected_id = {
|
|
Packit |
534379 |
0x01, 0x23, 0x45, 0x67,
|
|
Packit |
534379 |
0x89, 0xab,
|
|
Packit |
534379 |
0xcd, 0xef,
|
|
Packit |
534379 |
0x01, 0x23,
|
|
Packit |
534379 |
0x45, 0x67, 0x89, 0xab, 0xcd, 0xef
|
|
Packit |
534379 |
};
|
|
Packit |
534379 |
|
|
Packit |
534379 |
json_object *root;
|
|
Packit |
534379 |
|
|
Packit |
534379 |
root = parse(mdata);
|
|
Packit |
534379 |
ASSERT_NE(root, nullptr);
|
|
Packit |
534379 |
|
|
Packit |
534379 |
fpga_guid ifc_id = { 0, };
|
|
Packit |
534379 |
|
|
Packit |
534379 |
opae_bitstream_metadata_v1 *md =
|
|
Packit |
534379 |
opae_bitstream_parse_metadata_v1(root, ifc_id);
|
|
Packit |
534379 |
|
|
Packit |
534379 |
EXPECT_EQ(memcmp(ifc_id, expected_id, sizeof(fpga_guid)), 0);
|
|
Packit |
534379 |
|
|
Packit |
534379 |
ASSERT_NE(md, nullptr);
|
|
Packit |
534379 |
EXPECT_EQ(md->version, 1);
|
|
Packit |
534379 |
|
|
Packit |
534379 |
ASSERT_NE(md->platform_name, nullptr);
|
|
Packit |
534379 |
EXPECT_STREQ(md->platform_name, "DCP");
|
|
Packit |
534379 |
|
|
Packit |
534379 |
EXPECT_EQ(md->afu_image.clock_frequency_high, 312.0);
|
|
Packit |
534379 |
EXPECT_EQ(md->afu_image.clock_frequency_low, 156.0);
|
|
Packit |
534379 |
EXPECT_EQ(md->afu_image.power, 50.2);
|
|
Packit |
534379 |
|
|
Packit |
534379 |
ASSERT_NE(md->afu_image.interface_uuid, nullptr);
|
|
Packit |
534379 |
EXPECT_STREQ(md->afu_image.interface_uuid, "01234567-89AB-CDEF-0123-456789ABCDEF");
|
|
Packit |
534379 |
|
|
Packit |
534379 |
EXPECT_EQ(md->afu_image.magic_no, 0x1d1f8680);
|
|
Packit |
534379 |
|
|
Packit |
534379 |
EXPECT_EQ(md->afu_image.num_clusters, 3);
|
|
Packit |
534379 |
|
|
Packit |
534379 |
ASSERT_NE(md->afu_image.accelerator_clusters, nullptr);
|
|
Packit |
534379 |
|
|
Packit |
534379 |
int i;
|
|
Packit |
534379 |
for (i = 0 ; i < md->afu_image.num_clusters ; ++i) {
|
|
Packit |
534379 |
opae_metadata_accelerator_cluster_v1 *c =
|
|
Packit |
534379 |
&md->afu_image.accelerator_clusters[i];
|
|
Packit |
534379 |
|
|
Packit |
534379 |
EXPECT_EQ(c->total_contexts, i + 1);
|
|
Packit |
534379 |
ASSERT_NE(c->name, nullptr);
|
|
Packit |
534379 |
EXPECT_STREQ(c->name, "nlb_400");
|
|
Packit |
534379 |
ASSERT_NE(c->accelerator_type_uuid, nullptr);
|
|
Packit |
534379 |
EXPECT_STREQ(c->accelerator_type_uuid, "d8424dc4-a4a3-c413-f89e-433683f9040b");
|
|
Packit |
534379 |
}
|
|
Packit |
534379 |
|
|
Packit |
534379 |
opae_bitstream_release_metadata_v1(md);
|
|
Packit |
534379 |
}
|
|
Packit |
534379 |
|
|
Packit |
534379 |
INSTANTIATE_TEST_CASE_P(metadatav1_c, metadatav1_c_p,
|
|
Packit |
534379 |
::testing::ValuesIn(test_platform::platforms({})));
|
|
Packit |
534379 |
|
|
Packit |
534379 |
|
|
Packit |
534379 |
class mock_metadatav1_c_p : public metadatav1_c_p {};
|
|
Packit |
534379 |
|
|
Packit |
534379 |
/**
|
|
Packit |
534379 |
* @test image_err9
|
|
Packit |
534379 |
* @brief Test: opae_bitstream_parse_afu_image_v1
|
|
Packit |
534379 |
* @details If calloc fails,
|
|
Packit |
534379 |
* the fn returns FPGA_NO_MEMORY.
|
|
Packit |
534379 |
*/
|
|
Packit |
534379 |
TEST_P(mock_metadatav1_c_p, image_err9) {
|
|
Packit |
534379 |
const char *mdata =
|
|
Packit |
534379 |
R"mdata({
|
|
Packit |
534379 |
"clock-frequency-high": 312,
|
|
Packit |
534379 |
"clock-frequency-low": 156,
|
|
Packit |
534379 |
"power": 50,
|
|
Packit |
534379 |
"interface-uuid": "01234567-89AB-CDEF-0123-456789ABCDEF",
|
|
Packit |
534379 |
"magic-no": 488605312,
|
|
Packit |
534379 |
|
|
Packit |
534379 |
"accelerator-clusters": [
|
|
Packit |
534379 |
{
|
|
Packit |
534379 |
"total-contexts": 1,
|
|
Packit |
534379 |
"name": "nlb_400",
|
|
Packit |
534379 |
"accelerator-type-uuid": "d8424dc4-a4a3-c413-f89e-433683f9040b"
|
|
Packit |
534379 |
}
|
|
Packit |
534379 |
]
|
|
Packit |
534379 |
})mdata";
|
|
Packit |
534379 |
json_object *j_afu_image;
|
|
Packit |
534379 |
|
|
Packit |
534379 |
j_afu_image = parse(mdata);
|
|
Packit |
534379 |
ASSERT_NE(j_afu_image, nullptr);
|
|
Packit |
534379 |
|
|
Packit |
534379 |
opae_metadata_afu_image_v1 img;
|
|
Packit |
534379 |
memset(&img, 0, sizeof(img));
|
|
Packit |
534379 |
|
|
Packit |
534379 |
fpga_guid ifc_id;
|
|
Packit |
534379 |
|
|
Packit |
534379 |
system_->invalidate_calloc(0, "opae_bitstream_parse_afu_image_v1");
|
|
Packit |
534379 |
EXPECT_EQ(opae_bitstream_parse_afu_image_v1(j_afu_image,
|
|
Packit |
534379 |
&img,
|
|
Packit |
534379 |
ifc_id),
|
|
Packit |
534379 |
FPGA_NO_MEMORY);
|
|
Packit |
534379 |
|
|
Packit |
534379 |
EXPECT_EQ(img.interface_uuid, nullptr);
|
|
Packit |
534379 |
EXPECT_EQ(img.accelerator_clusters, nullptr);
|
|
Packit |
534379 |
}
|
|
Packit |
534379 |
|
|
Packit |
534379 |
/**
|
|
Packit |
534379 |
* @test parse_v1_err0
|
|
Packit |
534379 |
* @brief Test: opae_bitstream_parse_metadata_v1
|
|
Packit |
534379 |
* @details If calloc fails,
|
|
Packit |
534379 |
* the fn returns NULL.
|
|
Packit |
534379 |
*/
|
|
Packit |
534379 |
TEST_P(mock_metadatav1_c_p, parse_v1_err0) {
|
|
Packit |
534379 |
const char *mdata =
|
|
Packit |
534379 |
R"mdata({
|
|
Packit |
534379 |
"version": 1,
|
|
Packit |
534379 |
"afu-image": {
|
|
Packit |
534379 |
"clock-frequency-high": 312,
|
|
Packit |
534379 |
"clock-frequency-low": 156,
|
|
Packit |
534379 |
"power": 50,
|
|
Packit |
534379 |
"interface-uuid": "01234567-89AB-CDEF-0123-456789ABCDEF",
|
|
Packit |
534379 |
"magic-no": 488605312,
|
|
Packit |
534379 |
|
|
Packit |
534379 |
"accelerator-clusters": [
|
|
Packit |
534379 |
{
|
|
Packit |
534379 |
"total-contexts": 1,
|
|
Packit |
534379 |
"name": "nlb_400",
|
|
Packit |
534379 |
"accelerator-type-uuid": "d8424dc4-a4a3-c413-f89e-433683f9040b"
|
|
Packit |
534379 |
}
|
|
Packit |
534379 |
]
|
|
Packit |
534379 |
},
|
|
Packit |
534379 |
"platform-name": "DCP"
|
|
Packit |
534379 |
})mdata";
|
|
Packit |
534379 |
|
|
Packit |
534379 |
json_object *root;
|
|
Packit |
534379 |
|
|
Packit |
534379 |
root = parse(mdata);
|
|
Packit |
534379 |
ASSERT_NE(root, nullptr);
|
|
Packit |
534379 |
|
|
Packit |
534379 |
fpga_guid ifc_id;
|
|
Packit |
534379 |
|
|
Packit |
534379 |
system_->invalidate_calloc(0, "opae_bitstream_parse_metadata_v1");
|
|
Packit |
534379 |
EXPECT_EQ(opae_bitstream_parse_metadata_v1(root,
|
|
Packit |
534379 |
ifc_id),
|
|
Packit |
534379 |
nullptr);
|
|
Packit |
534379 |
}
|
|
Packit |
534379 |
|
|
Packit |
534379 |
INSTANTIATE_TEST_CASE_P(metadatav1_c, mock_metadatav1_c_p,
|
|
Packit |
534379 |
::testing::ValuesIn(test_platform::mock_platforms({})));
|