ROSE 0.11.145.147
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
13namespace Rose {
14namespace BinaryAnalysis {
15namespace Concolic {
16
21class ExecutionManager: boost::noncopyable, public Sawyer::SharedObject {
23 // Types
25public:
28
30 // Data members
32private:
33 DatabasePtr database_;
34 ConcolicExecutorSettings concolicExecutorSettings_;
35 const Yaml::Node config_;
36
38 // Construction and destruction
40public:
41 virtual ~ExecutionManager();
42protected:
43 explicit ExecutionManager(const DatabasePtr&);
44 ExecutionManager(const DatabasePtr&, const ConcolicExecutorSettings&, const Yaml::Node&);
45
46public:
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
102public:
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&);
134 // Actions
136public:
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
Base class for reference counted objects.
Reference-counting intrusive smart pointer.
Sawyer::SharedPointer< Node > Ptr
Reference counting pointer.
The ROSE library.