Improve traces in testing system
[anna.git] / example / diameter / launcher / testing / TestStep.cpp
index 524e0bd..07ed685 100644 (file)
@@ -33,7 +33,7 @@
 #include <anna/diameter/helpers/base/functions.hpp>
 
 // Process
-#include <RealmNode.hpp>
+#include <OriginHost.hpp>
 #include <MyDiameterEntity.hpp>
 #include <MyLocalServer.hpp>
 #include <TestStep.hpp>
@@ -177,10 +177,14 @@ void TestStep::initialize(TestCase *testCase) {
   a_number = testCase->steps() + 1; // testCase is not NULL
 }
 
-bool TestStep::decodeMessage() throw() {
+bool TestStep::decodeMessage(bool trust) throw() {
   if (a_messageCodec) return true;
   a_messageCodec = new anna::diameter::codec::Message;
   if (::decodeMessage(a_message, *a_messageCodec)) return true;
+  if (trust) {
+    LOGDEBUG(anna::Logger::debug("Error DECODING, but trusting it ...", ANNA_FILE_LOCATION));
+    return true;
+  }
 
   delete a_messageCodec;
   a_messageCodec = NULL;
@@ -334,6 +338,9 @@ throw() {
     xmlmsg += a_messageCodec->asXMLString();
     xmlmsg += "\n";
   }
+  else {
+    xmlmsg = "<unable to decode, check traces>"; 
+  }
 
   if (msg != "") result->createAttribute("Message", msg);
   if (xmlmsg != "") result->createAttribute("XMLMessage", xmlmsg);
@@ -347,12 +354,12 @@ throw() {
 bool TestStepSendxml::do_execute() throw() {
   bool success = false;
   std::string failReason, s_warn;
-  MyDiameterEntity *entity = a_realmNode->getEntity(); // by default
-  MyLocalServer *localServer = a_realmNode->getDiameterServer(); // by default
+  MyDiameterEntity *entity = a_originHost->getEntity(); // by default
+  MyLocalServer *localServer = a_originHost->getDiameterServer(); // by default
   const TestStepWait *tsw = NULL;
 
   // Create comm message:
-  anna::diameter::comm::Message *msg = a_realmNode->createCommMessage();
+  anna::diameter::comm::Message *msg = a_originHost->createCommMessage();
   //msg->clearBody();
   msg->setBody(a_message);
 
@@ -409,10 +416,10 @@ bool TestStepSendxml::do_execute() throw() {
       } // else (normal sending)
 
       // Detailed log:
-      if(a_realmNode->logEnabled()) {
-        if (decodeMessage()) {
+      if(a_originHost->logEnabled()) {
+        if (decodeMessage(true /* trust */)) {
           std::string detail = usedClientSession ? usedClientSession->asString() : "<null client session>"; // shouldn't happen
-          a_realmNode->writeLogFile(*a_messageCodec, (success ? "sent2e" : "send2eError"), detail);
+          a_originHost->writeLogFile(*a_messageCodec, (success ? "sent2e" : "send2eError"), detail);
         }
       }
     }
@@ -443,10 +450,10 @@ bool TestStepSendxml::do_execute() throw() {
       } // else (normal sending)
 
       // Detailed log:
-      if(a_realmNode->logEnabled()) {
-        if (decodeMessage()) {
+      if(a_originHost->logEnabled()) {
+        if (decodeMessage(true /* trust */)) {
           std::string detail = usedServerSession ? usedServerSession->asString() : "<null server session>"; // shouldn't happen
-          a_realmNode->writeLogFile(*a_messageCodec, (success ? "sent2c" : "send2cError"), detail);
+          a_originHost->writeLogFile(*a_messageCodec, (success ? "sent2c" : "send2cError"), detail);
         }
       }
     }
@@ -456,7 +463,7 @@ bool TestStepSendxml::do_execute() throw() {
   }
 
   // release msg
-  a_realmNode->releaseCommMessage(msg);
+  a_originHost->releaseCommMessage(msg);
 
   if (!success) {
     a_testCase->addDebugSummaryHint(failReason); // before report (when set Failed state);
@@ -570,6 +577,9 @@ throw() {
     xmlmsg += a_messageCodec->asXMLString();
     xmlmsg += "\n";
   }
+  else {
+    xmlmsg = "<unable to decode, check traces>"; 
+  }
 
   if (msg != "") result->createAttribute("MatchedMessage", msg);
   if (xmlmsg != "") result->createAttribute("MatchedXMLMessage", xmlmsg);