// Process
#include <EventOperation.hpp>
#include <Launcher.hpp>
+#include <Procedure.hpp>
+#include <MyDiameterEngine.hpp>
+#include <MyLocalServer.hpp>
+#include <anna/testing/TestManager.hpp>
-// Project
-#include <anna/diameter.comm/OriginHost.hpp>
-
-
-//// Standard
-//#include <sstream> // std::istringstream
-//#include <iostream> // std::cout
+// Standard
#include <fstream>
-//#include <math.h> // ceil
-//#include <climits>
#include <unistd.h> // chdir
-//#include <stdio.h>
-//
-//// Project
+
+// Project
+#include <anna/diameter.comm/OriginHost.hpp>
#include <anna/json/functions.hpp>
#include <anna/diameter/codec/Message.hpp>
-//#include <anna/timex/Engine.hpp>
-//#include <anna/statistics/Engine.hpp>
-//#include <anna/diameter/codec/functions.hpp>
-//#include <anna/diameter/codec/Engine.hpp>
-//#include <anna/diameter/codec/EngineManager.hpp>
-//#include <anna/http/Transport.hpp>
-//#include <anna/diameter/stack/Engine.hpp>
#include <anna/diameter/helpers/base/functions.hpp>
#include <anna/time/functions.hpp>
#include <anna/core/functions.hpp>
-//#include <anna/diameter.comm/ApplicationMessageOamModule.hpp>
-//#include <anna/testing/defines.hpp>
#include <anna/xml/xml.hpp>
-//#include <anna/diameter.comm/OriginHost.hpp>
-//#include <anna/diameter.comm/OriginHostManager.hpp>
#include <anna/diameter.comm/Message.hpp>
-//
-//// Process
-//#include <Launcher.hpp>
-//#include <Procedure.hpp>
-//#include <EventOperation.hpp>
-#include <MyDiameterEngine.hpp>
-#include <MyLocalServer.hpp>
-#include <anna/testing/TestManager.hpp>
-//#include <anna/testing/TestCase.hpp>
/////////////////////
if(my_app.getOperatedHost()->logEnabled()) {
anna::diameter::comm::Server *usedServer = my_app.getOperatedEntity()->getLastUsedResource();
anna::diameter::comm::ClientSession *usedClientSession = usedServer ? usedServer->getLastUsedResource() : NULL;
- std::string detail = usedClientSession ? usedClientSession->asString() : "<null client session>"; // shouldn't happen
+ std::string detail = usedClientSession ? usedClientSession->asString() : "[null client session]"; // shouldn't happen
my_app.getOperatedHost()->writeLogFile(codecMsg, (success ? "sent2e" : "send2eError"), detail);
}
// Detailed log:
if(my_app.getOperatedHost()->logEnabled()) {
anna::diameter::comm::ServerSession *usedServerSession = my_app.getOperatedServer()->getLastUsedResource();
- std::string detail = usedServerSession ? usedServerSession->asString() : "<null server session>"; // shouldn't happen
+ std::string detail = usedServerSession ? usedServerSession->asString() : "[null server session]"; // shouldn't happen
my_app.getOperatedHost()->writeLogFile(codecMsg, (success ? "sent2c" : "send2cError"), detail);
}
std::string::size_type pos, pos_1, pos_2;
pos = regexp.find("end-to-end-id=", 0u);
- pos = regexp.find("\"", pos);
- pos_1 = pos;
- pos = regexp.find("\"", pos+1);
- pos_2 = pos;
- regexp.replace(pos_1 + 1, pos_2 - pos_1 - 1, "[0-9]+");
+ if (pos != std::string::npos) {
+ pos = regexp.find("\"", pos);
+ pos_1 = pos;
+ pos = regexp.find("\"", pos+1);
+ pos_2 = pos;
+ regexp.replace(pos_1 + 1, pos_2 - pos_1 - 1, "[0-9]+");
+ }
pos = regexp.find("hop-by-hop-id=", 0u);
- pos = regexp.find("\"", pos);
- pos_1 = pos;
- pos = regexp.find("\"", pos+1);
- pos_2 = pos;
- regexp.replace(pos_1 + 1, pos_2 - pos_1 - 1, "[0-9]+");
+ if (pos != std::string::npos) {
+ pos = regexp.find("\"", pos);
+ pos_1 = pos;
+ pos = regexp.find("\"", pos+1);
+ pos_2 = pos;
+ regexp.replace(pos_1 + 1, pos_2 - pos_1 - 1, "[0-9]+");
+ }
// For this representation: <avp name="Origin-State-Id" data="1428633668"/>
//pos = regexp.find("Origin-State-Id", 0u);
//regexp.replace(pos_1 + 1, pos_2 - pos_1 - 1, "[0-9]+");
// But we have this one: <avp data="1428633668" name="Origin-State-Id"/>
pos = regexp.find("Origin-State-Id", 0u);
- pos = regexp.rfind("\"", pos);
- pos = regexp.rfind("\"", pos-1);
- pos = regexp.rfind("\"", pos-1);
- pos_1 = pos;
- pos = regexp.find("\"", pos+1);
- pos_2 = pos;
- regexp.replace(pos_1 + 1, pos_2 - pos_1 - 1, "[0-9]+");
+ if (pos != std::string::npos) {
+ pos = regexp.rfind("\"", pos);
+ pos = regexp.rfind("\"", pos-1);
+ pos = regexp.rfind("\"", pos-1);
+ pos_1 = pos;
+ pos = regexp.find("\"", pos+1);
+ pos_2 = pos;
+ regexp.replace(pos_1 + 1, pos_2 - pos_1 - 1, "[0-9]+");
+ }
//regexp.insert(0, "^");
//regexp += "$";
if (amount > -2) {
testManager.setInProgressLimit(amount);
response = "New in-progress limit: ";
- response += (amount != -1) ? anna::functions::asString(amount) : "<no limit>";
+ response += (amount != -1) ? anna::functions::asString(amount) : "[no limit]";
}
else {
response = "In-progress limit amount: ";
int limit = testManager.getInProgressLimit();
- response += (limit != -1) ? anna::functions::asString(limit) : "<no limit>";
+ response += (limit != -1) ? anna::functions::asString(limit) : "[no limit]";
response += "; currently there are ";
response += anna::functions::asString(testManager.getInProgressCount());
response += " test cases running";
return true; // OK
}
+bool EventOperation::test__dynamic(std::string &response, const nlohmann::json &arguments) {
+
+ Launcher& my_app = static_cast <Launcher&>(anna::app::functions::getApp());
+
+ Procedure p(&my_app);
+ try {
+ p.execute(arguments, response);
+ }
+ catch(anna::RuntimeException &ex) {
+ ex.trace();
+ response += ex.asString();
+ return false;
+ }
+
+ return true; // OK
+}
+
+