X-Git-Url: https://git.teslayout.com/public/public/public/?a=blobdiff_plain;f=example%2Fdiameter%2Flauncher%2Ftesting%2FTestStep.hpp;h=e4574c148c82a0fe8a56a67d8bc8bbba0e6e19f0;hb=c7742e2134826a05ee9c6bf89eebaa726dae0d1b;hp=b63c1479a805d5fa3b69d1f3da40fc6bd5419307;hpb=e3f60b6b4a178c63ebd6f8915431bfa485a2e601;p=anna.git diff --git a/example/diameter/launcher/testing/TestStep.hpp b/example/diameter/launcher/testing/TestStep.hpp index b63c147..e4574c1 100644 --- a/example/diameter/launcher/testing/TestStep.hpp +++ b/example/diameter/launcher/testing/TestStep.hpp @@ -12,6 +12,7 @@ // Standard #include #include +#include // Project #include @@ -21,6 +22,8 @@ #include + + namespace anna { class Millisecond; @@ -28,6 +31,9 @@ namespace anna { class Node; } namespace diameter { + namespace codec { + class Message; + } namespace comm { class ClientSession; class ServerSession; @@ -53,7 +59,7 @@ class TestStep { void initialize(TestCase *testCase); public: - struct Type { enum _v { Unconfigured, Timeout, Sendxml2e, Sendxml2c, Delay, Wait }; }; + struct Type { enum _v { Unconfigured, Timeout, Sendxml2e, Sendxml2c, Delay, Wait, Cmd }; }; static const char* asText(const Type::_v type) throw(); TestStep(TestCase *testCase) { initialize(testCase); } @@ -115,12 +121,14 @@ class TestStepSendxml : public TestStep { // Message anna::DataBlock a_message; + anna::diameter::codec::Message *a_messageCodec; // used as helper and for traffic logs // Expired ? bool a_expired; // a_endTimestamp will be the expiration reception timestamp public: - TestStepSendxml(TestCase *testCase) : TestStep(testCase), a_message(true), a_expired(false), a_realmNode(NULL), a_waitForRequestStepNumber(-1) {;} + TestStepSendxml(TestCase *testCase) : TestStep(testCase), a_message(true), a_messageCodec(NULL), a_expired(false), a_realmNode(NULL), a_waitForRequestStepNumber(-1) {;} + ~TestStepSendxml(); // setter & getters void setRealmNode(RealmNode *realm) throw() { a_realmNode = realm; } @@ -171,12 +179,13 @@ class TestStepWait : public TestStep { TestCondition a_condition; anna::DataBlock a_message; // message which complies with condition + anna::diameter::codec::Message *a_messageCodec; // used as helper and for traffic logs anna::diameter::comm::ClientSession *a_clientSession; anna::diameter::comm::ServerSession *a_serverSession; public: - TestStepWait(TestCase *testCase) : TestStep(testCase), a_message(true) { a_type = Type::Wait; a_clientSession = NULL; a_serverSession = NULL; } - ~TestStepWait() {;} + TestStepWait(TestCase *testCase) : TestStep(testCase), a_message(true), a_messageCodec(NULL) { a_type = Type::Wait; a_clientSession = NULL; a_serverSession = NULL; } + ~TestStepWait(); // setter & getters void setCondition(bool fromEntity, @@ -186,6 +195,8 @@ class TestStepWait : public TestStep { void setClientSession(anna::diameter::comm::ClientSession *cs) throw() { a_clientSession = cs; } void setServerSession(anna::diameter::comm::ServerSession *ss) throw() { a_serverSession = ss; } + anna::diameter::comm::ClientSession *getClientSession() const throw() { return a_clientSession; } + anna::diameter::comm::ServerSession *getServerSession() const throw() { return a_serverSession; } const TestCondition &getCondition() const throw() { return a_condition; } //void setMsgDataBlock(const anna::DataBlock &db) throw() { a_message = db; } @@ -201,4 +212,44 @@ class TestStepWait : public TestStep { }; +class TestStepCmd : public TestStep { + + std::string a_script; + std::string a_parameters; + std::thread a_thread; + bool a_threadRunning; + bool a_threadDeprecated; + int a_resultCode; + std::string a_errorMsg; + //std::string a_output; // for POPEN + + public: + TestStepCmd(TestCase *testCase) : TestStep(testCase), a_threadRunning(false), a_threadDeprecated(false), a_resultCode(-2)/*, a_output("")*/, a_errorMsg("") { a_type = Type::Cmd; } + + // setter & getters + void setThreadRunning(bool running) throw() { a_threadRunning = running; } + //bool getThreadRunning() const throw() { return a_threadRunning; } + //void setThreadDeprecated(bool deprecated) throw() { a_threadDeprecated = deprecated; } + //bool getThreadDeprecated() const throw() { return a_threadDeprecated; } + + void setResultCode(int rc) throw() { a_resultCode = rc; } + int getResultCode() const throw() { return a_resultCode; } + void setErrorMsg(const std::string &em) throw() { a_errorMsg = em; } + const std::string &getErrorMsg() const throw() { return a_errorMsg; } + //void appendOutput(const std::string &output) throw() { a_output += output; } + //const std::string &getOutput() const throw() { return a_output; } + + void setScript(const std::string &script) throw() { a_script = script; } + const std::string &getScript() const throw() { return a_script; } + void setParameters(const std::string ¶ms) throw() { a_parameters = params; } + const std::string &getParameters() const throw() { return a_parameters; } + + // virtuals + bool do_execute() throw(); + void do_complete() throw(); + void do_reset() throw(); + anna::xml::Node* asXML(anna::xml::Node* parent) const throw(); +}; + + #endif