blob: 321490559a6f92a455a7c1d98763f89de3d961a8 [file] [log] [blame]
#include "app.hpp"
#include "async_resp.hpp"
#include "dbus_utility.hpp"
#include "http_request.hpp"
#include "http_response.hpp"
#include "network_adapter.hpp"
#include "snapshot_fixture.hpp"
#include <nlohmann/json.hpp>
#include <gmock/gmock.h>
#include <gtest/gtest.h>
using ::testing::Contains;
namespace redfish
{
namespace
{
TEST_F(SnapshotFixture, GetNetworkAdaptersReturnsCorrectResponse)
{
handleChassisNetworkAdapterCollectionGetSysfs(share_async_resp_, "bmc");
nlohmann::json& json = share_async_resp_->res.jsonValue;
EXPECT_EQ(json["@odata.id"], "/redfish/v1/Chassis/bmc/NetworkAdapters");
EXPECT_EQ(json["@odata.type"],
"#NetworkAdapterCollection.NetworkAdapterCollection");
EXPECT_EQ(json["Name"], "Network adapter Collection for chassis bmc");
EXPECT_THAT(
json["Members"],
Contains(nlohmann::json(
{{"@odata.id", "/redfish/v1/Chassis/bmc/NetworkAdapters/0"}})));
EXPECT_EQ(json["Members@odata.count"], 1);
}
TEST_F(SnapshotFixture, GetNetworkAdapterReturnsCorrectResponse)
{
handleChassisNetworkAdapterGetSysfs(share_async_resp_, "bmc", "0");
nlohmann::json& json = share_async_resp_->res.jsonValue;
EXPECT_EQ(json["@odata.id"], "/redfish/v1/Chassis/bmc/NetworkAdapters/0");
EXPECT_EQ(json["@odata.type"], "#NetworkAdapter.NetworkAdapter");
EXPECT_EQ(json["Name"], "Network adapter");
EXPECT_THAT(json["Members"],
Contains(nlohmann::json(
{{"@odata.id",
"/redfish/v1/Chassis/bmc/NetworkAdapters/0/Ports"}})));
EXPECT_EQ(json["Members@odata.count"], 1);
}
TEST_F(SnapshotFixture, GetPortCollectionReturnsCorrectResponse)
{
handleNetworkPortCollectionGetSysfs(share_async_resp_, "bmc", "0");
nlohmann::json& json = share_async_resp_->res.jsonValue;
EXPECT_EQ(json["@odata.id"],
"/redfish/v1/Chassis/bmc/NetworkAdapters/0/Ports");
EXPECT_EQ(json["@odata.type"], "#PortCollection.PortCollection");
EXPECT_THAT(
json["Members"],
Contains(nlohmann::json(
{{"@odata.id",
"/redfish/v1/Chassis/bmc/NetworkAdapters/0/Ports/ncsi"}})));
EXPECT_THAT(
json["Members"],
Contains(nlohmann::json(
{{"@odata.id",
"/redfish/v1/Chassis/bmc/NetworkAdapters/0/Ports/gusbem0"}})));
EXPECT_THAT(
json["Members"],
Contains(nlohmann::json(
{{"@odata.id",
"/redfish/v1/Chassis/bmc/NetworkAdapters/0/Ports/front"}})));
EXPECT_EQ(json["Members@odata.count"], 3);
EXPECT_EQ(json["Name"], "Network ports");
}
TEST_F(SnapshotFixture, GetPortsReturnsCorrectResponse1)
{
handleNetworkPortGetSysfs(share_async_resp_, "bmc", "0", "ncsi");
nlohmann::json& json = share_async_resp_->res.jsonValue;
EXPECT_EQ(json["@odata.id"],
"/redfish/v1/Chassis/bmc/NetworkAdapters/0/Ports/ncsi");
EXPECT_EQ(json["@odata.type"], "#Port.Port");
EXPECT_EQ(json["CurrentSpeedGbps"], 0.1);
EXPECT_EQ(json["Name"], "ncsi");
EXPECT_THAT(json["Ethernet"]["AssociatedMACAddresses"],
Contains("24:95:2f:8f:18:0c"));
EXPECT_EQ(json["Ethernet"]["AssociatedMACAddresses"].size(), 1);
EXPECT_EQ(json["LinkState"], "Enabled");
EXPECT_EQ(json["LinkStatus"], "LinkUp");
EXPECT_EQ(json["Metrics"]["@odata.id"],
"/redfish/v1/Chassis/bmc/NetworkAdapters/0/Ports/ncsi/Metrics");
}
TEST_F(SnapshotFixture, GetPortsReturnsCorrectResponse2)
{
handleNetworkPortGetSysfs(share_async_resp_, "bmc", "0", "gusbem0");
nlohmann::json& json = share_async_resp_->res.jsonValue;
EXPECT_EQ(json["@odata.id"],
"/redfish/v1/Chassis/bmc/NetworkAdapters/0/Ports/gusbem0");
EXPECT_EQ(json["@odata.type"], "#Port.Port");
EXPECT_EQ(json["CurrentSpeedGbps"], 0.0);
EXPECT_EQ(json["Name"], "gusbem0");
EXPECT_THAT(json["Ethernet"]["AssociatedMACAddresses"],
Contains("3a:1b:f6:ef:56:62"));
EXPECT_EQ(json["Ethernet"]["AssociatedMACAddresses"].size(), 1);
EXPECT_EQ(json["LinkState"], "Enabled");
EXPECT_EQ(json["LinkStatus"], "LinkUp");
EXPECT_EQ(
json["Metrics"]["@odata.id"],
"/redfish/v1/Chassis/bmc/NetworkAdapters/0/Ports/gusbem0/Metrics");
}
TEST_F(SnapshotFixture, GetPortsReturnsCorrectResponse3)
{
handleNetworkPortGetSysfs(share_async_resp_, "bmc", "0", "front");
nlohmann::json& json = share_async_resp_->res.jsonValue;
EXPECT_EQ(json["@odata.id"],
"/redfish/v1/Chassis/bmc/NetworkAdapters/0/Ports/front");
EXPECT_EQ(json["@odata.type"], "#Port.Port");
EXPECT_EQ(json["CurrentSpeedGbps"], 1);
EXPECT_EQ(json["Name"], "front");
EXPECT_THAT(json["Ethernet"]["AssociatedMACAddresses"],
Contains("24:95:2f:8f:18:0c"));
EXPECT_EQ(json["Ethernet"]["AssociatedMACAddresses"].size(), 1);
EXPECT_EQ(json["LinkState"], "Enabled");
EXPECT_EQ(json["LinkStatus"], "LinkUp");
EXPECT_EQ(json["Locations"]["ServiceLable"], "FrontServiceLable");
EXPECT_EQ(json["Metrics"]["@odata.id"],
"/redfish/v1/Chassis/bmc/NetworkAdapters/0/Ports/front/Metrics");
}
TEST_F(SnapshotFixture, GetNetworkPortMetricReturnsCorrectResponse1)
{
handleNetworkPortMetricGetSysfs(share_async_resp_, "bmc", "0", "ncsi");
nlohmann::json& json = share_async_resp_->res.jsonValue;
EXPECT_EQ(json["@odata.id"],
"/redfish/v1/Chassis/bmc/NetworkAdapters/0/Ports/ncsi/Metrics");
EXPECT_EQ(json["@odata.type"], "#PortMetrics.PortMetrics");
EXPECT_EQ(json["Name"], "Network port metrics");
EXPECT_EQ(json["Oem"]["Google"]["Networking"]["CarrierChanges"], 1);
EXPECT_EQ(json["Oem"]["Google"]["Networking"]["RXCRCErrors"], 4);
EXPECT_EQ(json["Oem"]["Google"]["Networking"]["RXErrors"], 4);
EXPECT_EQ(json["Oem"]["Google"]["Networking"]["ReceivedPackets"], 3016523);
EXPECT_EQ(json["Oem"]["Google"]["Networking"]["ReceivedPacketsDropped"], 0);
}
TEST_F(SnapshotFixture, GetNetworkPortMetricReturnsCorrectResponse2)
{
handleNetworkPortMetricGetSysfs(share_async_resp_, "bmc", "0", "gusbem0");
nlohmann::json& json = share_async_resp_->res.jsonValue;
EXPECT_EQ(
json["@odata.id"],
"/redfish/v1/Chassis/bmc/NetworkAdapters/0/Ports/gusbem0/Metrics");
EXPECT_EQ(json["@odata.type"], "#PortMetrics.PortMetrics");
EXPECT_EQ(json["Name"], "Network port metrics");
EXPECT_EQ(json["Oem"]["Google"]["Networking"]["CarrierChanges"], 4);
EXPECT_EQ(json["Oem"]["Google"]["Networking"]["RXCRCErrors"], 0);
EXPECT_EQ(json["Oem"]["Google"]["Networking"]["RXErrors"], 0);
EXPECT_EQ(json["Oem"]["Google"]["Networking"]["ReceivedPackets"], 13218);
EXPECT_EQ(json["Oem"]["Google"]["Networking"]["ReceivedPacketsDropped"], 0);
}
TEST_F(SnapshotFixture, GetNetworkPortMetricReturnsCorrectResponse3)
{
handleNetworkPortMetricGetSysfs(share_async_resp_, "bmc", "0", "front");
nlohmann::json& json = share_async_resp_->res.jsonValue;
EXPECT_EQ(json["@odata.id"],
"/redfish/v1/Chassis/bmc/NetworkAdapters/0/Ports/front/Metrics");
EXPECT_EQ(json["@odata.type"], "#PortMetrics.PortMetrics");
EXPECT_EQ(json["Name"], "Network port metrics");
EXPECT_EQ(json["Oem"]["Google"]["Networking"]["CarrierChanges"], 1);
EXPECT_EQ(json["Oem"]["Google"]["Networking"]["RXCRCErrors"], 0);
EXPECT_EQ(json["Oem"]["Google"]["Networking"]["RXErrors"], 0);
EXPECT_EQ(json["Oem"]["Google"]["Networking"]["ReceivedPackets"], 458937);
EXPECT_EQ(json["Oem"]["Google"]["Networking"]["ReceivedPacketsDropped"], 0);
}
} // namespace
} // namespace redfish