result += "\n";
result += "\n delay|<msecs> Blocking step until the time lapse expires. Useful to give ";
result += "\n some cadence control and time schedule for a specific case.";
+ result += "\n A value of 0 could be used as a dummy step.";
result += "\n wait<fe/fc>|<condition> Blocking step until condition is fulfilled. The message could";
result += "\n received from entity (waitfe) or from client (waitfc).";
result += "\n";
if (numParams > 3)
throw anna::RuntimeException("Wrong body content format on HTTP Request. Use 'help' management command to see more information.", ANNA_FILE_LOCATION);
if(param3 == "") throw anna::RuntimeException("Missing milliseconds for 'delay' command in test id operation", ANNA_FILE_LOCATION);
- anna::Millisecond delay = checkTimeMeasure("Test case delay step", param3);
+ anna::Millisecond delay = ((param3 == "0" /* special case */) ? (anna::Millisecond)0 : checkTimeMeasure("Test case delay step", param3));
testManager.getTestCase(id)->addDelay(delay); // creates / reuses
}
else if ((param2 == "waitfe")||(param2 == "waitfc")) {
anna::xml::Node* result = TestStep::asXML(parent);
//parent->createChild("TestStepDelay");
- result->createAttribute("Delay", a_delay.asString());
+ result->createAttribute("Delay", ((a_delay == 0) ? "dummy step, no delay" : a_delay.asString()));
return result;
}
bool TestStepDelay::do_execute() throw() {
+ if (a_delay == 0) { complete(); return true; } // special case
try {
a_timer = TestManager::instantiate().createTimer((TestCaseStep*)this, a_delay, TestTimer::Type::Delay);
}
}
void TestStepDelay::do_complete() throw() {
+ if (a_delay == 0) return; // special case
a_timer = NULL;
next(); // next() invoked here because execute() is always false for delay and never advance the iterator
// TODO, avoid this recursion
}
void TestStepDelay::do_reset() throw() {
+ if (a_delay == 0) return; // special case
try {
TestManager::instantiate().cancelTimer(a_timer);
}