+ anna::xml::Node* asXML(anna::xml::Node* parent) throw();
+};
+
+
+class TestStepCmd : public TestStep {
+
+ std::string a_script;
+ std::thread a_thread;
+ bool a_threadRunning;
+ bool a_threadDeprecated;
+ int a_resultCode;
+ 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_childPid(-1) { a_type = Type::Cmd; }
+
+ // setter & getters
+ void setThreadRunning(bool running) throw() { a_threadRunning = running; }
+
+ 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 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; }
+
+ // virtuals
+ bool do_execute() throw();
+ void do_complete() throw();
+ void do_reset() throw();
+ anna::xml::Node* asXML(anna::xml::Node* parent) throw();