ROSE  0.11.145.0
ExecutionManager.h
1 #ifndef ROSE_BinaryAnalysis_Concolic_ExecutionManager_H
2 #define ROSE_BinaryAnalysis_Concolic_ExecutionManager_H
3 #include <featureTests.h>
4 #ifdef ROSE_ENABLE_CONCOLIC_TESTING
5 #include <Rose/BinaryAnalysis/Concolic/Settings.h>
6 
7 #include <Rose/Yaml.h>
8 
9 #include <boost/noncopyable.hpp>
10 #include <Sawyer/SharedObject.h>
11 #include <vector>
12 
13 namespace Rose {
14 namespace BinaryAnalysis {
15 namespace Concolic {
16 
21 class ExecutionManager: boost::noncopyable, public Sawyer::SharedObject {
23  // Types
25 public:
28 
30  // Data members
32 private:
33  DatabasePtr database_;
34  ConcolicExecutorSettings concolicExecutorSettings_;
35  const Yaml::Node config_;
36 
38  // Construction and destruction
40 public:
41  virtual ~ExecutionManager();
42 protected:
43  explicit ExecutionManager(const DatabasePtr&);
44  ExecutionManager(const DatabasePtr&, const ConcolicExecutorSettings&, const Yaml::Node&);
45 
46 public:
74  static Ptr instance(const ConcolicExecutorSettings&, const Yaml::Node&);
75 
84  static Ptr open(const std::string &databaseUrl);
85 
96  static Ptr create(const std::string &databaseUrl, const boost::filesystem::path &executableName,
97  const std::vector<std::string> &arguments, const std::string &testSuiteName = "");
98 
100  // Properties
102 public:
106  const ConcolicExecutorSettings& concolicExecutorSettings() const;
107  ConcolicExecutorSettings& concolicExecutorSettings();
108  void concolicExecutorSettings(const ConcolicExecutorSettings&);
114  DatabasePtr database() const;
115 
122  std::vector<TestSuiteId> testSuites() const;
123 
129  TestSuitePtr testSuite() const;
130  void testSuite(const TestSuitePtr&);
133  // Actions
136 public:
143  virtual std::vector<TestCaseId> pendingConcreteResults(size_t n = UNLIMITED);
144  TestCaseId pendingConcreteResult() /*final*/;
152  virtual void insertConcreteResults(const TestCasePtr&, const ConcreteResultPtr&);
153 
160  virtual std::vector<TestCaseId> pendingConcolicResults(size_t n = UNLIMITED);
161  TestCaseId pendingConcolicResult() /*final*/;
169  virtual void insertConcolicResults(const TestCasePtr &original, const std::vector<TestCasePtr> &newCases);
170 
174  virtual bool isFinished() const;
175 
180  virtual void run();
181 };
182 
183 } // namespace
184 } // namespace
185 } // namespace
186 
187 #endif
188 #endif
Main namespace for the ROSE library.
const size_t UNLIMITED(static_cast< size_t >(-1))
Effictively unlimited size.
Reference-counting intrusive smart pointer.
Definition: SharedPointer.h:68
Base class for reference counted objects.
Definition: SharedObject.h:64
Sawyer::SharedPointer< Node > Ptr
Reference counting pointer.