Avoid recursion on TestStepWait. Now is the TestManager after searching the condition...
authorEduardo Ramos Testillano <eduardo.ramos.testillano@ericsson.com>
Mon, 21 Sep 2015 00:55:49 +0000 (02:55 +0200)
committerEduardo Ramos Testillano <eduardo.ramos.testillano@ericsson.com>
Mon, 21 Sep 2015 00:55:49 +0000 (02:55 +0200)
TODO for TestStepCmd and TestStepDelay

example/diameter/launcher/testing/TestManager.cpp
example/diameter/launcher/testing/TestStep.cpp

index ea340b9..c01b89e 100644 (file)
@@ -342,6 +342,7 @@ void TestManager::receiveMessage(const anna::DataBlock &message, const anna::dia
   }
   else {
     tsw->setClientSession(const_cast<anna::diameter::comm::ClientSession*>(clientSession));
+    tc->process();
   }
 }
 
@@ -376,6 +377,7 @@ void TestManager::receiveMessage(const anna::DataBlock &message, const anna::dia
   }
   else {
     tsw->setServerSession(const_cast<anna::diameter::comm::ServerSession*>(serverSession));
+    tc->process();
   }
 }
 
index c8aef4e..d08d482 100644 (file)
@@ -523,13 +523,13 @@ bool TestStepWait::do_execute() throw() {
 }
 
 void TestStepWait::do_complete() throw() {
-  a_testCase->process(); // next() not invoked; we only want to reactivate the test case
+  //a_testCase->process(); // next() not invoked; we only want to reactivate the test case
+  // avoid stack overflow: we will process the test case externally when incoming message is fulfilled (TestCase.cpp), and TestManager is noticed
 }
 
 bool TestStepWait::fulfilled(const anna::DataBlock &db/*, bool matchSessionId*/) throw() {
   if (a_condition.comply(db/*, matchSessionId*/)) {
-    //a_message = db; // store matched
-    a_message.assign(db);
+    a_message = db; // store matched
     complete();
     return true;
   }