summaryrefslogtreecommitdiffstats
path: root/test
diff options
context:
space:
mode:
authorVishwanatha Subbanna <vishwa@linux.vnet.ibm.com>2017-05-03 18:44:16 +0530
committerVishwanatha Subbanna <vishwa@linux.vnet.ibm.com>2017-06-19 13:06:34 +0530
commit4b000d8d84253f97cfe5695b4798e75092509706 (patch)
treec6dfa62f8a82f83f64c6885696bf8fc62ca2718a /test
parentd27c68f40480070a70d17b58af17a9d8a1704ae3 (diff)
downloadphosphor-led-manager-4b000d8d84253f97cfe5695b4798e75092509706.tar.gz
phosphor-led-manager-4b000d8d84253f97cfe5695b4798e75092509706.zip
LEDS: Provide support to override the default Blink priority
In some cases, it is needed that the Solid-ON action over rules Blink and this patch adds that support. Change-Id: Ib0a88b11142ccef3e39ef0a7c6eb3a037c878bc2 Signed-off-by: Vishwanatha Subbanna <vishwa@linux.vnet.ibm.com>
Diffstat (limited to 'test')
-rw-r--r--test/led-test-map.hpp203
-rw-r--r--test/utest.cpp1301
2 files changed, 1220 insertions, 284 deletions
diff --git a/test/led-test-map.hpp b/test/led-test-map.hpp
index a8a62af..0b44ee3 100644
--- a/test/led-test-map.hpp
+++ b/test/led-test-map.hpp
@@ -1,7 +1,8 @@
static const std::map<std::string,
std::set<phosphor::led::Layout::LedAction>> singleLedOn = {
{ "/xyz/openbmc_project/ledmanager/groups/SingleLed",{
- {"One",phosphor::led::Layout::On},
+ {"One",phosphor::led::Layout::On, 0,
+ 0, phosphor::led::Layout::Blink},
}
},
};
@@ -9,7 +10,17 @@ static const std::map<std::string,
static const std::map<std::string,
std::set<phosphor::led::Layout::LedAction>> singleLedBlink = {
{ "/xyz/openbmc_project/ledmanager/groups/SingleLed",{
- {"One",phosphor::led::Layout::Blink},
+ {"One",phosphor::led::Layout::Blink, 0,
+ 0, phosphor::led::Layout::Blink},
+ }
+ },
+};
+
+static const std::map<std::string,
+ std::set<phosphor::led::Layout::LedAction>> singleLedBlinkOverrideOn = {
+ { "/xyz/openbmc_project/ledmanager/groups/SingleLed",{
+ {"One",phosphor::led::Layout::Blink, 0,
+ 0, phosphor::led::Layout::On},
}
},
};
@@ -17,9 +28,12 @@ static const std::map<std::string,
static const std::map<std::string,
std::set<phosphor::led::Layout::LedAction>> multipleLedsOn = {
{ "/xyz/openbmc_project/ledmanager/groups/MultipleLeds",{
- {"One",phosphor::led::Layout::On},
- {"Two",phosphor::led::Layout::On},
- {"Three",phosphor::led::Layout::On},
+ {"One",phosphor::led::Layout::On, 0,
+ 0, phosphor::led::Layout::On},
+ {"Two",phosphor::led::Layout::On, 0,
+ 0, phosphor::led::Layout::On},
+ {"Three",phosphor::led::Layout::On, 0,
+ 0, phosphor::led::Layout::On},
}
},
};
@@ -27,9 +41,12 @@ static const std::map<std::string,
static const std::map<std::string,
std::set<phosphor::led::Layout::LedAction>> multipleLedsBlink = {
{ "/xyz/openbmc_project/ledmanager/groups/MultipleLeds",{
- {"One",phosphor::led::Layout::Blink},
- {"Two",phosphor::led::Layout::Blink},
- {"Three",phosphor::led::Layout::Blink},
+ {"One",phosphor::led::Layout::Blink, 0,
+ 0, phosphor::led::Layout::Blink},
+ {"Two",phosphor::led::Layout::Blink, 0,
+ 0, phosphor::led::Layout::Blink},
+ {"Three",phosphor::led::Layout::Blink,0,
+ 0, phosphor::led::Layout::Blink},
}
},
};
@@ -37,11 +54,16 @@ static const std::map<std::string,
static const std::map<std::string,
std::set<phosphor::led::Layout::LedAction>> multipleLedsOnAndBlink = {
{ "/xyz/openbmc_project/ledmanager/groups/MultipleLedsMix",{
- {"One",phosphor::led::Layout::Blink},
- {"Two",phosphor::led::Layout::On},
- {"Three",phosphor::led::Layout::Blink},
- {"Four",phosphor::led::Layout::On},
- {"Five",phosphor::led::Layout::On},
+ {"One",phosphor::led::Layout::Blink, 0,
+ 0, phosphor::led::Layout::Blink},
+ {"Two",phosphor::led::Layout::On,
+ 0, phosphor::led::Layout::Blink},
+ {"Three",phosphor::led::Layout::Blink,
+ 0, phosphor::led::Layout::On},
+ {"Four",phosphor::led::Layout::On,
+ 0, phosphor::led::Layout::Blink},
+ {"Five",phosphor::led::Layout::On,
+ 0, phosphor::led::Layout::Blink},
}
},
};
@@ -49,15 +71,21 @@ static const std::map<std::string,
static const std::map<std::string,
std::set<phosphor::led::Layout::LedAction>> twoGroupsWithDistinctLEDsOn = {
{ "/xyz/openbmc_project/ledmanager/groups/MultipleLedsASet",{
- {"One",phosphor::led::Layout::On},
- {"Two",phosphor::led::Layout::On},
- {"Three",phosphor::led::Layout::On},
+ {"One",phosphor::led::Layout::On, 0,
+ 0, phosphor::led::Layout::Blink},
+ {"Two",phosphor::led::Layout::On, 0,
+ 0, phosphor::led::Layout::On},
+ {"Three",phosphor::led::Layout::On, 0,
+ 0, phosphor::led::Layout::Blink},
}
},
{ "/xyz/openbmc_project/ledmanager/groups/MultipleLedsBSet",{
- {"Four",phosphor::led::Layout::On},
- {"Five",phosphor::led::Layout::On},
- {"Six",phosphor::led::Layout::On},
+ {"Four",phosphor::led::Layout::On, 0,
+ 0, phosphor::led::Layout::Blink},
+ {"Five",phosphor::led::Layout::On, 0,
+ 0, phosphor::led::Layout::Blink},
+ {"Six",phosphor::led::Layout::On, 0,
+ 0, phosphor::led::Layout::On},
}
},
};
@@ -65,33 +93,65 @@ static const std::map<std::string,
static const std::map<std::string,
std::set<phosphor::led::Layout::LedAction>> twoGroupsWithOneComonLEDOn = {
{ "/xyz/openbmc_project/ledmanager/groups/MultipleLedsASet",{
- {"One",phosphor::led::Layout::On},
- {"Two",phosphor::led::Layout::On},
- {"Three",phosphor::led::Layout::On},
+ {"One",phosphor::led::Layout::On, 0,
+ 0, phosphor::led::Layout::On},
+ {"Two",phosphor::led::Layout::On, 0,
+ 0, phosphor::led::Layout::On},
+ {"Three",phosphor::led::Layout::On, 0,
+ 0, phosphor::led::Layout::On},
}
},
{ "/xyz/openbmc_project/ledmanager/groups/MultipleLedsBSet",{
- {"Four",phosphor::led::Layout::On},
- {"Three",phosphor::led::Layout::On},
- {"Six",phosphor::led::Layout::On},
+ {"Four",phosphor::led::Layout::On, 0,
+ 0, phosphor::led::Layout::On},
+ {"Three",phosphor::led::Layout::On, 0,
+ 0, phosphor::led::Layout::On},
+ {"Six",phosphor::led::Layout::On, 0,
+ 0, phosphor::led::Layout::On},
}
},
};
static const std::map<std::string,
- std::set<phosphor::led::Layout::LedAction>>
- twoGroupsWithOneComonLEDInDifferentState = {
+ std::set<phosphor::led::Layout::LedAction>> twoGroupsWithOneComonLEDOnOneLEDBlinkPriority = {
+ { "/xyz/openbmc_project/ledmanager/groups/MultipleLedsASet",{
+ {"One",phosphor::led::Layout::On, 0,
+ 0, phosphor::led::Layout::On},
+ {"Two",phosphor::led::Layout::On, 0,
+ 0, phosphor::led::Layout::On},
+ {"Three",phosphor::led::Layout::Blink, 0,
+ 0, phosphor::led::Layout::Blink},
+ }
+ },
+ { "/xyz/openbmc_project/ledmanager/groups/MultipleLedsBSet",{
+ {"Four",phosphor::led::Layout::On, 0,
+ 0, phosphor::led::Layout::On},
+ {"Three",phosphor::led::Layout::On, 0,
+ 0, phosphor::led::Layout::Blink},
+ {"Six",phosphor::led::Layout::On, 0,
+ 0, phosphor::led::Layout::On},
+ }
+ },
+};
+
+static const std::map<std::string,
+ std::set<phosphor::led::Layout::LedAction>> twoGroupsWithOneComonLEDOnPriority = {
{ "/xyz/openbmc_project/ledmanager/groups/MultipleLedsASet",{
- {"One",phosphor::led::Layout::On},
- {"Two",phosphor::led::Layout::On},
- {"Three",phosphor::led::Layout::On},
+ {"One",phosphor::led::Layout::On, 0,
+ 0, phosphor::led::Layout::On},
+ {"Two",phosphor::led::Layout::On, 0,
+ 0, phosphor::led::Layout::On},
+ {"Three",phosphor::led::Layout::Blink, 0,
+ 0, phosphor::led::Layout::On},
}
},
{ "/xyz/openbmc_project/ledmanager/groups/MultipleLedsBSet",{
- {"Two",phosphor::led::Layout::Blink},
- {"Four",phosphor::led::Layout::On},
- {"Five",phosphor::led::Layout::On},
- {"Six",phosphor::led::Layout::On},
+ {"Four",phosphor::led::Layout::On, 0,
+ 0, phosphor::led::Layout::On},
+ {"Three",phosphor::led::Layout::On, 0,
+ 0, phosphor::led::Layout::On},
+ {"Six",phosphor::led::Layout::On, 0,
+ 0, phosphor::led::Layout::On},
}
},
};
@@ -100,16 +160,23 @@ static const std::map<std::string,
std::set<phosphor::led::Layout::LedAction>>
twoGroupsWithMultiplComonLEDOn = {
{ "/xyz/openbmc_project/ledmanager/groups/MultipleLedsASet",{
- {"One",phosphor::led::Layout::On},
- {"Two",phosphor::led::Layout::On},
- {"Three",phosphor::led::Layout::On},
+ {"One",phosphor::led::Layout::On, 0,
+ 0, phosphor::led::Layout::On},
+ {"Two",phosphor::led::Layout::On, 0,
+ 0, phosphor::led::Layout::On},
+ {"Three",phosphor::led::Layout::On, 0,
+ 0, phosphor::led::Layout::On},
}
},
{ "/xyz/openbmc_project/ledmanager/groups/MultipleLedsBSet",{
- {"Two",phosphor::led::Layout::On},
- {"Six",phosphor::led::Layout::On},
- {"Three",phosphor::led::Layout::On},
- {"Seven",phosphor::led::Layout::On},
+ {"Two",phosphor::led::Layout::On, 0,
+ 0, phosphor::led::Layout::On},
+ {"Six",phosphor::led::Layout::On, 0,
+ 0, phosphor::led::Layout::On},
+ {"Three",phosphor::led::Layout::On, 0,
+ 0, phosphor::led::Layout::On},
+ {"Seven",phosphor::led::Layout::On, 0,
+ 0, phosphor::led::Layout::On},
}
},
};
@@ -118,36 +185,56 @@ static const std::map<std::string,
std::set<phosphor::led::Layout::LedAction>>
twoGroupsWithMultipleComonLEDInDifferentState = {
{ "/xyz/openbmc_project/ledmanager/groups/MultipleLedsASet",{
- {"One",phosphor::led::Layout::On},
- {"Two",phosphor::led::Layout::Blink},
- {"Three",phosphor::led::Layout::On},
- {"Four",phosphor::led::Layout::On},
+ {"One",phosphor::led::Layout::On, 0,
+ 0, phosphor::led::Layout::On},
+ {"Two",phosphor::led::Layout::Blink, 0,
+ 0, phosphor::led::Layout::On},
+ {"Three",phosphor::led::Layout::Blink, 0,
+ 0, phosphor::led::Layout::On},
+ {"Four",phosphor::led::Layout::On, 0,
+ 0, phosphor::led::Layout::On},
}
},
{ "/xyz/openbmc_project/ledmanager/groups/MultipleLedsBSet",{
- {"Two",phosphor::led::Layout::On},
- {"Three",phosphor::led::Layout::Blink},
- {"Five",phosphor::led::Layout::On},
- {"Six",phosphor::led::Layout::On},
+ {"Two",phosphor::led::Layout::On, 0,
+ 0, phosphor::led::Layout::On},
+ {"Three",phosphor::led::Layout::Blink, 0,
+ 0, phosphor::led::Layout::On},
+ {"Five",phosphor::led::Layout::On, 0,
+ 0, phosphor::led::Layout::On},
+ {"Six",phosphor::led::Layout::On, 0,
+ 0, phosphor::led::Layout::On},
}
},
};
static const std::map<std::string,
std::set<phosphor::led::Layout::LedAction>>
- twoGroupsWithMultipleComonLEDInDifferentStateBlinkAgain = {
+ twoGroupsWithMultipleComonLEDInDifferentStateDiffPriority = {
{ "/xyz/openbmc_project/ledmanager/groups/MultipleLedsASet",{
- {"One",phosphor::led::Layout::On},
- {"Two",phosphor::led::Layout::Blink},
- {"Three",phosphor::led::Layout::On},
- {"Four",phosphor::led::Layout::On},
+ {"One",phosphor::led::Layout::On, 0,
+ 0, phosphor::led::Layout::On},
+ {"Two",phosphor::led::Layout::Blink, 0,
+ 0, phosphor::led::Layout::On},
+ {"Three",phosphor::led::Layout::On, 0,
+ 0, phosphor::led::Layout::Blink},
+ {"Four",phosphor::led::Layout::On, 0,
+ 0, phosphor::led::Layout::On},
+ {"Ten",phosphor::led::Layout::Blink, 0,
+ 0, phosphor::led::Layout::Blink},
}
},
{ "/xyz/openbmc_project/ledmanager/groups/MultipleLedsBSet",{
- {"Two",phosphor::led::Layout::Blink},
- {"Three",phosphor::led::Layout::Blink},
- {"Five",phosphor::led::Layout::On},
- {"Six",phosphor::led::Layout::On},
+ {"Two",phosphor::led::Layout::On, 0,
+ 0, phosphor::led::Layout::On},
+ {"Three",phosphor::led::Layout::On, 0,
+ 0, phosphor::led::Layout::Blink},
+ {"Five",phosphor::led::Layout::On, 0,
+ 0, phosphor::led::Layout::On},
+ {"Six",phosphor::led::Layout::On, 0,
+ 0, phosphor::led::Layout::On},
+ {"Ten",phosphor::led::Layout::On, 0,
+ 0, phosphor::led::Layout::Blink},
}
},
};
diff --git a/test/utest.cpp b/test/utest.cpp
index 19c54a2..ea08ea0 100644
--- a/test/utest.cpp
+++ b/test/utest.cpp
@@ -27,20 +27,19 @@ TEST_F(LedTest, assertSingleLedOn)
// Assert the LEDs.
Manager::group ledsAssert {};
Manager::group ledsDeAssert {};
- Manager::group ledsUpdate {};
auto group = "/xyz/openbmc_project/ledmanager/groups/SingleLed";
auto result = manager.setGroupState(group, true, ledsAssert,
- ledsDeAssert, ledsUpdate);
+ ledsDeAssert);
EXPECT_EQ(true, result);
// Need just the ledsAssserted populated with these.
std::set<Layout::LedAction> refAssert = {
- {"One",phosphor::led::Layout::On},
+ {"One",phosphor::led::Layout::On, 0,
+ 0, phosphor::led::Layout::Blink},
};
EXPECT_EQ(refAssert.size(), ledsAssert.size());
EXPECT_EQ(0, ledsDeAssert.size());
- EXPECT_EQ(0, ledsUpdate.size());
// difference of refAssert and ledsAssert must be null.
Manager::group temp {};
@@ -59,20 +58,19 @@ TEST_F(LedTest, assertSingleLedBlink)
// Assert the LEDs.
Manager::group ledsAssert {};
Manager::group ledsDeAssert {};
- Manager::group ledsUpdate {};
auto group = "/xyz/openbmc_project/ledmanager/groups/SingleLed";
auto result = manager.setGroupState(group, true, ledsAssert,
- ledsDeAssert, ledsUpdate);
+ ledsDeAssert);
EXPECT_EQ(true, result);
// Need just the ledsAssserted populated with these.
std::set<Layout::LedAction> refAssert = {
- {"One",phosphor::led::Layout::Blink},
+ {"One",phosphor::led::Layout::Blink, 0,
+ 0, phosphor::led::Layout::Blink},
};
EXPECT_EQ(refAssert.size(), ledsAssert.size());
EXPECT_EQ(0, ledsDeAssert.size());
- EXPECT_EQ(0, ledsUpdate.size());
// difference of refAssert and ledsAssert must be null.
Manager::group temp {};
@@ -91,20 +89,19 @@ TEST_F(LedTest, assertSingleLedOnAndreAssert)
// Assert the LEDs.
Manager::group ledsAssert {};
Manager::group ledsDeAssert {};
- Manager::group ledsUpdate {};
auto group = "/xyz/openbmc_project/ledmanager/groups/SingleLed";
auto result = manager.setGroupState(group, true, ledsAssert,
- ledsDeAssert, ledsUpdate);
+ ledsDeAssert);
EXPECT_EQ(true, result);
// Need just the ledsAssserted populated with these.
std::set<Layout::LedAction> refAssert = {
- {"One",phosphor::led::Layout::On},
+ {"One",phosphor::led::Layout::On, 0,
+ 0, phosphor::led::Layout::Blink},
};
EXPECT_EQ(refAssert.size(), ledsAssert.size());
EXPECT_EQ(0, ledsDeAssert.size());
- EXPECT_EQ(0, ledsUpdate.size());
// difference of refAssert and ledsAssert must be null.
Manager::group temp {};
@@ -117,16 +114,14 @@ TEST_F(LedTest, assertSingleLedOnAndreAssert)
// Assert the LEDs.
Manager::group ledsAssert {};
Manager::group ledsDeAssert {};
- Manager::group ledsUpdate {};
auto group = "/xyz/openbmc_project/ledmanager/groups/SingleLed";
auto result = manager.setGroupState(group, true, ledsAssert,
- ledsDeAssert, ledsUpdate);
+ ledsDeAssert);
EXPECT_EQ(true, result);
EXPECT_EQ(0, ledsAssert.size());
EXPECT_EQ(0, ledsDeAssert.size());
- EXPECT_EQ(0, ledsUpdate.size());
}
}
@@ -138,22 +133,23 @@ TEST_F(LedTest, assertMultipleLedOn)
// Assert the LEDs.
Manager::group ledsAssert {};
Manager::group ledsDeAssert {};
- Manager::group ledsUpdate {};
auto group = "/xyz/openbmc_project/ledmanager/groups/MultipleLeds";
auto result = manager.setGroupState(group, true, ledsAssert,
- ledsDeAssert, ledsUpdate);
+ ledsDeAssert);
EXPECT_EQ(true, result);
// Need just the ledsAssserted populated with these.
std::set<Layout::LedAction> refAssert = {
- {"One",phosphor::led::Layout::On},
- {"Two",phosphor::led::Layout::On},
- {"Three",phosphor::led::Layout::On},
+ {"One",phosphor::led::Layout::On, 0,
+ 0, phosphor::led::Layout::On},
+ {"Two",phosphor::led::Layout::On, 0,
+ 0, phosphor::led::Layout::On},
+ {"Three",phosphor::led::Layout::On, 0,
+ 0, phosphor::led::Layout::On},
};
EXPECT_EQ(refAssert.size(), ledsAssert.size());
EXPECT_EQ(0, ledsDeAssert.size());
- EXPECT_EQ(0, ledsUpdate.size());
// difference of refAssert and ledsAssert must be null.
Manager::group temp {};
@@ -172,22 +168,23 @@ TEST_F(LedTest, assertMultipleLedBlink)
// Assert the LEDs.
Manager::group ledsAssert {};
Manager::group ledsDeAssert {};
- Manager::group ledsUpdate {};
auto group = "/xyz/openbmc_project/ledmanager/groups/MultipleLeds";
auto result = manager.setGroupState(group, true, ledsAssert,
- ledsDeAssert, ledsUpdate);
+ ledsDeAssert);
EXPECT_EQ(true, result);
// Need just the ledsAssserted populated with these.
std::set<Layout::LedAction> refAssert = {
- {"One",phosphor::led::Layout::Blink},
- {"Two",phosphor::led::Layout::Blink},
- {"Three",phosphor::led::Layout::Blink},
+ {"One",phosphor::led::Layout::Blink, 0,
+ 0, phosphor::led::Layout::Blink},
+ {"Two",phosphor::led::Layout::Blink, 0,
+ 0, phosphor::led::Layout::Blink},
+ {"Three",phosphor::led::Layout::Blink, 0,
+ 0, phosphor::led::Layout::Blink},
};
EXPECT_EQ(refAssert.size(), ledsAssert.size());
EXPECT_EQ(0, ledsDeAssert.size());
- EXPECT_EQ(0, ledsUpdate.size());
// difference of refAssert and ledsAssert must be null.
Manager::group temp {};
@@ -206,22 +203,23 @@ TEST_F(LedTest, assertMultipleLedBlinkAndDeAssert)
// Assert the LEDs.
Manager::group ledsAssert {};
Manager::group ledsDeAssert {};
- Manager::group ledsUpdate {};
auto group = "/xyz/openbmc_project/ledmanager/groups/MultipleLeds";
auto result = manager.setGroupState(group, true, ledsAssert,
- ledsDeAssert, ledsUpdate);
+ ledsDeAssert);
EXPECT_EQ(true, result);
// Need just the ledsAssserted populated with these.
std::set<Layout::LedAction> refAssert = {
- {"One",phosphor::led::Layout::Blink},
- {"Two",phosphor::led::Layout::Blink},
- {"Three",phosphor::led::Layout::Blink},
+ {"One",phosphor::led::Layout::Blink, 0,
+ 0, phosphor::led::Layout::Blink},
+ {"Two",phosphor::led::Layout::Blink, 0,
+ 0, phosphor::led::Layout::Blink},
+ {"Three",phosphor::led::Layout::Blink, 0,
+ 0, phosphor::led::Layout::Blink},
};
EXPECT_EQ(refAssert.size(), ledsAssert.size());
EXPECT_EQ(0, ledsDeAssert.size());
- EXPECT_EQ(0, ledsUpdate.size());
// difference of refAssert and ledsAssert must be null.
Manager::group temp {};
@@ -234,22 +232,23 @@ TEST_F(LedTest, assertMultipleLedBlinkAndDeAssert)
// Assert the LEDs.
Manager::group ledsAssert {};
Manager::group ledsDeAssert {};
- Manager::group ledsUpdate {};
auto group = "/xyz/openbmc_project/ledmanager/groups/MultipleLeds";
auto result = manager.setGroupState(group, false, ledsAssert,
- ledsDeAssert, ledsUpdate);
+ ledsDeAssert);
EXPECT_EQ(false, result);
// Need just the ledsAssserted populated with these.
std::set<Layout::LedAction> refDeAssert = {
- {"One",phosphor::led::Layout::Blink},
- {"Two",phosphor::led::Layout::Blink},
- {"Three",phosphor::led::Layout::Blink},
+ {"One",phosphor::led::Layout::Blink, 0,
+ 0, phosphor::led::Layout::Blink},
+ {"Two",phosphor::led::Layout::Blink, 0,
+ 0, phosphor::led::Layout::Blink},
+ {"Three",phosphor::led::Layout::Blink, 0,
+ 0, phosphor::led::Layout::Blink},
};
EXPECT_EQ(refDeAssert.size(), ledsDeAssert.size());
EXPECT_EQ(0, ledsAssert.size());
- EXPECT_EQ(0, ledsUpdate.size());
// difference of refDeAssert and ledsDeAssert must be null.
Manager::group temp {};
@@ -268,22 +267,23 @@ TEST_F(LedTest, assertMultipleLedBlinkAndDeAssertTwice)
// Assert the LEDs.
Manager::group ledsAssert {};
Manager::group ledsDeAssert {};
- Manager::group ledsUpdate {};
auto group = "/xyz/openbmc_project/ledmanager/groups/MultipleLeds";
auto result = manager.setGroupState(group, true, ledsAssert,
- ledsDeAssert, ledsUpdate);
+ ledsDeAssert);
EXPECT_EQ(true, result);
// Need just the ledsAssserted populated with these.
std::set<Layout::LedAction> refAssert = {
- {"One",phosphor::led::Layout::Blink},
- {"Two",phosphor::led::Layout::Blink},
- {"Three",phosphor::led::Layout::Blink},
+ {"One",phosphor::led::Layout::Blink, 0,
+ 0, phosphor::led::Layout::Blink},
+ {"Two",phosphor::led::Layout::Blink, 0,
+ 0, phosphor::led::Layout::Blink},
+ {"Three",phosphor::led::Layout::Blink, 0,
+ 0, phosphor::led::Layout::Blink},
};
EXPECT_EQ(refAssert.size(), ledsAssert.size());
EXPECT_EQ(0, ledsDeAssert.size());
- EXPECT_EQ(0, ledsUpdate.size());
// difference of refAssert and ledsAssert must be null.
Manager::group temp {};
@@ -296,22 +296,23 @@ TEST_F(LedTest, assertMultipleLedBlinkAndDeAssertTwice)
// DeAssert the LEDs.
Manager::group ledsAssert {};
Manager::group ledsDeAssert {};
- Manager::group ledsUpdate {};
auto group = "/xyz/openbmc_project/ledmanager/groups/MultipleLeds";
auto result = manager.setGroupState(group, false, ledsAssert,
- ledsDeAssert, ledsUpdate);
+ ledsDeAssert);
EXPECT_EQ(false, result);
// Need just the ledsAssserted populated with these.
std::set<Layout::LedAction> refDeAssert = {
- {"One",phosphor::led::Layout::Blink},
- {"Two",phosphor::led::Layout::Blink},
- {"Three",phosphor::led::Layout::Blink},
+ {"One",phosphor::led::Layout::Blink, 0,
+ 0, phosphor::led::Layout::Blink},
+ {"Two",phosphor::led::Layout::Blink, 0,
+ 0, phosphor::led::Layout::Blink},
+ {"Three",phosphor::led::Layout::Blink, 0,
+ 0, phosphor::led::Layout::Blink},
};
EXPECT_EQ(refDeAssert.size(), ledsDeAssert.size());
EXPECT_EQ(0, ledsAssert.size());
- EXPECT_EQ(0, ledsUpdate.size());
// difference of refDeAssert and ledsDeAssert must be null.
Manager::group temp {};
@@ -324,15 +325,13 @@ TEST_F(LedTest, assertMultipleLedBlinkAndDeAssertTwice)
// DeAssert the LEDs.
Manager::group ledsAssert {};
Manager::group ledsDeAssert {};
- Manager::group ledsUpdate {};
auto group = "/xyz/openbmc_project/ledmanager/groups/MultipleLeds";
auto result = manager.setGroupState(group, false, ledsAssert,
- ledsDeAssert, ledsUpdate);
+ ledsDeAssert);
EXPECT_EQ(false, result);
EXPECT_EQ(0, ledsDeAssert.size());
EXPECT_EQ(0, ledsAssert.size());
- EXPECT_EQ(0, ledsUpdate.size());
}
}
@@ -344,24 +343,27 @@ TEST_F(LedTest, assertMultipleLedOnAndBlink)
// Assert the LEDs.
Manager::group ledsAssert {};
Manager::group ledsDeAssert {};
- Manager::group ledsUpdate {};
auto group = "/xyz/openbmc_project/ledmanager/groups/MultipleLedsMix";
auto result = manager.setGroupState(group, true, ledsAssert,
- ledsDeAssert, ledsUpdate);
+ ledsDeAssert);
EXPECT_EQ(true, result);
// Need just the ledsAssserted populated with these.
std::set<Layout::LedAction> refAssert = {
- {"One",phosphor::led::Layout::Blink},
- {"Two",phosphor::led::Layout::On},
- {"Three",phosphor::led::Layout::Blink},
- {"Four",phosphor::led::Layout::On},
- {"Five",phosphor::led::Layout::On},
+ {"One",phosphor::led::Layout::Blink, 0,
+ 0, phosphor::led::Layout::Blink},
+ {"Two",phosphor::led::Layout::On,
+ 0, phosphor::led::Layout::Blink},
+ {"Three",phosphor::led::Layout::Blink,
+ 0, phosphor::led::Layout::On},
+ {"Four",phosphor::led::Layout::On,
+ 0, phosphor::led::Layout::Blink},
+ {"Five",phosphor::led::Layout::On,
+ 0, phosphor::led::Layout::Blink},
};
EXPECT_EQ(refAssert.size(), ledsAssert.size());
EXPECT_EQ(0, ledsDeAssert.size());
- EXPECT_EQ(0, ledsUpdate.size());
// difference of refAssert and ledsAssert must be null.
Manager::group temp {};
@@ -380,22 +382,23 @@ TEST_F(LedTest, assertTwoGroupsOnWithDistinctLEDOn)
// Assert Set-A
Manager::group ledsAssert {};
Manager::group ledsDeAssert {};
- Manager::group ledsUpdate {};
auto group ="/xyz/openbmc_project/ledmanager/groups/MultipleLedsASet";
auto result = manager.setGroupState(group, true, ledsAssert,
- ledsDeAssert, ledsUpdate);
+ ledsDeAssert);
EXPECT_EQ(true, result);
// Need just the ledsAssserted populated with these.
std::set<Layout::LedAction> refAssert = {
- {"One",phosphor::led::Layout::On},
- {"Two",phosphor::led::Layout::On},
- {"Three",phosphor::led::Layout::On},
+ {"One",phosphor::led::Layout::On, 0,
+ 0, phosphor::led::Layout::Blink},
+ {"Two",phosphor::led::Layout::On, 0,
+ 0, phosphor::led::Layout::On},
+ {"Three",phosphor::led::Layout::On, 0,
+ 0, phosphor::led::Layout::Blink},
};
EXPECT_EQ(refAssert.size(), ledsAssert.size());
EXPECT_EQ(0, ledsDeAssert.size());
- EXPECT_EQ(0, ledsUpdate.size());
// difference of refAssert and ledsAssert must be null.
Manager::group temp {};
@@ -408,22 +411,23 @@ TEST_F(LedTest, assertTwoGroupsOnWithDistinctLEDOn)
// Assert Set-B
Manager::group ledsAssert {};
Manager::group ledsDeAssert {};
- Manager::group ledsUpdate {};
auto group ="/xyz/openbmc_project/ledmanager/groups/MultipleLedsBSet";
auto result = manager.setGroupState(group, true, ledsAssert,
- ledsDeAssert, ledsUpdate);
+ ledsDeAssert);
EXPECT_EQ(true, result);
// Need just the ledsAssserted populated with these.
std::set<Layout::LedAction> refAssert = {
- {"Four",phosphor::led::Layout::On},
- {"Five",phosphor::led::Layout::On},
- {"Six",phosphor::led::Layout::On},
+ {"Four",phosphor::led::Layout::On, 0,
+ 0, phosphor::led::Layout::Blink},
+ {"Five",phosphor::led::Layout::On, 0,
+ 0, phosphor::led::Layout::Blink},
+ {"Six",phosphor::led::Layout::On, 0,
+ 0, phosphor::led::Layout::On},
};
EXPECT_EQ(refAssert.size(), ledsAssert.size());
EXPECT_EQ(0, ledsDeAssert.size());
- EXPECT_EQ(0, ledsUpdate.size());
// difference of refAssert and ledsAssert must be null.
Manager::group temp {};
@@ -442,22 +446,23 @@ TEST_F(LedTest, asserttwoGroupsWithOneComonLEDOn)
// Assert Set-A
Manager::group ledsAssert {};
Manager::group ledsDeAssert {};
- Manager::group ledsUpdate {};
auto group ="/xyz/openbmc_project/ledmanager/groups/MultipleLedsASet";
auto result = manager.setGroupState(group, true, ledsAssert,
- ledsDeAssert, ledsUpdate);
+ ledsDeAssert);
EXPECT_EQ(true, result);
// Need just the ledsAssserted populated with these.
std::set<Layout::LedAction> refAssert = {
- {"One",phosphor::led::Layout::On},
- {"Two",phosphor::led::Layout::On},
- {"Three",phosphor::led::Layout::On},
+ {"One",phosphor::led::Layout::On, 0,
+ 0, phosphor::led::Layout::On},
+ {"Two",phosphor::led::Layout::On, 0,
+ 0, phosphor::led::Layout::On},
+ {"Three",phosphor::led::Layout::On, 0,
+ 0, phosphor::led::Layout::On},
};
EXPECT_EQ(refAssert.size(), ledsAssert.size());
EXPECT_EQ(0, ledsDeAssert.size());
- EXPECT_EQ(0, ledsUpdate.size());
// difference of refAssert and ledsAssert must be null.
Manager::group temp {};
@@ -470,21 +475,21 @@ TEST_F(LedTest, asserttwoGroupsWithOneComonLEDOn)
// Assert Set-B
Manager::group ledsAssert {};
Manager::group ledsDeAssert {};
- Manager::group ledsUpdate {};
auto group ="/xyz/openbmc_project/ledmanager/groups/MultipleLedsBSet";
auto result = manager.setGroupState(group, true, ledsAssert,
- ledsDeAssert, ledsUpdate);
+ ledsDeAssert);
EXPECT_EQ(true, result);
// Need just the ledsAssserted populated with these.
std::set<Layout::LedAction> refAssert = {
- {"Four",phosphor::led::Layout::On},
- {"Six",phosphor::led::Layout::On},
+ {"Four",phosphor::led::Layout::On, 0,
+ 0, phosphor::led::Layout::On},
+ {"Six",phosphor::led::Layout::On, 0,
+ 0, phosphor::led::Layout::On},
};
EXPECT_EQ(refAssert.size(), ledsAssert.size());
EXPECT_EQ(0, ledsDeAssert.size());
- EXPECT_EQ(0, ledsUpdate.size());
// difference of refAssert and ledsAssert must be null.
Manager::group temp {};
@@ -495,30 +500,32 @@ TEST_F(LedTest, asserttwoGroupsWithOneComonLEDOn)
}
}
-/** @brief Assert 2 groups having one of the LEDs common in different state */
-TEST_F(LedTest, assertTwoGroupsWithOneComonLEDInDifferentState)
+/** @brief Assert 2 groups having one of the LEDs common but having Blink as
+ * priority and Deassert*/
+TEST_F(LedTest, asserttwoGroupsWithOneComonLEDOnOneLEDBlinkPriorityAndDeAssertB)
{
- Manager manager(bus, twoGroupsWithOneComonLEDInDifferentState);
+ Manager manager(bus, twoGroupsWithOneComonLEDOnOneLEDBlinkPriority);
{
// Assert Set-A
Manager::group ledsAssert {};
Manager::group ledsDeAssert {};
- Manager::group ledsUpdate {};
auto group ="/xyz/openbmc_project/ledmanager/groups/MultipleLedsASet";
auto result = manager.setGroupState(group, true, ledsAssert,
- ledsDeAssert, ledsUpdate);
+ ledsDeAssert);
EXPECT_EQ(true, result);
// Need just the ledsAssserted populated with these.
std::set<Layout::LedAction> refAssert = {
- {"One",phosphor::led::Layout::On},
- {"Two",phosphor::led::Layout::On},
- {"Three",phosphor::led::Layout::On},
+ {"One",phosphor::led::Layout::On, 0,
+ 0, phosphor::led::Layout::On},
+ {"Two",phosphor::led::Layout::On, 0,
+ 0, phosphor::led::Layout::On},
+ {"Three",phosphor::led::Layout::Blink, 0,
+ 0, phosphor::led::Layout::Blink},
};
EXPECT_EQ(refAssert.size(), ledsAssert.size());
EXPECT_EQ(0, ledsDeAssert.size());
- EXPECT_EQ(0, ledsUpdate.size());
// difference of refAssert and ledsAssert must be null.
Manager::group temp {};
@@ -531,23 +538,22 @@ TEST_F(LedTest, assertTwoGroupsWithOneComonLEDInDifferentState)
// Assert Set-B
Manager::group ledsAssert {};
Manager::group ledsDeAssert {};
- Manager::group ledsUpdate {};
auto group ="/xyz/openbmc_project/ledmanager/groups/MultipleLedsBSet";
auto result = manager.setGroupState(group, true, ledsAssert,
- ledsDeAssert, ledsUpdate);
+ ledsDeAssert);
EXPECT_EQ(true, result);
// Need just the ledsAssserted populated with these.
+ // Does not action on [Three] since priority is [Blink]
std::set<Layout::LedAction> refAssert = {
- {"Two",phosphor::led::Layout::Blink},
- {"Four",phosphor::led::Layout::On},
- {"Five",phosphor::led::Layout::On},
- {"Six",phosphor::led::Layout::On},
+ {"Four",phosphor::led::Layout::On, 0,
+ 0, phosphor::led::Layout::On},
+ {"Six",phosphor::led::Layout::On, 0,
+ 0, phosphor::led::Layout::On},
};
EXPECT_EQ(refAssert.size(), ledsAssert.size());
EXPECT_EQ(0, ledsDeAssert.size());
- EXPECT_EQ(0, ledsUpdate.size());
// difference of refAssert and ledsAssert must be null.
Manager::group temp {};
@@ -556,33 +562,366 @@ TEST_F(LedTest, assertTwoGroupsWithOneComonLEDInDifferentState)
std::inserter(temp, temp.begin()));
EXPECT_EQ(0, temp.size());
}
+ {
+ // De-Assert Set-B
+ Manager::group ledsAssert {};
+ Manager::group ledsDeAssert {};
+
+ auto group ="/xyz/openbmc_project/ledmanager/groups/MultipleLedsBSet";
+ auto result = manager.setGroupState(group, false, ledsAssert,
+ ledsDeAssert);
+ EXPECT_EQ(false, result);
+
+ // Need just the ledsDeAssserted populated with these.
+ std::set<Layout::LedAction> refDeAssert = {
+ {"Four",phosphor::led::Layout::On, 0,
+ 0, phosphor::led::Layout::On},
+ {"Six",phosphor::led::Layout::On, 0,
+ 0, phosphor::led::Layout::On},
+ };
+ EXPECT_EQ(refDeAssert.size(), ledsDeAssert.size());
+ EXPECT_EQ(0, ledsAssert.size());
+
+ // difference of refDeAssert and ledsDeAssert must be null.
+ // [Three] is not touched since its already [Blink]
+ Manager::group temp {};
+ std::set_difference(ledsDeAssert.begin(), ledsDeAssert.end(),
+ refDeAssert.begin(), refDeAssert.end(),
+ std::inserter(temp, temp.begin()));
+ EXPECT_EQ(0, temp.size());
+ }
+}
+
+/** @brief Assert 2 groups having one of the LEDs common but having Blink as
+ * priority and Deassert A */
+TEST_F(LedTest, asserttwoGroupsWithOneComonLEDOnOneLEDBlinkPriorityAndDeAssertA)
+{
+ Manager manager(bus, twoGroupsWithOneComonLEDOnOneLEDBlinkPriority);
+ {
+ // Assert Set-A
+ Manager::group ledsAssert {};
+ Manager::group ledsDeAssert {};
+
+ auto group ="/xyz/openbmc_project/ledmanager/groups/MultipleLedsASet";
+ auto result = manager.setGroupState(group, true, ledsAssert,
+ ledsDeAssert);
+ EXPECT_EQ(true, result);
+
+ // Need just the ledsAssserted populated with these.
+ std::set<Layout::LedAction> refAssert = {
+ {"One",phosphor::led::Layout::On, 0,
+ 0, phosphor::led::Layout::On},
+ {"Two",phosphor::led::Layout::On, 0,
+ 0, phosphor::led::Layout::On},
+ {"Three",phosphor::led::Layout::Blink, 0,
+ 0, phosphor::led::Layout::Blink},
+ };
+ EXPECT_EQ(refAssert.size(), ledsAssert.size());
+ EXPECT_EQ(0, ledsDeAssert.size());
+
+ // difference of refAssert and ledsAssert must be null.
+ Manager::group temp {};
+ std::set_difference(ledsAssert.begin(), ledsAssert.end(),
+ refAssert.begin(), refAssert.end(),
+ std::inserter(temp, temp.begin()));
+ EXPECT_EQ(0, temp.size());
+ }
+ {
+ // Assert Set-B
+ Manager::group ledsAssert {};
+ Manager::group ledsDeAssert {};
+
+ auto group ="/xyz/openbmc_project/ledmanager/groups/MultipleLedsBSet";
+ auto result = manager.setGroupState(group, true, ledsAssert,
+ ledsDeAssert);
+ EXPECT_EQ(true, result);
+
+ // Need just the ledsAssserted populated with these.
+ // [Three] does not get actioned since it has Blink priority
+ std::set<Layout::LedAction> refAssert = {
+ {"Four",phosphor::led::Layout::On, 0,
+ 0, phosphor::led::Layout::On},
+ {"Six",phosphor::led::Layout::On, 0,
+ 0, phosphor::led::Layout::On},
+ };
+ EXPECT_EQ(refAssert.size(), ledsAssert.size());
+ EXPECT_EQ(0, ledsDeAssert.size());
+
+ // difference of refAssert and ledsAssert must be null.
+ Manager::group temp {};
+ std::set_difference(ledsAssert.begin(), ledsAssert.end(),
+ refAssert.begin(), refAssert.end(),
+ std::inserter(temp, temp.begin()));
+ EXPECT_EQ(0, temp.size());
+ }
+ {
+ // De-Assert Set-A
+ Manager::group ledsAssert {};
+ Manager::group ledsDeAssert {};
+
+ auto group ="/xyz/openbmc_project/ledmanager/groups/MultipleLedsASet";
+ auto result = manager.setGroupState(group, false, ledsAssert,
+ ledsDeAssert);
+ EXPECT_EQ(false, result);
+
+ // Need just the ledsDeAssserted populated with these.
+ std::set<Layout::LedAction> refDeAssert = {
+ {"One",phosphor::led::Layout::On, 0,
+ 0, phosphor::led::Layout::On},
+ {"Two",phosphor::led::Layout::On, 0,
+ 0, phosphor::led::Layout::On},
+ };
+ EXPECT_EQ(refDeAssert.size(), ledsDeAssert.size());
+
+ // difference of refDeAssert and ledsDeAssert must be null.
+ Manager::group temp {};
+ std::set_difference(ledsDeAssert.begin(), ledsDeAssert.end(),
+ refDeAssert.begin(), refDeAssert.end(),
+ std::inserter(temp, temp.begin()));
+ EXPECT_EQ(0, temp.size());
+
+ // Need just the ledsAssert populated with these.
+ std::set<Layout::LedAction> refAssert = {
+ {"Three",phosphor::led::Layout::On, 0,
+ 0, phosphor::led::Layout::Blink},
+ };
+ EXPECT_EQ(refAssert.size(), ledsAssert.size());
+
+ // difference of refAssert and ledsAssert must be null.
+ Manager::group temp1 {};
+ std::set_difference(ledsAssert.begin(), ledsAssert.end(),
+ refAssert.begin(), refAssert.end(),
+ std::inserter(temp1, temp1.begin()));
+ EXPECT_EQ(0, temp1.size());
+ }
+}
+
+/** @brief Assert 2 groups having one of the LEDs common but having ON as
+ * priority And Deassert A */
+TEST_F(LedTest, asserttwoGroupsWithOneComonLEDOnOneLEDOnPriorityAndDeAssertA)
+{
+ Manager manager(bus, twoGroupsWithOneComonLEDOnPriority);
+ {
+ // Assert Set-A
+ Manager::group ledsAssert {};
+ Manager::group ledsDeAssert {};
+
+ auto group ="/xyz/openbmc_project/ledmanager/groups/MultipleLedsASet";
+ auto result = manager.setGroupState(group, true,
+ ledsAssert, ledsDeAssert);
+ EXPECT_EQ(true, result);
+
+ // Need just the ledsAssserted populated with these.
+ std::set<Layout::LedAction> refAssert = {
+ {"One",phosphor::led::Layout::On, 0,
+ 0, phosphor::led::Layout::On},
+ {"Two",phosphor::led::Layout::On, 0,
+ 0, phosphor::led::Layout::On},
+ {"Three",phosphor::led::Layout::Blink, 0,
+ 0, phosphor::led::Layout::On},
+ };
+ EXPECT_EQ(refAssert.size(), ledsAssert.size());
+ EXPECT_EQ(0, ledsDeAssert.size());
+
+ // difference of refAssert and ledsAssert must be null.
+ Manager::group temp {};
+ std::set_difference(ledsAssert.begin(), ledsAssert.end(),
+ refAssert.begin(), refAssert.end(),
+ std::inserter(temp, temp.begin()));
+ EXPECT_EQ(0, temp.size());
+ }
+ {
+ // Assert Set-B
+ Manager::group ledsAssert {};
+ Manager::group ledsDeAssert {};
+
+ auto group ="/xyz/openbmc_project/ledmanager/groups/MultipleLedsBSet";
+ auto result = manager.setGroupState(group, true, ledsAssert,
+ ledsDeAssert);
+ EXPECT_EQ(true, result);
+
+ // Need just the ledsAssserted populated with these.
+ // Three is set to ON due to ON priority.
+ std::set<Layout::LedAction> refAssert = {
+ {"Three",phosphor::led::Layout::On, 0,
+ 0, phosphor::led::Layout::On},
+ {"Four",phosphor::led::Layout::On, 0,
+ 0, phosphor::led::Layout::On},
+ {"Six",phosphor::led::Layout::On, 0,
+ 0, phosphor::led::Layout::On},
+ };
+ EXPECT_EQ(refAssert.size(), ledsAssert.size());
+ EXPECT_EQ(0, ledsDeAssert.size());
+
+ // difference of refAssert and ledsAssert must be null.
+ Manager::group temp {};
+ std::set_difference(ledsAssert.begin(), ledsAssert.end(),
+ refAssert.begin(), refAssert.end(),
+ std::inserter(temp, temp.begin()));
+ }
+ {
+ // De-Assert Set-A
+ Manager::group ledsAssert {};
+ Manager::group ledsDeAssert {};
+
+ auto group ="/xyz/openbmc_project/ledmanager/groups/MultipleLedsASet";
+ auto result = manager.setGroupState(group, false, ledsAssert,
+ ledsDeAssert);
+ EXPECT_EQ(false, result);
+
+ // Need just the ledsDeAssserted populated with these.
+ // [Three] stays in [On] since [B] has it [On]
+ std::set<Layout::LedAction> refDeAssert = {
+ {"One",phosphor::led::Layout::On, 0,
+ 0, phosphor::led::Layout::On},
+ {"Two",phosphor::led::Layout::On, 0,
+ 0, phosphor::led::Layout::On},
+ };
+ EXPECT_EQ(refDeAssert.size(), ledsDeAssert.size());
+ EXPECT_EQ(0, ledsAssert.size());
+
+ // difference of refDeAssert and ledsDeAssert must be null.
+ Manager::group temp {};
+ std::set_difference(ledsDeAssert.begin(), ledsDeAssert.end(),
+ refDeAssert.begin(), refDeAssert.end(),
+ std::inserter(temp, temp.begin()));
+ EXPECT_EQ(0, temp.size());
+ }
+}
+
+/** @brief Assert 2 groups having one of the LEDs common but having ON as
+ * priority And Deassert B */
+TEST_F(LedTest, asserttwoGroupsWithOneComonLEDOnOneLEDOnPriorityAndDeAssertB)
+{
+ Manager manager(bus, twoGroupsWithOneComonLEDOnPriority);
+ {
+ // Assert Set-A
+ Manager::group ledsAssert {};
+ Manager::group ledsDeAssert {};
+
+ auto group ="/xyz/openbmc_project/ledmanager/groups/MultipleLedsASet";
+ auto result = manager.setGroupState(group, true, ledsAssert,
+ ledsDeAssert);
+ EXPECT_EQ(true, result);
+
+ // Need just the ledsAssserted populated with these.
+ std::set<Layout::LedAction> refAssert = {
+ {"One",phosphor::led::Layout::On, 0,
+ 0, phosphor::led::Layout::On},
+ {"Two",phosphor::led::Layout::On, 0,
+ 0, phosphor::led::Layout::On},
+ {"Three",phosphor::led::Layout::Blink, 0,
+ 0, phosphor::led::Layout::On},
+ };
+ EXPECT_EQ(refAssert.size(), ledsAssert.size());
+ EXPECT_EQ(0, ledsDeAssert.size());
+
+ // difference of refAssert and ledsAssert must be null.
+ Manager::group temp {};
+ std::set_difference(ledsAssert.begin(), ledsAssert.end(),
+ refAssert.begin(), refAssert.end(),
+ std::inserter(temp, temp.begin()));
+ EXPECT_EQ(0, temp.size());
+ }
+ {
+ // Assert Set-B
+ Manager::group ledsAssert {};
+ Manager::group ledsDeAssert {};
+
+ auto group ="/xyz/openbmc_project/ledmanager/groups/MultipleLedsBSet";
+ auto result = manager.setGroupState(group, true, ledsAssert,
+ ledsDeAssert);
+ EXPECT_EQ(true, result);
+
+ // Need just the ledsAssserted populated with these.
+ // Three is set to ON due to ON priority.
+ std::set<Layout::LedAction> refAssert = {
+ {"Three",phosphor::led::Layout::On, 0,
+ 0, phosphor::led::Layout::On},
+ {"Four",phosphor::led::Layout::On, 0,
+ 0, phosphor::led::Layout::On},
+ {"Six",phosphor::led::Layout::On, 0,
+ 0, phosphor::led::Layout::On},
+ };
+ EXPECT_EQ(refAssert.size(), ledsAssert.size());
+ EXPECT_EQ(0, ledsDeAssert.size());
+
+ // difference of refAssert and ledsAssert must be null.
+ Manager::group temp {};
+ std::set_difference(ledsAssert.begin(), ledsAssert.end(),
+ refAssert.begin(), refAssert.end(),
+ std::inserter(temp, temp.begin()));
+ }
+ {
+ // De-Assert Set-B
+ Manager::group ledsAssert {};
+ Manager::group ledsDeAssert {};
+
+ auto group ="/xyz/openbmc_project/ledmanager/groups/MultipleLedsBSet";
+ auto result = manager.setGroupState(group, false, ledsAssert,
+ ledsDeAssert);
+ EXPECT_EQ(false, result);
+
+ // Need just the ledsDeAssserted populated with these.
+ std::set<Layout::LedAction> refDeAssert = {
+ {"Four",phosphor::led::Layout::On, 0,
+ 0, phosphor::led::Layout::On},
+ {"Six",phosphor::led::Layout::On, 0,
+ 0, phosphor::led::Layout::On},
+ };
+ EXPECT_EQ(refDeAssert.size(), ledsDeAssert.size());
+
+ // difference of refDeAssert and ledsDeAssert must be null.
+ Manager::group temp {};
+ std::set_difference(ledsDeAssert.begin(), ledsDeAssert.end(),
+ refDeAssert.begin(), refDeAssert.end(),
+ std::inserter(temp, temp.begin()));
+ EXPECT_EQ(0, temp.size());
+
+ // Need just the ledsAssert populated with these.
+ // Since [Three] stood [On], need to go back to [Blink]
+ std::set<Layout::LedAction> refAssert = {
+ {"Three",phosphor::led::Layout::Blink, 0,
+ 0, phosphor::led::Layout::On},
+ };
+ EXPECT_EQ(refAssert.size(), ledsAssert.size());
+
+ // difference of refAssert and ledsAssert must be null.
+ Manager::group temp1 {};
+ std::set_difference(ledsAssert.begin(), ledsAssert.end(),
+ refAssert.begin(), refAssert.end(),
+ std::inserter(temp, temp.begin()));
+ EXPECT_EQ(0, temp.size());
+ }
}
/** @brief Assert 2 groups having multiple common LEDs in Same State */
-TEST_F(LedTest, assertTwoGroupsWithMultiplComonLEDOn)
+TEST_F(LedTest, assertTwoGroupsWithMultiplComonLEDOnAndDeAssert)
{
Manager manager(bus, twoGroupsWithMultiplComonLEDOn);
{
// Assert Set-B
Manager::group ledsAssert {};
Manager::group ledsDeAssert {};
- Manager::group ledsUpdate {};
auto group ="/xyz/openbmc_project/ledmanager/groups/MultipleLedsBSet";
auto result = manager.setGroupState(group, true, ledsAssert,
- ledsDeAssert, ledsUpdate);
+ ledsDeAssert);
EXPECT_EQ(true, result);
// Need just the ledsAssserted populated with these.
std::set<Layout::LedAction> refAssert = {
- {"Two",phosphor::led::Layout::On},
- {"Six",phosphor::led::Layout::On},
- {"Three",phosphor::led::Layout::On},
- {"Seven",phosphor::led::Layout::On},
+ {"Two",phosphor::led::Layout::On, 0,
+ 0, phosphor::led::Layout::On},
+ {"Six",phosphor::led::Layout::On, 0,
+ 0, phosphor::led::Layout::On},
+ {"Three",phosphor::led::Layout::On, 0,
+ 0, phosphor::led::Layout::On},
+ {"Seven",phosphor::led::Layout::On, 0,
+ 0, phosphor::led::Layout::On},
};
EXPECT_EQ(refAssert.size(), ledsAssert.size());
EXPECT_EQ(0, ledsDeAssert.size());
- EXPECT_EQ(0, ledsUpdate.size());
// difference of refAssert and ledsAssert must be null.
Manager::group temp {};
@@ -595,20 +934,19 @@ TEST_F(LedTest, assertTwoGroupsWithMultiplComonLEDOn)
// Assert Set-A
Manager::group ledsAssert {};
Manager::group ledsDeAssert {};
- Manager::group ledsUpdate {};
auto group ="/xyz/openbmc_project/ledmanager/groups/MultipleLedsASet";
auto result = manager.setGroupState(group, true, ledsAssert,
- ledsDeAssert, ledsUpdate);
+ ledsDeAssert);
EXPECT_EQ(true, result);
// Need just the ledsAssserted populated with these.
std::set<Layout::LedAction> refAssert = {
- {"One",phosphor::led::Layout::On},
+ {"One",phosphor::led::Layout::On, 0,
+ 0, phosphor::led::Layout::On},
};
EXPECT_EQ(refAssert.size(), ledsAssert.size());
EXPECT_EQ(0, ledsDeAssert.size());
- EXPECT_EQ(0, ledsUpdate.size());
// difference of refAssert and ledsAssert must be null.
Manager::group temp {};
@@ -617,33 +955,92 @@ TEST_F(LedTest, assertTwoGroupsWithMultiplComonLEDOn)
std::inserter(temp, temp.begin()));
EXPECT_EQ(0, temp.size());
}
+ {
+ // De-Assert Set-B
+ Manager::group ledsAssert {};
+ Manager::group ledsDeAssert {};
+
+ auto group ="/xyz/openbmc_project/ledmanager/groups/MultipleLedsBSet";
+ auto result = manager.setGroupState(group, false, ledsAssert,
+ ledsDeAssert);
+ EXPECT_EQ(false, result);
+
+ // Need just the ledsDeAssserted populated with these.
+ std::set<Layout::LedAction> refDeAssert = {
+ {"Six",phosphor::led::Layout::On, 0,
+ 0, phosphor::led::Layout::On},
+ {"Seven",phosphor::led::Layout::On, 0,
+ 0, phosphor::led::Layout::On},
+ };
+ EXPECT_EQ(refDeAssert.size(), ledsDeAssert.size());
+ EXPECT_EQ(0, ledsAssert.size());
+
+ // difference of refDeAssert and ledsDeAssert must be null.
+ Manager::group temp {};
+ std::set_difference(ledsDeAssert.begin(), ledsDeAssert.end(),
+ refDeAssert.begin(), refDeAssert.end(),
+ std::inserter(temp, temp.begin()));
+ EXPECT_EQ(0, temp.size());
+
+ }
}
/** @brief Assert 2 groups having multiple LEDs common in different state */
-TEST_F(LedTest, assertTwoGroupsWithMultipleComonLEDInDifferentStates)
+TEST_F(LedTest, assertTwoGroupsWithMultipleComonLEDInDifferentStateBandA)
{
Manager manager(bus, twoGroupsWithMultipleComonLEDInDifferentState);
{
+ // Assert Set-B
+ Manager::group ledsAssert {};
+ Manager::group ledsDeAssert {};
+
+ auto group ="/xyz/openbmc_project/ledmanager/groups/MultipleLedsBSet";
+ auto result = manager.setGroupState(group, true, ledsAssert,
+ ledsDeAssert);
+ EXPECT_EQ(true, result);
+
+ // Need just the ledsAssserted populated with these.
+ std::set<Layout::LedAction> refAssert = {
+ {"Two",phosphor::led::Layout::On, 0,
+ 0, phosphor::led::Layout::On},
+ {"Three",phosphor::led::Layout::Blink, 0,
+ 0, phosphor::led::Layout::On},
+ {"Five",phosphor::led::Layout::On, 0,
+ 0, phosphor::led::Layout::On},
+ {"Six",phosphor::led::Layout::On, 0,
+ 0, phosphor::led::Layout::On},
+ };
+ EXPECT_EQ(refAssert.size(), ledsAssert.size());
+ EXPECT_EQ(0, ledsDeAssert.size());
+
+ // difference of refAssert and ledsAssert must be null.
+ Manager::group temp {};
+ std::set_difference(ledsAssert.begin(), ledsAssert.end(),
+ refAssert.begin(), refAssert.end(),
+ std::inserter(temp, temp.begin()));
+ EXPECT_EQ(0, temp.size());
+ }
+ {
// Assert Set-A
Manager::group ledsAssert {};
Manager::group ledsDeAssert {};
- Manager::group ledsUpdate {};
auto group ="/xyz/openbmc_project/ledmanager/groups/MultipleLedsASet";
auto result = manager.setGroupState(group, true, ledsAssert,
- ledsDeAssert, ledsUpdate);
+ ledsDeAssert);
EXPECT_EQ(true, result);
- // Need just the ledsAssserted populated with these.
+ // Need just the ledsAssserted populated with these
+ // [Two] remains [On] due to higher priority.
+ // [Three] remains [Blink]
std::set<Layout::LedAction> refAssert = {
- {"One",phosphor::led::Layout::On},
- {"Two",phosphor::led::Layout::Blink},
- {"Three",phosphor::led::Layout::On},
- {"Four",phosphor::led::Layout::On},
+ {"One",phosphor::led::Layout::On, 0,
+ 0, phosphor::led::Layout::On},
+ {"Four",phosphor::led::Layout::On, 0,
+ 0, phosphor::led::Layout::On},
};
EXPECT_EQ(refAssert.size(), ledsAssert.size());
EXPECT_EQ(0, ledsDeAssert.size());
- EXPECT_EQ(0, ledsUpdate.size());
// difference of refAssert and ledsAssert must be null.
Manager::group temp {};
@@ -652,28 +1049,67 @@ TEST_F(LedTest, assertTwoGroupsWithMultipleComonLEDInDifferentStates)
std::inserter(temp, temp.begin()));
EXPECT_EQ(0, temp.size());
}
+}
+
+/** @brief Assert 2 groups having multiple LEDs common in different state */
+TEST_F(LedTest, assertTwoGroupsWithMultipleComonLEDInDifferentStateAtoB)
+{
+ Manager manager(bus, twoGroupsWithMultipleComonLEDInDifferentState);
{
- // Assert Set-B
+ // Assert Set-A
Manager::group ledsAssert {};
Manager::group ledsDeAssert {};
- Manager::group ledsUpdate {};
- auto group ="/xyz/openbmc_project/ledmanager/groups/MultipleLedsBSet";
+ auto group ="/xyz/openbmc_project/ledmanager/groups/MultipleLedsASet";
auto result = manager.setGroupState(group, true, ledsAssert,
- ledsDeAssert, ledsUpdate);
+ ledsDeAssert);
EXPECT_EQ(true, result);
// Need just the ledsAssserted populated with these.'Two' gets to Blink
// due to higher priority.
std::set<Layout::LedAction> refAssert = {
- {"Two",phosphor::led::Layout::Blink},
- {"Three",phosphor::led::Layout::Blink},
- {"Five",phosphor::led::Layout::On},
- {"Six",phosphor::led::Layout::On},
+ {"One",phosphor::led::Layout::On, 0,
+ 0, phosphor::led::Layout::On},
+ {"Two",phosphor::led::Layout::Blink, 0,
+ 0, phosphor::led::Layout::On},
+ {"Three",phosphor::led::Layout::Blink, 0,
+ 0, phosphor::led::Layout::On},
+ {"Four",phosphor::led::Layout::On, 0,
+ 0, phosphor::led::Layout::On},
+ };
+ EXPECT_EQ(refAssert.size(), ledsAssert.size());
+ EXPECT_EQ(0, ledsDeAssert.size());
+
+ // difference of refAssert and ledsAssert must be null.
+ Manager::group temp {};
+ std::set_difference(ledsAssert.begin(), ledsAssert.end(),
+ refAssert.begin(), refAssert.end(),
+ std::inserter(temp, temp.begin()));
+ EXPECT_EQ(0, temp.size());
+ }
+ {
+ // Assert Set-B
+ Manager::group ledsAssert {};
+ Manager::group ledsDeAssert {};
+
+ auto group ="/xyz/openbmc_project/ledmanager/groups/MultipleLedsBSet";
+ auto result = manager.setGroupState(group, true, ledsAssert,
+ ledsDeAssert);
+ EXPECT_EQ(true, result);
+
+ // Need just the ledsAssserted populated with these.
+ // [Three] remains [Blink] from previous
+ // [Two] moves to [On] from [Blink] due to [On] priority
+ std::set<Layout::LedAction> refAssert = {
+ {"Two",phosphor::led::Layout::On, 0,
+ 0, phosphor::led::Layout::On},
+ {"Five",phosphor::led::Layout::On, 0,
+ 0, phosphor::led::Layout::On},
+ {"Six",phosphor::led::Layout::On, 0,
+ 0, phosphor::led::Layout::On},
};
EXPECT_EQ(refAssert.size(), ledsAssert.size());
EXPECT_EQ(0, ledsDeAssert.size());
- EXPECT_EQ(0, ledsUpdate.size());
// difference of refAssert and ledsAssert must be null.
Manager::group temp {};
@@ -684,32 +1120,35 @@ TEST_F(LedTest, assertTwoGroupsWithMultipleComonLEDInDifferentStates)
}
}
-/** @brief Assert 2 groups having multiple LEDs common in Same State
- * and then De-Assert One
+/** @brief Assert 2 groups having multiple LEDs common in different state
+ * DeAssert twice
*/
-TEST_F(LedTest, assertTwoGroupsWithMultipleComonLEDAndDeAssertOne)
+TEST_F(LedTest, assertTwoGroupsWithMultipleComonLEDInDifferentStateAtoBDeAssertTwice)
{
- Manager manager(bus, twoGroupsWithMultiplComonLEDOn);
+ Manager manager(bus, twoGroupsWithMultipleComonLEDInDifferentState);
{
// Assert Set-A
Manager::group ledsAssert {};
Manager::group ledsDeAssert {};
- Manager::group ledsUpdate {};
auto group ="/xyz/openbmc_project/ledmanager/groups/MultipleLedsASet";
auto result = manager.setGroupState(group, true, ledsAssert,
- ledsDeAssert, ledsUpdate);
+ ledsDeAssert);
EXPECT_EQ(true, result);
// Need just the ledsAssserted populated with these.
std::set<Layout::LedAction> refAssert = {
- {"One",phosphor::led::Layout::On},
- {"Two",phosphor::led::Layout::On},
- {"Three",phosphor::led::Layout::On},
+ {"One",phosphor::led::Layout::On, 0,
+ 0, phosphor::led::Layout::On},
+ {"Two",phosphor::led::Layout::Blink, 0,
+ 0, phosphor::led::Layout::On},
+ {"Three",phosphor::led::Layout::Blink, 0,
+ 0, phosphor::led::Layout::On},
+ {"Four",phosphor::led::Layout::On, 0,
+ 0, phosphor::led::Layout::On},
};
EXPECT_EQ(refAssert.size(), ledsAssert.size());
EXPECT_EQ(0, ledsDeAssert.size());
- EXPECT_EQ(0, ledsUpdate.size());
// difference of refAssert and ledsAssert must be null.
Manager::group temp {};
@@ -722,21 +1161,25 @@ TEST_F(LedTest, assertTwoGroupsWithMultipleComonLEDAndDeAssertOne)
// Assert Set-B
Manager::group ledsAssert {};
Manager::group ledsDeAssert {};
- Manager::group ledsUpdate {};
auto group ="/xyz/openbmc_project/ledmanager/groups/MultipleLedsBSet";
auto result = manager.setGroupState(group, true, ledsAssert,
- ledsDeAssert, ledsUpdate);
+ ledsDeAssert);
EXPECT_EQ(true, result);
// Need just the ledsAssserted populated with these.
+ // [Two] turns [On] due to priority
+ // [Three] remains [Blink]
std::set<Layout::LedAction> refAssert = {
- {"Six",phosphor::led::Layout::On},
- {"Seven",phosphor::led::Layout::On},
+ {"Two",phosphor::led::Layout::On, 0,
+ 0, phosphor::led::Layout::On},
+ {"Five",phosphor::led::Layout::On, 0,
+ 0, phosphor::led::Layout::On},
+ {"Six",phosphor::led::Layout::On, 0,
+ 0, phosphor::led::Layout::On},
};
EXPECT_EQ(refAssert.size(), ledsAssert.size());
EXPECT_EQ(0, ledsDeAssert.size());
- EXPECT_EQ(0, ledsUpdate.size());
// difference of refAssert and ledsAssert must be null.
Manager::group temp {};
@@ -746,59 +1189,154 @@ TEST_F(LedTest, assertTwoGroupsWithMultipleComonLEDAndDeAssertOne)
EXPECT_EQ(0, temp.size());
}
{
+ // DeAssert Set-B
+ Manager::group ledsAssert {};
+ Manager::group ledsDeAssert {};
+
+ auto group ="/xyz/openbmc_project/ledmanager/groups/MultipleLedsBSet";
+ auto result = manager.setGroupState(group, false, ledsAssert,
+ ledsDeAssert);
+ EXPECT_EQ(false, result);
+
+ // Need just the ledsAssserted populated with these.
+ std::set<Layout::LedAction> refDeAssert = {
+ {"Five",phosphor::led::Layout::On, 0,
+ 0, phosphor::led::Layout::On},
+ {"Six",phosphor::led::Layout::On, 0,
+ 0, phosphor::led::Layout::On},
+ };
+ EXPECT_EQ(refDeAssert.size(), ledsDeAssert.size());
+
+ // difference of refDeAssert and ledsDeAssert must be null.
+ Manager::group temp {};
+ std::set_difference(ledsDeAssert.begin(), ledsDeAssert.end(),
+ refDeAssert.begin(), refDeAssert.end(),
+ std::inserter(temp, temp.begin()));
+ EXPECT_EQ(0, temp.size());
+
+ // Need just the ledsAssert populated with these.
+ // [Two] will go back to [Blink] from [On]
+ std::set<Layout::LedAction> refAssert = {
+ {"Two",phosphor::led::Layout::Blink, 0,
+ 0, phosphor::led::Layout::On},
+ };
+ EXPECT_EQ(refAssert.size(), ledsAssert.size());
+
+ // difference of refAssert and ledsAssert must be null.
+ Manager::group temp1 {};
+ std::set_difference(ledsAssert.begin(), ledsAssert.end(),
+ refAssert.begin(), refAssert.end(),
+ std::inserter(temp1, temp1.begin()));
+ EXPECT_EQ(0, temp1.size());
+ }
+ {
// DeAssert Set-A
Manager::group ledsAssert {};
Manager::group ledsDeAssert {};
- Manager::group ledsUpdate {};
auto group ="/xyz/openbmc_project/ledmanager/groups/MultipleLedsASet";
auto result = manager.setGroupState(group, false, ledsAssert,
- ledsDeAssert, ledsUpdate);
+ ledsDeAssert);
EXPECT_EQ(false, result);
// Need just the ledsAssserted populated with these.
std::set<Layout::LedAction> refDeAssert = {
- {"One",phosphor::led::Layout::On},
+ {"One",phosphor::led::Layout::On, 0,
+ 0, phosphor::led::Layout::On},
+ {"Two",phosphor::led::Layout::Blink, 0,
+ 0, phosphor::led::Layout::On},
+ {"Three",phosphor::led::Layout::Blink, 0,
+ 0, phosphor::led::Layout::On},
+ {"Four",phosphor::led::Layout::On, 0,
+ 0, phosphor::led::Layout::On},
};
EXPECT_EQ(refDeAssert.size(), ledsDeAssert.size());
EXPECT_EQ(0, ledsAssert.size());
- EXPECT_EQ(0, ledsUpdate.size());
- // difference of refAssert and ledsAssert must be null.
+ // difference of refDeAssert and ledsDeAssert must be null.
Manager::group temp {};
std::set_difference(ledsDeAssert.begin(), ledsDeAssert.end(),
refDeAssert.begin(), refDeAssert.end(),
std::inserter(temp, temp.begin()));
EXPECT_EQ(0, temp.size());
}
+ {
+ // DeAssert Set-A again and make sure we get all empty
+ Manager::group ledsAssert {};
+ Manager::group ledsDeAssert {};
+
+ auto group ="/xyz/openbmc_project/ledmanager/groups/MultipleLedsASet";
+ auto result = manager.setGroupState(group, false, ledsAssert,
+ ledsDeAssert);
+ EXPECT_EQ(false, result);
+ EXPECT_EQ(0, ledsDeAssert.size());
+ EXPECT_EQ(0, ledsAssert.size());
+ }
}
-/** @brief Assert 2 groups having multiple LEDs common but in
- * different state and De-Assert one*/
-TEST_F(LedTest, assertTwoGroupsWithMultipleComonLEDInDifferentStateDeAssertOne)
+/** @brief Assert 2 groups having multiple LEDs common in different state and
+ * mixed priority. DeAssert-A
+ */
+TEST_F(LedTest, assertTwoGroupsWithMultipleComonLEDInDifferentStateDiffPriorityAandB)
{
- Manager manager(bus, twoGroupsWithMultipleComonLEDInDifferentState);
+ Manager manager(bus, twoGroupsWithMultipleComonLEDInDifferentStateDiffPriority);
+ {
+ // Assert Set-A
+ Manager::group ledsAssert {};
+ Manager::group ledsDeAssert {};
+
+ auto group ="/xyz/openbmc_project/ledmanager/groups/MultipleLedsASet";
+ auto result = manager.setGroupState(group, true, ledsAssert,
+ ledsDeAssert);
+ EXPECT_EQ(true, result);
+
+ // Need just the ledsAssserted populated with these.
+ std::set<Layout::LedAction> refAssert = {
+ {"One",phosphor::led::Layout::On, 0,
+ 0, phosphor::led::Layout::On},
+ {"Two",phosphor::led::Layout::Blink, 0,
+ 0, phosphor::led::Layout::On},
+ {"Three",phosphor::led::Layout::On, 0,
+ 0, phosphor::led::Layout::Blink},
+ {"Four",phosphor::led::Layout::On, 0,
+ 0, phosphor::led::Layout::On},
+ {"Ten",phosphor::led::Layout::Blink, 0,
+ 0, phosphor::led::Layout::Blink},
+ };
+ EXPECT_EQ(refAssert.size(), ledsAssert.size());
+ EXPECT_EQ(0, ledsDeAssert.size());
+
+ // difference of refAssert and ledsAssert must be null.
+ Manager::group temp {};
+ std::set_difference(ledsAssert.begin(), ledsAssert.end(),
+ refAssert.begin(), refAssert.end(),
+ std::inserter(temp, temp.begin()));
+ EXPECT_EQ(0, temp.size());
+ }
{
// Assert Set-B
Manager::group ledsAssert {};
Manager::group ledsDeAssert {};
- Manager::group ledsUpdate {};
auto group ="/xyz/openbmc_project/ledmanager/groups/MultipleLedsBSet";
auto result = manager.setGroupState(group, true, ledsAssert,
- ledsDeAssert, ledsUpdate);
+ ledsDeAssert);
EXPECT_EQ(true, result);
// Need just the ledsAssserted populated with these.
+ // [Two] gets to [ON] due to higher priority.
+ // [Three] remains on since it never was in [Blink] before
+ // [Ten] remains [Blink] due to priority: [Blink]
std::set<Layout::LedAction> refAssert = {
- {"Two",phosphor::led::Layout::On},
- {"Three",phosphor::led::Layout::Blink},
- {"Five",phosphor::led::Layout::On},
- {"Six",phosphor::led::Layout::On},
+ {"Two",phosphor::led::Layout::On, 0,
+ 0, phosphor::led::Layout::On},
+ {"Five",phosphor::led::Layout::On, 0,
+ 0, phosphor::led::Layout::On},
+ {"Six",phosphor::led::Layout::On, 0,
+ 0, phosphor::led::Layout::On},
};
EXPECT_EQ(refAssert.size(), ledsAssert.size());
EXPECT_EQ(0, ledsDeAssert.size());
- EXPECT_EQ(0, ledsUpdate.size());
// difference of refAssert and ledsAssert must be null.
Manager::group temp {};
@@ -808,27 +1346,74 @@ TEST_F(LedTest, assertTwoGroupsWithMultipleComonLEDInDifferentStateDeAssertOne)
EXPECT_EQ(0, temp.size());
}
{
+ // De-Assert Set-A
+ Manager::group ledsAssert {};
+ Manager::group ledsDeAssert {};
+
+ auto group ="/xyz/openbmc_project/ledmanager/groups/MultipleLedsASet";
+ auto result = manager.setGroupState(group, false, ledsAssert,
+ ledsDeAssert);
+ EXPECT_EQ(false, result);
+
+ // Need just the ledsDeAsssert populated with these.
+ std::set<Layout::LedAction> refDeAssert = {
+ {"One",phosphor::led::Layout::On, 0,
+ 0, phosphor::led::Layout::On},
+ {"Four",phosphor::led::Layout::On, 0,
+ 0, phosphor::led::Layout::On},
+ };
+ EXPECT_EQ(refDeAssert.size(), ledsDeAssert.size());
+
+ // Need just the ledsAsssert populated with these.
+ // [Ten] Moves to [On] since there is no prior [Blink]
+ // [Three] remains [On] since it never changed state.
+ // [Two] remains [On] since it did not go back
+ std::set<Layout::LedAction> refAssert = {
+ {"Ten",phosphor::led::Layout::On, 0,
+ 0, phosphor::led::Layout::Blink},
+ };
+ EXPECT_EQ(refAssert.size(), ledsAssert.size());
+
+ // difference of refAssert and ledsAssert must be null.
+ Manager::group temp {};
+ std::set_difference(ledsAssert.begin(), ledsAssert.end(),
+ refAssert.begin(), refAssert.end(),
+ std::inserter(temp, temp.begin()));
+ EXPECT_EQ(0, temp.size());
+ }
+}
+
+/** @brief Assert 2 groups having multiple LEDs common in different state and
+ * mixed priority. DeAssert-B
+ */
+TEST_F(LedTest, assertTwoGroupsWithMultipleComonLEDInDifferentStateDiffPriorityAandBDeAssertB)
+{
+ Manager manager(bus, twoGroupsWithMultipleComonLEDInDifferentStateDiffPriority);
+ {
// Assert Set-A
Manager::group ledsAssert {};
Manager::group ledsDeAssert {};
- Manager::group ledsUpdate {};
auto group ="/xyz/openbmc_project/ledmanager/groups/MultipleLedsASet";
auto result = manager.setGroupState(group, true, ledsAssert,
- ledsDeAssert, ledsUpdate);
+ ledsDeAssert);
EXPECT_EQ(true, result);
- // Need just the ledsAssserted populated with these. 'Three` remains at
- // Blink due to increased priority.
+ // Need just the ledsAssserted populated with these.
std::set<Layout::LedAction> refAssert = {
- {"One",phosphor::led::Layout::On},
- {"Two",phosphor::led::Layout::Blink},
- {"Three",phosphor::led::Layout::Blink},
- {"Four",phosphor::led::Layout::On},
+ {"One",phosphor::led::Layout::On, 0,
+ 0, phosphor::led::Layout::On},
+ {"Two",phosphor::led::Layout::Blink, 0,
+ 0, phosphor::led::Layout::On},
+ {"Three",phosphor::led::Layout::On, 0,
+ 0, phosphor::led::Layout::Blink},
+ {"Four",phosphor::led::Layout::On, 0,
+ 0, phosphor::led::Layout::On},
+ {"Ten",phosphor::led::Layout::Blink, 0,
+ 0, phosphor::led::Layout::Blink},
};
EXPECT_EQ(refAssert.size(), ledsAssert.size());
EXPECT_EQ(0, ledsDeAssert.size());
- EXPECT_EQ(0, ledsUpdate.size());
// difference of refAssert and ledsAssert must be null.
Manager::group temp {};
@@ -838,75 +1423,106 @@ TEST_F(LedTest, assertTwoGroupsWithMultipleComonLEDInDifferentStateDeAssertOne)
EXPECT_EQ(0, temp.size());
}
{
- // DeAssert Set-A
+ // Assert Set-B
Manager::group ledsAssert {};
Manager::group ledsDeAssert {};
- Manager::group ledsUpdate {};
- auto group ="/xyz/openbmc_project/ledmanager/groups/MultipleLedsASet";
- auto result = manager.setGroupState(group, false, ledsAssert,
- ledsDeAssert, ledsUpdate);
- EXPECT_EQ(false, result);
+ auto group ="/xyz/openbmc_project/ledmanager/groups/MultipleLedsBSet";
+ auto result = manager.setGroupState(group, true, ledsAssert,
+ ledsDeAssert);
+ EXPECT_EQ(true, result);
- // Need just the ledsUpdated populated with these.
- std::set<Layout::LedAction> refUpdate = {
- {"Two",phosphor::led::Layout::On},
- {"Three",phosphor::led::Layout::Blink},
+ // Need just the ledsAssserted populated with these.
+ // [Two] gets to [ON] due to higher priority.
+ // [Three] remains on since it never was in [Blink] before
+ // [Ten] remains [Blink] due to priority: [Blink]
+ std::set<Layout::LedAction> refAssert = {
+ {"Two",phosphor::led::Layout::On, 0,
+ 0, phosphor::led::Layout::On},
+ {"Five",phosphor::led::Layout::On, 0,
+ 0, phosphor::led::Layout::On},
+ {"Six",phosphor::led::Layout::On, 0,
+ 0, phosphor::led::Layout::On},
};
- EXPECT_EQ(refUpdate.size(), ledsUpdate.size());
- EXPECT_EQ(0, ledsAssert.size());
+ EXPECT_EQ(refAssert.size(), ledsAssert.size());
+ EXPECT_EQ(0, ledsDeAssert.size());
// difference of refAssert and ledsAssert must be null.
Manager::group temp {};
- std::set_difference(ledsUpdate.begin(), ledsUpdate.end(),
- refUpdate.begin(), refUpdate.end(),
+ std::set_difference(ledsAssert.begin(), ledsAssert.end(),
+ refAssert.begin(), refAssert.end(),
std::inserter(temp, temp.begin()));
EXPECT_EQ(0, temp.size());
+ }
+ {
+ // De-Assert Set-B
+ Manager::group ledsAssert {};
+ Manager::group ledsDeAssert {};
- // Need just the ledsDeAsserted populated with these.
+ auto group ="/xyz/openbmc_project/ledmanager/groups/MultipleLedsBSet";
+ auto result = manager.setGroupState(group, false, ledsAssert,
+ ledsDeAssert);
+ EXPECT_EQ(false, result);
+
+ // Need just the ledsDeAsssert populated with these.
std::set<Layout::LedAction> refDeAssert = {
- {"One",phosphor::led::Layout::On},
- {"Four",phosphor::led::Layout::On},
+ {"Five",phosphor::led::Layout::On, 0,
+ 0, phosphor::led::Layout::On},
+ {"Six",phosphor::led::Layout::On, 0,
+ 0, phosphor::led::Layout::On},
};
EXPECT_EQ(refDeAssert.size(), ledsDeAssert.size());
+ // Need just the ledsAsssert populated with these.
+ // [Ten] remains [Blink] since it did not move to [On]
+ // [Three] remains [On] since it never changed state.
+ // [Two] moves to [Blink] since there is no prior [On]
+ std::set<Layout::LedAction> refAssert = {
+ {"Two",phosphor::led::Layout::Blink, 0,
+ 0, phosphor::led::Layout::On},
+ };
+ EXPECT_EQ(refAssert.size(), ledsAssert.size());
+
// difference of refAssert and ledsAssert must be null.
- temp.clear();
- std::set_difference(ledsDeAssert.begin(), ledsDeAssert.end(),
- refDeAssert.begin(), refDeAssert.end(),
+ Manager::group temp {};
+ std::set_difference(ledsAssert.begin(), ledsAssert.end(),
+ refAssert.begin(), refAssert.end(),
std::inserter(temp, temp.begin()));
EXPECT_EQ(0, temp.size());
}
}
-/** @brief Assert 2 groups having multiple LEDs common but in
- * different state and De-Assert one and make sure the
- * state is changed back to Blink
+/** @brief Assert 2 groups having multiple LEDs common in different state and
+ * mixed priority.
*/
-TEST_F(LedTest, assertTwoGroupsWithMultipleComonLEDInDifferentStateDeAssertOneGetBlink)
+TEST_F(LedTest, assertTwoGroupsWithMultipleComonLEDInDifferentStateDiffPriorityBandA)
{
- Manager manager(bus, twoGroupsWithMultipleComonLEDInDifferentStateBlinkAgain);
+ Manager manager(bus, twoGroupsWithMultipleComonLEDInDifferentStateDiffPriority);
{
// Assert Set-B
Manager::group ledsAssert {};
Manager::group ledsDeAssert {};
- Manager::group ledsUpdate {};
auto group ="/xyz/openbmc_project/ledmanager/groups/MultipleLedsBSet";
auto result = manager.setGroupState(group, true, ledsAssert,
- ledsDeAssert, ledsUpdate);
+ ledsDeAssert);
EXPECT_EQ(true, result);
// Need just the ledsAssserted populated with these.
std::set<Layout::LedAction> refAssert = {
- {"Two",phosphor::led::Layout::Blink},
- {"Three",phosphor::led::Layout::Blink},
- {"Five",phosphor::led::Layout::On},
- {"Six",phosphor::led::Layout::On},
+ {"Two",phosphor::led::Layout::On, 0,
+ 0, phosphor::led::Layout::On},
+ {"Three",phosphor::led::Layout::On, 0,
+ 0, phosphor::led::Layout::Blink},
+ {"Five",phosphor::led::Layout::On, 0,
+ 0, phosphor::led::Layout::On},
+ {"Six",phosphor::led::Layout::On, 0,
+ 0, phosphor::led::Layout::On},
+ {"Ten",phosphor::led::Layout::On, 0,
+ 0, phosphor::led::Layout::Blink},
};
EXPECT_EQ(refAssert.size(), ledsAssert.size());
EXPECT_EQ(0, ledsDeAssert.size());
- EXPECT_EQ(0, ledsUpdate.size());
// difference of refAssert and ledsAssert must be null.
Manager::group temp {};
@@ -919,24 +1535,26 @@ TEST_F(LedTest, assertTwoGroupsWithMultipleComonLEDInDifferentStateDeAssertOneGe
// Assert Set-A
Manager::group ledsAssert {};
Manager::group ledsDeAssert {};
- Manager::group ledsUpdate {};
auto group ="/xyz/openbmc_project/ledmanager/groups/MultipleLedsASet";
auto result = manager.setGroupState(group, true, ledsAssert,
- ledsDeAssert, ledsUpdate);
+ ledsDeAssert);
EXPECT_EQ(true, result);
- // Need just the ledsAssserted populated with these. 'Three` remains at
- // Blink due to increased priority. Two is already in asserted state and
- // it wont be asserted again.
+ // Need just the ledsAssserted populated with these.
+ // [Two] remains [ON] due to higher priority.
+ // [Three] remains on since it never was in [Blink] before
+ // [Ten] moves to [Blink] due to priority: [Blink]
std::set<Layout::LedAction> refAssert = {
- {"One",phosphor::led::Layout::On},
- {"Three",phosphor::led::Layout::Blink},
- {"Four",phosphor::led::Layout::On},
+ {"One",phosphor::led::Layout::On, 0,
+ 0, phosphor::led::Layout::On},
+ {"Four",phosphor::led::Layout::On, 0,
+ 0, phosphor::led::Layout::On},
+ {"Ten",phosphor::led::Layout::Blink, 0,
+ 0, phosphor::led::Layout::Blink},
};
EXPECT_EQ(refAssert.size(), ledsAssert.size());
EXPECT_EQ(0, ledsDeAssert.size());
- EXPECT_EQ(0, ledsUpdate.size());
// difference of refAssert and ledsAssert must be null.
Manager::group temp {};
@@ -945,43 +1563,274 @@ TEST_F(LedTest, assertTwoGroupsWithMultipleComonLEDInDifferentStateDeAssertOneGe
std::inserter(temp, temp.begin()));
EXPECT_EQ(0, temp.size());
}
+}
+
+/** @brief Assert 2 groups having multiple LEDs common in different state and
+ * mixed priority and De-Assert-A
+ */
+TEST_F(LedTest, assertTwoGroupsWithMultipleComonLEDInDifferentStateDiffPriorityBandADeAssertA)
+{
+ Manager manager(bus, twoGroupsWithMultipleComonLEDInDifferentStateDiffPriority);
{
- // DeAssert Set-A
+ // Assert Set-B
+ Manager::group ledsAssert {};
+ Manager::group ledsDeAssert {};
+
+ auto group ="/xyz/openbmc_project/ledmanager/groups/MultipleLedsBSet";
+ auto result = manager.setGroupState(group, true, ledsAssert,
+ ledsDeAssert);
+ EXPECT_EQ(true, result);
+
+ // Need just the ledsAssserted populated with these.
+ std::set<Layout::LedAction> refAssert = {
+ {"Two",phosphor::led::Layout::On, 0,
+ 0, phosphor::led::Layout::On},
+ {"Three",phosphor::led::Layout::On, 0,
+ 0, phosphor::led::Layout::Blink},
+ {"Five",phosphor::led::Layout::On, 0,
+ 0, phosphor::led::Layout::On},
+ {"Six",phosphor::led::Layout::On, 0,
+ 0, phosphor::led::Layout::On},
+ {"Ten",phosphor::led::Layout::On, 0,
+ 0, phosphor::led::Layout::Blink},
+ };
+ EXPECT_EQ(refAssert.size(), ledsAssert.size());
+ EXPECT_EQ(0, ledsDeAssert.size());
+
+ // difference of refAssert and ledsAssert must be null.
+ Manager::group temp {};
+ std::set_difference(ledsAssert.begin(), ledsAssert.end(),
+ refAssert.begin(), refAssert.end(),
+ std::inserter(temp, temp.begin()));
+ EXPECT_EQ(0, temp.size());
+ }
+ {
+ // Assert Set-A
+ Manager::group ledsAssert {};
+ Manager::group ledsDeAssert {};
+
+ auto group ="/xyz/openbmc_project/ledmanager/groups/MultipleLedsASet";
+ auto result = manager.setGroupState(group, true, ledsAssert,
+ ledsDeAssert);
+ EXPECT_EQ(true, result);
+
+ // Need just the ledsAssserted populated with these.
+ // [Two] remains [ON] due to higher priority.
+ // [Three] remains on since it never was in [Blink] before
+ // [Ten] moves to [Blink] due to priority: [Blink]
+ std::set<Layout::LedAction> refAssert = {
+ {"One",phosphor::led::Layout::On, 0,
+ 0, phosphor::led::Layout::On},
+ {"Four",phosphor::led::Layout::On, 0,
+ 0, phosphor::led::Layout::On},
+ {"Ten",phosphor::led::Layout::Blink, 0,
+ 0, phosphor::led::Layout::Blink},
+ };
+ EXPECT_EQ(refAssert.size(), ledsAssert.size());
+ EXPECT_EQ(0, ledsDeAssert.size());
+
+ // difference of refAssert and ledsAssert must be null.
+ Manager::group temp {};
+ std::set_difference(ledsAssert.begin(), ledsAssert.end(),
+ refAssert.begin(), refAssert.end(),
+ std::inserter(temp, temp.begin()));
+ EXPECT_EQ(0, temp.size());
+ }
+ {
+ // De-Assert Set-A
Manager::group ledsAssert {};
Manager::group ledsDeAssert {};
- Manager::group ledsUpdate {};
auto group ="/xyz/openbmc_project/ledmanager/groups/MultipleLedsASet";
auto result = manager.setGroupState(group, false, ledsAssert,
- ledsDeAssert, ledsUpdate);
+ ledsDeAssert);
EXPECT_EQ(false, result);
- // Need just the ledsUpdated populated with these.
- std::set<Layout::LedAction> refUpdate = {
- {"Three",phosphor::led::Layout::Blink},
+ // Need just the ledsAssserted populated with these.
+ // [Ten] remains [Blink] due to priority.
+ std::set<Layout::LedAction> refDeAssert = {
+ {"One",phosphor::led::Layout::On, 0,
+ 0, phosphor::led::Layout::On},
+ {"Four",phosphor::led::Layout::On, 0,
+ 0, phosphor::led::Layout::On},
};
- EXPECT_EQ(refUpdate.size(), ledsUpdate.size());
- EXPECT_EQ(0, ledsAssert.size());
+ EXPECT_EQ(refDeAssert.size(), ledsDeAssert.size());
+
+ // Need just the ledsAssserted populated with these.
+ // [Two] remains [ON] due to higher priority.
+ // [Three] remains [On] since it never was in [Blink] before
+ // [Ten] moves to [On] due to priority: [Blink]
+ std::set<Layout::LedAction> refAssert = {
+ {"Ten",phosphor::led::Layout::On, 0,
+ 0, phosphor::led::Layout::Blink},
+ };
+ EXPECT_EQ(refAssert.size(), ledsAssert.size());
+
+ // difference of refAssert and ledsAssert must be null.
+ Manager::group temp {};
+ std::set_difference(ledsAssert.begin(), ledsAssert.end(),
+ refAssert.begin(), refAssert.end(),
+ std::inserter(temp, temp.begin()));
+ EXPECT_EQ(0, temp.size());
+ }
+}
+
+/** @brief Assert 2 groups having multiple LEDs common in different state and
+ * mixed priority and then DeAssert twice.
+ */
+TEST_F(LedTest, assertTwoGroupsWithMultipleComonLEDInDifferentStateOnBlinkPriorityBandA)
+{
+ Manager manager(bus, twoGroupsWithMultipleComonLEDInDifferentStateDiffPriority);
+ {
+ // Assert Set-B
+ Manager::group ledsAssert {};
+ Manager::group ledsDeAssert {};
+
+ auto group ="/xyz/openbmc_project/ledmanager/groups/MultipleLedsBSet";
+ auto result = manager.setGroupState(group, true, ledsAssert,
+ ledsDeAssert);
+ EXPECT_EQ(true, result);
+
+ // Need just the ledsAssserted populated with these.
+ std::set<Layout::LedAction> refAssert = {
+ {"Two",phosphor::led::Layout::On, 0,
+ 0, phosphor::led::Layout::On},
+ {"Three",phosphor::led::Layout::On, 0,
+ 0, phosphor::led::Layout::Blink},
+ {"Five",phosphor::led::Layout::On, 0,
+ 0, phosphor::led::Layout::On},
+ {"Six",phosphor::led::Layout::On, 0,
+ 0, phosphor::led::Layout::On},
+ {"Ten",phosphor::led::Layout::On, 0,
+ 0, phosphor::led::Layout::Blink},
+ };
+ EXPECT_EQ(refAssert.size(), ledsAssert.size());
+ EXPECT_EQ(0, ledsDeAssert.size());
// difference of refAssert and ledsAssert must be null.
Manager::group temp {};
- std::set_difference(ledsUpdate.begin(), ledsUpdate.end(),
- refUpdate.begin(), refUpdate.end(),
+ std::set_difference(ledsAssert.begin(), ledsAssert.end(),
+ refAssert.begin(), refAssert.end(),
std::inserter(temp, temp.begin()));
EXPECT_EQ(0, temp.size());
+ }
+ {
+ // Assert Set-A
+ Manager::group ledsAssert {};
+ Manager::group ledsDeAssert {};
- // Need just the ledsDeAsserted populated with these.
+ auto group ="/xyz/openbmc_project/ledmanager/groups/MultipleLedsASet";
+ auto result = manager.setGroupState(group, true, ledsAssert,
+ ledsDeAssert);
+ EXPECT_EQ(true, result);
+
+ // Need just the ledsAssserted populated with these.
+ // [Two] remains [ON] due to higher priority.
+ // [Three] remains on since it never was in [Blink] before
+ // [Ten] moves to [Blink] due to priority: [Blink]
+ std::set<Layout::LedAction> refAssert = {
+ {"One",phosphor::led::Layout::On, 0,
+ 0, phosphor::led::Layout::On},
+ {"Four",phosphor::led::Layout::On, 0,
+ 0, phosphor::led::Layout::On},
+ {"Ten",phosphor::led::Layout::Blink, 0,
+ 0, phosphor::led::Layout::Blink},
+ };
+ EXPECT_EQ(refAssert.size(), ledsAssert.size());
+ EXPECT_EQ(0, ledsDeAssert.size());
+
+ // difference of refAssert and ledsAssert must be null.
+ Manager::group temp {};
+ std::set_difference(ledsAssert.begin(), ledsAssert.end(),
+ refAssert.begin(), refAssert.end(),
+ std::inserter(temp, temp.begin()));
+ EXPECT_EQ(0, temp.size());
+ }
+ {
+ // DeAssert Set-B
+ Manager::group ledsAssert {};
+ Manager::group ledsDeAssert {};
+
+ auto group ="/xyz/openbmc_project/ledmanager/groups/MultipleLedsBSet";
+ auto result = manager.setGroupState(group, false, ledsAssert,
+ ledsDeAssert);
+ EXPECT_EQ(false, result);
+
+ // Need just the ledsAssserted populated with these.
+ // [Ten] remains [Blink] due to priority.
std::set<Layout::LedAction> refDeAssert = {
- {"One",phosphor::led::Layout::On},
- {"Four",phosphor::led::Layout::On},
+ {"Five",phosphor::led::Layout::On, 0,
+ 0, phosphor::led::Layout::On},
+ {"Six",phosphor::led::Layout::On, 0,
+ 0, phosphor::led::Layout::On},
};
EXPECT_EQ(refDeAssert.size(), ledsDeAssert.size());
+ // difference of refDeAssert and ledsDeAssert must be null.
+ Manager::group temp {};
+ std::set_difference(ledsDeAssert.begin(), ledsDeAssert.end(),
+ refDeAssert.begin(), refDeAssert.end(),
+ std::inserter(temp, temp.begin()));
+ EXPECT_EQ(0, temp.size());
+
+ // Need just the ledsAssert populated with these.
+ // [Two] will move to [Blink]
+ std::set<Layout::LedAction> refAssert = {
+ {"Two",phosphor::led::Layout::Blink, 0,
+ 0, phosphor::led::Layout::On},
+ };
+ EXPECT_EQ(refAssert.size(), ledsAssert.size());
+
// difference of refAssert and ledsAssert must be null.
- temp.clear();
+ Manager::group temp1 {};
+ std::set_difference(ledsAssert.begin(), ledsAssert.end(),
+ refAssert.begin(), refAssert.end(),
+ std::inserter(temp1, temp1.begin()));
+ EXPECT_EQ(0, temp1.size());
+ }
+ {
+ // DeAssert Set-A
+ Manager::group ledsAssert {};
+ Manager::group ledsDeAssert {};
+
+ auto group ="/xyz/openbmc_project/ledmanager/groups/MultipleLedsASet";
+ auto result = manager.setGroupState(group, false, ledsAssert,
+ ledsDeAssert);
+ EXPECT_EQ(false, result);
+
+ // Need just the ledsAssserted populated with these.
+ std::set<Layout::LedAction> refDeAssert = {
+ {"One",phosphor::led::Layout::On, 0,
+ 0, phosphor::led::Layout::On},
+ {"Two",phosphor::led::Layout::Blink, 0,
+ 0, phosphor::led::Layout::On},
+ {"Three",phosphor::led::Layout::On, 0,
+ 0, phosphor::led::Layout::Blink},
+ {"Four",phosphor::led::Layout::On, 0,
+ 0, phosphor::led::Layout::On},
+ {"Ten",phosphor::led::Layout::Blink, 0,
+ 0, phosphor::led::Layout::Blink},
+ };
+ EXPECT_EQ(refDeAssert.size(), ledsDeAssert.size());
+ EXPECT_EQ(0, ledsAssert.size());
+
+ // difference of refDeAssert and ledsDeAssert must be null.
+ Manager::group temp {};
std::set_difference(ledsDeAssert.begin(), ledsDeAssert.end(),
refDeAssert.begin(), refDeAssert.end(),
std::inserter(temp, temp.begin()));
EXPECT_EQ(0, temp.size());
}
+ {
+ // DeAssert Set-B again and make sure we get all empty
+ Manager::group ledsAssert {};
+ Manager::group ledsDeAssert {};
+
+ auto group ="/xyz/openbmc_project/ledmanager/groups/MultipleLedsBSet";
+ auto result = manager.setGroupState(group, false, ledsAssert,
+ ledsDeAssert);
+ EXPECT_EQ(false, result);
+ EXPECT_EQ(0, ledsDeAssert.size());
+ EXPECT_EQ(0, ledsAssert.size());
+ }
}
OpenPOWER on IntegriCloud