X-Git-Url: https://git.teslayout.com/public/public/public/?a=blobdiff_plain;f=example%2Fdiameter%2Flauncher%2FLauncher.cpp;h=d3a937305f661d0e1549dfce2a00b760475c4018;hb=5a6cba5fde2b2f538a7515f8293cc0a8d9589dfa;hp=507bea304a8b70cadb01ad3c671a999ce56ce524;hpb=882e3764e48fdf93aeb078c1832b10a956288da3;p=anna.git diff --git a/example/diameter/launcher/Launcher.cpp b/example/diameter/launcher/Launcher.cpp index 507bea3..d3a9373 100644 --- a/example/diameter/launcher/Launcher.cpp +++ b/example/diameter/launcher/Launcher.cpp @@ -150,16 +150,16 @@ Launcher::Launcher() : anna::comm::Application("launcher", "DiameterLauncher", " } -std::string Launcher::getSignalUSR2InputFile() const throw() { +std::string Launcher::getSignalUSR2InputFile() const { return (getInitialWorkingDirectory() + "/" + SIGUSR2_TASKS_INPUT_FILENAME); } -std::string Launcher::getSignalUSR2OutputFile() const throw() { +std::string Launcher::getSignalUSR2OutputFile() const { return (getInitialWorkingDirectory() + "/" + SIGUSR2_TASKS_OUTPUT_FILENAME); } -void Launcher::servicesFromXML(const anna::xml::Node* servicesNode, bool bindResources) throw(anna::RuntimeException) { +void Launcher::servicesFromXML(const anna::xml::Node* servicesNode, bool bindResources) noexcept(false) { CommandLine& cl(anna::CommandLine::instantiate()); bool allLogsDisabled = cl.exists("disableLogs"); @@ -189,7 +189,8 @@ void Launcher::servicesFromXML(const anna::xml::Node* servicesNode, bool bindRes // We will register a scope per stack id registered. The counters will be dynamically registered at count method. anna::diameter::comm::ApplicationMessageOamModule & appMsgOamModule = anna::diameter::comm::ApplicationMessageOamModule::instantiate(); appMsgOamModule.enableCounters(); // this special module is disabled by default (the only) - static int scope_id = 3; + static int scope_id = 3 + appMsgOamModule.scopes(); + unsigned int id_value; std::string codecEngineName; @@ -436,7 +437,7 @@ void Launcher::servicesFromXML(const anna::xml::Node* servicesNode, bool bindRes } -void Launcher::loadServicesFromFile(const std::string & xmlPathFile, bool bindResources) throw(anna::RuntimeException) { +void Launcher::loadServicesFromFile(const std::string & xmlPathFile, bool bindResources) noexcept(false) { if (xmlPathFile == "null" || xmlPathFile == "") { LOGWARNING(anna::Logger::warning("Ignoring services configuration on start: empty or 'null' string provided as xml file. Use management interface (operation 'services') in order to add services", ANNA_FILE_LOCATION)); @@ -477,7 +478,7 @@ void Launcher::loadServicesFromFile(const std::string & xmlPathFile, bool bindRe } -void Launcher::loadServicesFromXMLString(const std::string & xmlString, bool bindResources) throw(anna::RuntimeException) { +void Launcher::loadServicesFromXMLString(const std::string & xmlString, bool bindResources) noexcept(false) { anna::xml::DocumentMemory xmlDocument; // has private copy constructor defined but not implemented to avoid inhenrit/copy (is very heavy) anna::xml::DTDMemory xmlDTD; @@ -505,7 +506,7 @@ void Launcher::loadServicesFromXMLString(const std::string & xmlString, bool bin } -anna::Millisecond Launcher::checkTimeMeasure(const std::string ¶meter, const std::string &value) throw(anna::RuntimeException) { +anna::Millisecond Launcher::checkTimeMeasure(const std::string ¶meter, const std::string &value) noexcept(false) { if(anna::functions::isLike("^[0-9]+$", value)) { // para incluir numeros decimales: ^[0-9]+(.[0-9]+)?$ int msecs; @@ -546,7 +547,7 @@ anna::Millisecond Launcher::checkTimeMeasure(const std::string ¶meter, const throw RuntimeException(msg, ANNA_FILE_LOCATION); } -bool Launcher::setWorkingNode(const std::string &name) throw() { +bool Launcher::setWorkingNode(const std::string &name) { bool result = false; anna::diameter::comm::OriginHostManager &ohm = anna::diameter::comm::OriginHostManager::instantiate(); @@ -560,7 +561,7 @@ bool Launcher::setWorkingNode(const std::string &name) throw() { return result; } -anna::diameter::comm::OriginHost *Launcher::getOriginHost(const std::string &name) const throw(anna::RuntimeException) { +anna::diameter::comm::OriginHost *Launcher::getOriginHost(const std::string &name) const noexcept(false) { anna::diameter::comm::OriginHostManager &ohm = anna::diameter::comm::OriginHostManager::instantiate(); anna::diameter::comm::OriginHost *result = ohm.getOriginHost(name); @@ -570,39 +571,39 @@ anna::diameter::comm::OriginHost *Launcher::getOriginHost(const std::string &nam return result; } -anna::diameter::comm::OriginHost *Launcher::getOriginHost(const anna::diameter::codec::Message &message) const throw(anna::RuntimeException) { +anna::diameter::comm::OriginHost *Launcher::getOriginHost(const anna::diameter::codec::Message &message) const noexcept(false) { std::string originHost = message.getAvp(anna::diameter::helpers::base::AVPID__Origin_Host)->getDiameterIdentity()->getValue(); return (getOriginHost(originHost)); } -anna::diameter::comm::OriginHost *Launcher::getOriginHost(const anna::DataBlock &messageDataBlock) const throw(anna::RuntimeException) { +anna::diameter::comm::OriginHost *Launcher::getOriginHost(const anna::DataBlock &messageDataBlock) const noexcept(false) { std::string originHost = anna::diameter::helpers::base::functions::getOriginHost(messageDataBlock); return (getOriginHost(originHost)); } -bool Launcher::uniqueOriginHost() const throw() { +bool Launcher::uniqueOriginHost() const { anna::diameter::comm::OriginHostManager &ohm = anna::diameter::comm::OriginHostManager::instantiate(); return (ohm.size() == 1); } -void Launcher::updateOperatedOriginHostWithMessage(const anna::diameter::codec::Message &message) throw(anna::RuntimeException) { +void Launcher::updateOperatedOriginHostWithMessage(const anna::diameter::codec::Message &message) noexcept(false) { if (!a_operatedHost) // priority for working node by mean 'node' operation a_operatedHost = getOriginHost(message); } -void Launcher::updateOperatedOriginHostWithMessage(const anna::DataBlock &messageDataBlock) throw(anna::RuntimeException) { +void Launcher::updateOperatedOriginHostWithMessage(const anna::DataBlock &messageDataBlock) noexcept(false) { if (!a_operatedHost) // priority for working node by mean 'node' operation a_operatedHost = getOriginHost(messageDataBlock); } -anna::diameter::comm::OriginHost *Launcher::getWorkingNode() const throw(anna::RuntimeException) { +anna::diameter::comm::OriginHost *Launcher::getWorkingNode() const noexcept(false) { if(!a_workingNode) throw anna::RuntimeException("Working node not identified (try to load services)", ANNA_FILE_LOCATION); return a_workingNode; } -anna::diameter::comm::OriginHost *Launcher::getOperatedHost() const throw(anna::RuntimeException) { +anna::diameter::comm::OriginHost *Launcher::getOperatedHost() const noexcept(false) { if(!a_operatedHost) throw anna::RuntimeException("Node not identified (try to force a specific Origin-Host with 'node' operation)", ANNA_FILE_LOCATION); @@ -613,26 +614,26 @@ void Launcher::setOperatedHost(anna::diameter::comm::OriginHost *op) { a_operatedHost = op; } -MyDiameterEntity *Launcher::getOperatedEntity() const throw(anna::RuntimeException) { +MyDiameterEntity *Launcher::getOperatedEntity() const noexcept(false) { MyDiameterEntity *result = (MyDiameterEntity *)(getOperatedHost()->getEntity()); if (!result) throw anna::RuntimeException("No entity configured for the operated node", ANNA_FILE_LOCATION); return result; } -MyLocalServer *Launcher::getOperatedServer() const throw(anna::RuntimeException) { +MyLocalServer *Launcher::getOperatedServer() const noexcept(false) { MyLocalServer *result = (MyLocalServer *)(getOperatedHost()->getDiameterServer()); if (!result) throw anna::RuntimeException("No local server configured for the operated node", ANNA_FILE_LOCATION); return result; } -MyDiameterEngine *Launcher::getOperatedEngine() const throw(anna::RuntimeException) { +MyDiameterEngine *Launcher::getOperatedEngine() const noexcept(false) { return (MyDiameterEngine *)getOperatedHost()->getCommEngine(); // never will be NULL } void Launcher::initialize() -throw(anna::RuntimeException) { +noexcept(false) { anna::comm::Application::initialize(); CommandLine& cl(anna::CommandLine::instantiate()); anna::comm::Communicator::WorkMode::_v workMode(anna::comm::Communicator::WorkMode::Single); @@ -671,7 +672,7 @@ throw(anna::RuntimeException) { } void Launcher::run() -throw(anna::RuntimeException) { +noexcept(false) { LOGMETHOD(anna::TraceMethod tm("Launcher", "run", ANNA_FILE_LOCATION)); CommandLine& cl(anna::CommandLine::instantiate()); anna::diameter::stack::Engine::instantiate(); @@ -853,7 +854,7 @@ throw(anna::RuntimeException) { a_communicator->accept(); } -bool Launcher::getDataBlockFromHexFile(const std::string &pathfile, anna::DataBlock &db) const throw(anna::RuntimeException) { +bool Launcher::getDataBlockFromHexFile(const std::string &pathfile, anna::DataBlock &db) const noexcept(false) { // Get hex string static char buffer[8192]; std::ifstream infile(pathfile.c_str(), std::ifstream::in); @@ -878,7 +879,7 @@ bool Launcher::getDataBlockFromHexFile(const std::string &pathfile, anna::DataBl return false; } -void Launcher::resetStatistics() throw() { +void Launcher::resetStatistics() { if (a_workingNode) { a_workingNode->getCommEngine()->resetStatistics(); } @@ -890,13 +891,13 @@ void Launcher::resetStatistics() throw() { } } -void Launcher::resetCounters() throw() { +void Launcher::resetCounters() { anna::diameter::comm::OamModule::instantiate().resetCounters(); anna::diameter::comm::ApplicationMessageOamModule::instantiate().resetCounters(); anna::diameter::codec::OamModule::instantiate().resetCounters(); } -void Launcher::signalTerminate() throw(anna::RuntimeException) { +void Launcher::signalTerminate() noexcept(false) { LOGMETHOD(anna::TraceMethod tm("Launcher", "signalTerminate", ANNA_FILE_LOCATION)); forceCountersRecord(); @@ -905,7 +906,7 @@ void Launcher::signalTerminate() throw(anna::RuntimeException) { comm::Application::signalTerminate (); } -void Launcher::signalUSR2() throw(anna::RuntimeException) { +void Launcher::signalUSR2() noexcept(false) { std::string inputFile = getSignalUSR2InputFile(); std::string outputFile = getSignalUSR2OutputFile(); @@ -955,7 +956,7 @@ void Launcher::signalUSR2() throw(anna::RuntimeException) { } -void Launcher::logStatisticsSamples(const std::string &conceptsList) throw() { +void Launcher::logStatisticsSamples(const std::string &conceptsList) { anna::statistics::Engine &statEngine = anna::statistics::Engine::instantiate(); if(conceptsList == "all") { @@ -986,7 +987,7 @@ void Launcher::logStatisticsSamples(const std::string &conceptsList) throw() { } -bool Launcher::eventOperation(const std::string &operation, std::string &response) throw(anna::RuntimeException) { +bool Launcher::eventOperation(const std::string &operation, std::string &response) noexcept(false) { bool result = true; @@ -1200,7 +1201,7 @@ bool Launcher::eventOperation(const std::string &operation, std::string &respons if(getOperatedHost()->logEnabled()) { anna::diameter::comm::Server *usedServer = getOperatedEntity()->getLastUsedResource(); anna::diameter::comm::ClientSession *usedClientSession = usedServer ? usedServer->getLastUsedResource() : NULL; - std::string detail = usedClientSession ? usedClientSession->asString() : ""; // shouldn't happen + std::string detail = usedClientSession ? usedClientSession->asString() : "[null client session]"; // shouldn't happen getOperatedHost()->writeLogFile(codecMsg, (success ? "sent2e" : "send2eError"), detail); } } else if((opType == "sendxml2c") || (opType == "sendhex2c")) { @@ -1229,7 +1230,7 @@ bool Launcher::eventOperation(const std::string &operation, std::string &respons // Detailed log: if(getOperatedHost()->logEnabled()) { anna::diameter::comm::ServerSession *usedServerSession = getOperatedServer()->getLastUsedResource(); - std::string detail = usedServerSession ? usedServerSession->asString() : ""; // shouldn't happen + std::string detail = usedServerSession ? usedServerSession->asString() : "[null server session]"; // shouldn't happen getOperatedHost()->writeLogFile(codecMsg, (success ? "sent2c" : "send2cError"), detail); } } else if(opType == "answerxml2e") { @@ -1440,12 +1441,12 @@ bool Launcher::eventOperation(const std::string &operation, std::string &respons limit = atoi(param2.c_str()); testManager.setInProgressLimit(limit); opt_response = "new in-progress limit: "; - opt_response += (limit != UINT_MAX) ? anna::functions::asString(limit) : ""; + opt_response += (limit != UINT_MAX) ? anna::functions::asString(limit) : "[no limit]"; } else { opt_response = "in-progress limit amount: "; limit = testManager.getInProgressLimit(); - opt_response += (limit != UINT_MAX) ? anna::functions::asString(limit) : ""; + opt_response += (limit != UINT_MAX) ? anna::functions::asString(limit) : "[no limit]"; opt_response += "; currently there are "; opt_response += anna::functions::asString(testManager.getInProgressCount()); opt_response += " test cases running"; @@ -1675,12 +1676,7 @@ bool Launcher::eventOperation(const std::string &operation, std::string &respons if (numParams > 1) throw anna::RuntimeException("Wrong body content format on HTTP Request. Check 'HELP.md' for more information.", ANNA_FILE_LOCATION); - if (testManager.clearPool()) { - opt_response = "all the programmed test cases have been dropped"; - } - else { - opt_response = "there are not programmed test cases to be removed"; - } + result = testManager.clearPool(opt_response); } else if(param1 == "junit") { response = testManager.junitAsXMLString(); @@ -1824,18 +1820,22 @@ bool Launcher::eventOperation(const std::string &operation, std::string &respons 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: //pos = regexp.find("Origin-State-Id", 0u); @@ -1847,13 +1847,15 @@ bool Launcher::eventOperation(const std::string &operation, std::string &respons //regexp.replace(pos_1 + 1, pos_2 - pos_1 - 1, "[0-9]+"); // But we have this one: 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 += "$"; @@ -1903,7 +1905,7 @@ bool Launcher::eventOperation(const std::string &operation, std::string &respons } anna::xml::Node* Launcher::asXML(anna::xml::Node* parent) const -throw() { +{ anna::xml::Node* result = parent->createChild("launcher"); anna::comm::Application::asXML(result); // Timming: @@ -1931,7 +1933,7 @@ throw() { } anna::xml::Node* Launcher::oamAsXML(anna::xml::Node* parent) const -throw() { +{ anna::xml::Node* result = parent->createChild("Oam"); // OAM: @@ -1943,7 +1945,7 @@ throw() { } anna::xml::Node* Launcher::statsAsXML(anna::xml::Node* parent) const -throw() { +{ anna::xml::Node* result = parent->createChild("Statistics"); // Statistics: