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>
9#include <boost/noncopyable.hpp>
10#include <Sawyer/SharedObject.h>
14namespace BinaryAnalysis {
33 DatabasePtr database_;
34 ConcolicExecutorSettings concolicExecutorSettings_;
35 const Yaml::Node config_;
41 virtual ~ExecutionManager();
43 explicit ExecutionManager(
const DatabasePtr&);
44 ExecutionManager(
const DatabasePtr&,
const ConcolicExecutorSettings&,
const Yaml::Node&);
74 static Ptr instance(
const ConcolicExecutorSettings&,
const Yaml::Node&);
84 static Ptr open(
const std::string &databaseUrl);
96 static Ptr create(
const std::string &databaseUrl,
const boost::filesystem::path &executableName,
97 const std::vector<std::string> &arguments,
const std::string &testSuiteName =
"");
106 const ConcolicExecutorSettings& concolicExecutorSettings()
const;
107 ConcolicExecutorSettings& concolicExecutorSettings();
108 void concolicExecutorSettings(
const ConcolicExecutorSettings&);
114 DatabasePtr database()
const;
122 std::vector<TestSuiteId> testSuites()
const;
129 TestSuitePtr testSuite()
const;
130 void testSuite(
const TestSuitePtr&);
143 virtual std::vector<TestCaseId> pendingConcreteResults(
size_t n = UNLIMITED);
144 TestCaseId pendingConcreteResult() ;
152 virtual void insertConcreteResults(
const TestCasePtr&,
const ConcreteResultPtr&);
160 virtual std::vector<TestCaseId> pendingConcolicResults(
size_t n = UNLIMITED);
161 TestCaseId pendingConcolicResult() ;
169 virtual void insertConcolicResults(
const TestCasePtr &original,
const std::vector<TestCasePtr> &newCases);
174 virtual bool isFinished()
const;
Base class for reference counted objects.
Reference-counting intrusive smart pointer.
Sawyer::SharedPointer< Node > Ptr
Reference counting pointer.