class TestCase;
class TestTimer;
-class RealmNode;
+class OriginHost;
class TestStep {
// Message (not for all step types)
anna::DataBlock a_message;
anna::diameter::codec::Message *a_messageCodec; // used as helper and for traffic logs
- bool decodeMessage() throw();
+ bool decodeMessage(bool trust = false) throw(); // If trust=true: decoding the previously encoded message (sendxml sentences).
+ // The only error would be validation ones, and we are going to ignore them here.
virtual bool do_execute() throw() = 0; // returns true if next step must be executed
virtual void do_complete() throw() = 0; // end of transaction (delay/timeout expired, wait condition fulfilled, sending done)
protected:
// possible end points:
- RealmNode *a_realmNode;
+ OriginHost *a_originHost;
// Step number reference ('wait for request' step)
int a_waitForRequestStepNumber;
public:
TestStepSendxml(TestCase *testCase) : TestStep(testCase),
a_expired(false),
- a_realmNode(NULL),
+ a_originHost(NULL),
a_waitForRequestStepNumber(-1) {;}
~TestStepSendxml() {;}
// setter & getters
- void setRealmNode(RealmNode *realm) throw() { a_realmNode = realm; }
- RealmNode *getRealmNode() const throw() { return a_realmNode; }
+ void setOriginHost(OriginHost *host) throw() { a_originHost = host; }
+ OriginHost *getOriginHost() const throw() { return a_originHost; }
void setWaitForRequestStepNumber(int stepNumber) throw() { a_waitForRequestStepNumber = stepNumber; }
int getWaitForRequestStepNumber() const throw() { return a_waitForRequestStepNumber; }
void setMsgDataBlock(const anna::DataBlock &db) throw() { a_message = db; }
std::string a_errorMsg;
//std::string a_output; // for POPEN
+ pid_t a_childPid;
+
public:
- TestStepCmd(TestCase *testCase) : TestStep(testCase), a_threadRunning(false), a_threadDeprecated(false), a_resultCode(-2)/*, a_output("")*/, a_errorMsg("") { a_type = Type::Cmd; }
+ TestStepCmd(TestCase *testCase) : TestStep(testCase), a_threadRunning(false), a_threadDeprecated(false), a_resultCode(-2)/*, a_output("")*/, a_errorMsg(""), a_childPid(-1) { a_type = Type::Cmd; }
// setter & getters
void setThreadRunning(bool running) throw() { a_threadRunning = running; }
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 setChildPid(pid_t pid) throw() { a_childPid = pid; }
+ const pid_t &getChildPid() const throw() { return a_childPid; }
void setScript(const std::string &script) throw() { a_script = script; }
const std::string &getScript() const throw() { return a_script; }