summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--src/usr/targeting/common/targetservice.C17
-rw-r--r--src/usr/targeting/common/test/testcommontargeting.H22
2 files changed, 38 insertions, 1 deletions
diff --git a/src/usr/targeting/common/targetservice.C b/src/usr/targeting/common/targetservice.C
index d920ae07d..605933241 100644
--- a/src/usr/targeting/common/targetservice.C
+++ b/src/usr/targeting/common/targetservice.C
@@ -291,7 +291,22 @@ Target* TargetService::toTarget(
for (uint32_t i = 0; i < iv_maxTargets; ++i)
{
- if (i_entityPath == (*iv_targets)[i].getAttr<ATTR_PHYS_PATH> ())
+ bool found = false;
+ switch(i_entityPath.type())
+ {
+ case EntityPath::PATH_PHYSICAL:
+ found = ( (i_entityPath)
+ == (*iv_targets)[i].getAttr<ATTR_PHYS_PATH>());
+ break;
+ case EntityPath::PATH_AFFINITY:
+ found = ( (i_entityPath)
+ == (*iv_targets)[i].getAttr<ATTR_AFFINITY_PATH>());
+ break;
+ default:
+ break;
+ }
+
+ if (found)
{
l_pTarget = &(*iv_targets)[i];
break;
diff --git a/src/usr/targeting/common/test/testcommontargeting.H b/src/usr/targeting/common/test/testcommontargeting.H
index 13cd07418..6a0ea8d8f 100644
--- a/src/usr/targeting/common/test/testcommontargeting.H
+++ b/src/usr/targeting/common/test/testcommontargeting.H
@@ -166,6 +166,28 @@ class CommonTargetingTestSuite: public CxxTest::TestSuite
{
TARG_TS_FAIL("Expected to get the original target");
}
+
+ // Post init
+ // Tested API: Target* toTarget(
+ // const EntityPath& i_entityPath) const;
+ // Behavior: Given an arbitrary target, I should be able to take its
+ // affinity path and convert it to the original target
+ PredicateCTM mbaPredicate(CLASS_UNIT,TYPE_MBA);
+ TargetRangeFilter mbaFilter(
+ targetService().begin(),
+ targetService().end(),
+ &mbaPredicate);
+ for(;mbaFilter;++mbaFilter)
+ {
+ Target* pCandidate = l_targetService.toTarget(
+ mbaFilter->getAttr<ATTR_AFFINITY_PATH>());
+ if (pCandidate != *mbaFilter)
+ {
+ TARG_TS_FAIL("Failed to convert MBA target's affinity path "
+ "back to original target");
+ }
+ break;
+ }
// Post init
// Test: void getAssociated(
OpenPOWER on IntegriCloud