ROSE
0.9.12.28
|
Base class for managing an entire concolic testing run.
An ExecutionManager is responsible for running an entire test suite either starting from scratch or restarting from a previous state that was saved in a database.
Definition at line 900 of file BinaryConcolic.h.
#include <BinaryConcolic.h>
Public Types | |
typedef Sawyer::SharedPointer< ExecutionManager > | Ptr |
Reference counting pointer to an ExecutionManager. More... | |
Public Member Functions | |
Database::Ptr | database () const |
Property: Database. More... | |
virtual void | insertConcreteResults (const TestCase::Ptr &, const ConcreteExecutor::Result &details) |
Insert results of a concrete run. More... | |
virtual void | insertConcolicResults (const TestCase::Ptr &original, const std::vector< TestCase::Ptr > &newCases) |
Insert results from a concolic execution. More... | |
virtual bool | isFinished () const |
Predicate to determine whether testing is completed. More... | |
virtual void | run ()=0 |
Start running. More... | |
virtual std::vector< Database::TestCaseId > | pendingConcreteResults (size_t n=(size_t)(-1)) |
Next test case for concrete execution. More... | |
Database::TestCaseId | pendingConcreteResult () |
Next test case for concrete execution. More... | |
virtual std::vector< Database::TestCaseId > | pendingConcolicResults (size_t n=(size_t)(-1)) |
Next test case for concolic execution. More... | |
Database::TestCaseId | pendingConcolicResult () |
Next test case for concolic execution. More... | |
Public Member Functions inherited from Sawyer::SharedObject | |
SharedObject () | |
Default constructor. More... | |
SharedObject (const SharedObject &) | |
Copy constructor. More... | |
virtual | ~SharedObject () |
Virtual destructor. More... | |
SharedObject & | operator= (const SharedObject &) |
Assignment. More... | |
Protected Member Functions | |
ExecutionManager (const Database::Ptr &db) | |
typedef Sawyer::SharedPointer<ExecutionManager> Rose::BinaryAnalysis::Concolic::ExecutionManager::Ptr |
Reference counting pointer to an ExecutionManager.
Definition at line 903 of file BinaryConcolic.h.
Database::Ptr Rose::BinaryAnalysis::Concolic::ExecutionManager::database | ( | ) | const |
Property: Database.
The database used by this manager. The database is set in the constructor and cannot be changed later.
|
virtual |
Next test case for concrete execution.
Returns up to n
(default unlimited) test cases that need to be run concretely. A test case needs to be run concretely if it has no results from a previous concrete run.
Database::TestCaseId Rose::BinaryAnalysis::Concolic::ExecutionManager::pendingConcreteResult | ( | ) |
Next test case for concrete execution.
Returns up to n
(default unlimited) test cases that need to be run concretely. A test case needs to be run concretely if it has no results from a previous concrete run.
|
virtual |
Insert results of a concrete run.
Inserts into the database the results of a concrete run of a test case. Concrete test results always have two parts: a floating point number for ranking relative to other concrete results, and the result details. The detailed results are user defined and stored in the database in XML format, while the rank is duplicated in a floating point field.
|
virtual |
Next test case for concolic execution.
Returns up to n
(default unlimited) test cases that need to be run concolically. A test case needs to be run concolically if it is not marked as having completed the concolic run.
Database::TestCaseId Rose::BinaryAnalysis::Concolic::ExecutionManager::pendingConcolicResult | ( | ) |
Next test case for concolic execution.
Returns up to n
(default unlimited) test cases that need to be run concolically. A test case needs to be run concolically if it is not marked as having completed the concolic run.
|
virtual |
Insert results from a concolic execution.
When a concolic execution completes it will have produced some number of new test cases that should be inserted into the database. The subclass is reponsible for pruning the list of produced test cases by removing those that have been tested already or which wouldn't contribute any new results.
|
virtual |
Predicate to determine whether testing is completed.
Testing is done when there are no more test cases that need concrete or concolic results.
|
pure virtual |
Start running.
Runs concrete and concolic executors until the application is interrupted or there's nothing left to do. Subclasses will likely reimplement this method in order to do parallel processing, limit execution time, etc.
Implemented in Rose::BinaryAnalysis::Concolic::LinuxExitStatus.