Command execution for system test cases
[anna.git] / example / diameter / launcher / testing / TestStep.hpp
index b63c147..aa2f575 100644 (file)
@@ -12,6 +12,7 @@
 // Standard
 #include <string>
 #include <vector>
+#include <thread>
 
 // Project
 #include <anna/core/DataBlock.hpp>
@@ -21,6 +22,8 @@
 #include <TestCondition.hpp>
 
 
+
+
 namespace anna {
   class Millisecond;
 
@@ -53,7 +56,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); }
@@ -201,4 +204,41 @@ 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_output;
+
+  public:
+    TestStepCmd(TestCase *testCase) : TestStep(testCase), a_threadRunning(false), a_threadDeprecated(false), a_resultCode(-2)/*, a_output("")*/ { 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 setOutput(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 &params) 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