Esempio n. 1
0
bool
Group::GetTestDependency(TestRef test, TestRef &cfgDepend,
    TestIteratorType &seqDepend)
{
    // Assume failure, ignore cfgDepend & seqDepend
    cfgDepend = test;
    seqDepend = -1;

    if (test.group == mGrpNum) {
        if ((test.yLev == 0) && (test.zLev == 0)) {
            LOG_NRM("Targeted test has zero dependencies");
            return true;
        } else if (test.zLev == 0) {
            cfgDepend.Init(test.group, test.xLev, 0, 0);
            if (TestExists(cfgDepend)) {
                LOG_NRM("Targeted test has a configuration dependency");
                return true;
            } else {
                LOG_ERR("Unable to locate configuration dependency");
                return false;
            }
        } else {
            TestRef seqTest(test.group, test.xLev, test.yLev, 0);
            if (TestRefToIterator(seqTest, seqDepend)) {
                LOG_NRM("Targeted test has a sequence dependency");
            } else {
                LOG_ERR("Unable to locate sequence test dependency");
                return false;
            }

            // There may or may not be a configuration dependency
            if (test.yLev != 0) {
                cfgDepend.Init(test.group, test.xLev, 0, 0);
                if (TestExists(cfgDepend)) {
                    LOG_NRM("Targeted test has a configuration dependency");
                    return true;
                } else {
                    LOG_ERR("Unable to locate configuration dependency");
                    return false;
                }
            }
            return true;
        }
    }
    LOG_ERR("Targeted test does not belong to this group: %ld", mGrpNum);
    return false;
}
Esempio n. 2
0
bool
Group::GetTestSet(TestRef &target, TestSetType &dependencies, int64_t &tstIdx)
{
    TestRef thisTest;

    dependencies.clear();
    tstIdx = -1;

    if (target.group != mGrpNum) {
        LOG_ERR("Targeted test does not belong to this group: %ld", mGrpNum);
        return false;
    } else if ((target.xLev != UINT_MAX) &&
               (target.yLev != UINT_MAX) &&
               (target.zLev != UINT_MAX)) {

        LOG_DBG("Requesting dependency test set for test %ld:%ld.%ld.%ld",
            target.group, target.xLev, target.yLev, target.zLev);
        if ((target.yLev == 0) && (target.zLev == 0)) {
            LOG_NRM("Targeted test has zero dependencies");

        } else if (target.zLev == 0) {
            // There is a configuration dependency for the targeted test
            thisTest.Init(target.group, target.xLev, 0, 0);
            if (TestExists(thisTest)) {
                LOG_NRM("Targeted test has a configuration dependency");
                LOG_DBG("Adding test: %s", thisTest.ToString().c_str());
                dependencies.push_back(thisTest);
            } else {
                LOG_ERR("Unable to locate configuration dependency");
                return false;
            }

        } else {
            // There is a sequence dependency for the targeted test
            if (target.yLev != 0) {
                // There is a config dependency in addition to a seq dependency
                thisTest.Init(target.group, target.xLev, 0, 0);
                if (TestExists(thisTest)) {
                    LOG_NRM("Targeted test has a configuration dependency");
                    LOG_DBG("Adding test: %s", thisTest.ToString().c_str());
                    dependencies.push_back(thisTest);
                } else {
                    LOG_ERR("Unable to locate configuration dependency");
                    return false;
                }
            }

            // Now add in all the sequence test dependencies; find the root
            // sequence test case first and traverse to the targeted test
            TestIteratorType seqIter;
            TestIteratorType targetIter;
            TestRef rootSeq(target.group, target.xLev, target.yLev, 0);
            if (TestRefToIterator(rootSeq, seqIter)) {
                LOG_NRM("Targeted test has a sequence dependency");
                if (TestRefToIterator(target, targetIter)) {
                    for (TestIteratorType i = seqIter; i < targetIter; i++) {
                        if (IteraterToTestRef(i, thisTest) == false) {
                            LOG_ERR("Unable to locate sequence dependency");
                            return false;
                        }
                        LOG_DBG("Adding test: %s", thisTest.ToString().c_str());
                        dependencies.push_back(thisTest);
                    }
                } else {
                    LOG_ERR("Unable to locate targeted test");
                    return false;
                }
            } else {
                LOG_ERR("Unable to locate sequence test dependency");
                return false;
            }
        }

        LOG_DBG("Adding test: %s", thisTest.ToString().c_str());
        dependencies.push_back(target);
    } else {
        LOG_DBG("Requesting dependency set for group %ld", mGrpNum);
        TestIteratorType tstIter = 0;
        while (IteraterToTestRef(tstIter++, thisTest)) {
            LOG_DBG("Adding test: %s", thisTest.ToString().c_str());
            dependencies.push_back(thisTest);
        }
    }

    tstIdx = 0;
    LOG_DBG("dependencies(size)=%ld, tstIdx=%ld", dependencies.size(), tstIdx);
    return true;
}