ROSE  0.9.10.91
Public Types | Public Member Functions | Protected Member Functions | List of all members
Rose::BinaryAnalysis::Concolic::ExecutionManager Class Referenceabstract

Description

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 512 of file BinaryConcolic.h.

#include <BinaryConcolic.h>

Inheritance diagram for Rose::BinaryAnalysis::Concolic::ExecutionManager:
Inheritance graph
[legend]
Collaboration diagram for Rose::BinaryAnalysis::Concolic::ExecutionManager:
Collaboration graph
[legend]

Public Types

typedef Sawyer::SharedPointer< ExecutionManagerPtr
 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 insertSymbolicResults (const TestCase::Ptr &original, const std::vector< TestCase::Ptr > &newCases)
 Insert results from a symbolic 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::TestCaseIdpendingConcreteResults (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::TestCaseIdpendingSymbolicResults (size_t n=(size_t)(-1))
 Next test case for symbolic execution. More...
 
Database::TestCaseId pendingSymbolicResult ()
 Next test case for symbolic execution. More...
 
- Public Member Functions inherited from Sawyer::SharedObject
 SharedObject ()
 Default constructor. More...
 
 SharedObject (const SharedObject &)
 Copy constructor. More...
 
virtual ~SharedObject ()
 Virtual destructor. More...
 
SharedObjectoperator= (const SharedObject &)
 Assignment. More...
 

Protected Member Functions

 ExecutionManager (const Database::Ptr &db)
 

Member Typedef Documentation

Reference counting pointer to an ExecutionManager.

Definition at line 515 of file BinaryConcolic.h.

Member Function Documentation

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 std::vector<Database::TestCaseId> Rose::BinaryAnalysis::Concolic::ExecutionManager::pendingConcreteResults ( size_t  n = (size_t)(-1))
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 void Rose::BinaryAnalysis::Concolic::ExecutionManager::insertConcreteResults ( const TestCase::Ptr ,
const ConcreteExecutor::Result details 
)
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 std::vector<Database::TestCaseId> Rose::BinaryAnalysis::Concolic::ExecutionManager::pendingSymbolicResults ( size_t  n = (size_t)(-1))
virtual

Next test case for symbolic execution.

Returns up to n (default unlimited) test cases that need to be run symbolically. A test case needs to be run symbolically if it is not marked as having completed the symbolic run.

Database::TestCaseId Rose::BinaryAnalysis::Concolic::ExecutionManager::pendingSymbolicResult ( )

Next test case for symbolic execution.

Returns up to n (default unlimited) test cases that need to be run symbolically. A test case needs to be run symbolically if it is not marked as having completed the symbolic run.

virtual void Rose::BinaryAnalysis::Concolic::ExecutionManager::insertSymbolicResults ( const TestCase::Ptr original,
const std::vector< TestCase::Ptr > &  newCases 
)
virtual

Insert results from a symbolic execution.

When a symbolic 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 bool Rose::BinaryAnalysis::Concolic::ExecutionManager::isFinished ( ) const
virtual

Predicate to determine whether testing is completed.

Testing is done when there are no more test cases that need concrete or symbolic results.

virtual void Rose::BinaryAnalysis::Concolic::ExecutionManager::run ( )
pure virtual

Start running.

Runs concrete and symbolic 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.


The documentation for this class was generated from the following file: