
Public Types | |
| using | Branch = SmallStepEvaluator::Branch |
| using | Callback = std::function<bool(const FinalState &)> |
| using | StepResult = SmallStepEvaluator::Result |
Public Member Functions | |
| SymbolicExecutor (AbstractSolver &solver, const ProgramInfo &programInfo) | |
| SymbolicExecutor (const SymbolicExecutor &)=default | |
| SymbolicExecutor (SymbolicExecutor &&)=delete | |
| const P4::Coverage::CoverageSet & | getVisitedNodes () |
| Getter to access visitedNodes. | |
| SymbolicExecutor & | operator= (const SymbolicExecutor &)=delete |
| SymbolicExecutor & | operator= (SymbolicExecutor &&)=delete |
| void | printCurrentTraceAndBranches (std::ostream &out, const ExecutionState &executionState) |
| Writes a list of the selected branches into. | |
| virtual void | run (const Callback &callBack) |
| virtual void | runImpl (const Callback &callBack, ExecutionStateReference executionState)=0 |
| bool | updateVisitedNodes (const P4::Coverage::CoverageSet &newNodes) |
| Update the set of visited nodes. Returns true if there was an update. | |
Protected Member Functions | |
| bool | handleTerminalState (const Callback &callback, const ExecutionState &terminalState) |
| StepResult | step (ExecutionState &state) |
| Take one step in the program and return list of possible branches. | |
Static Protected Member Functions | |
| static bool | evaluateBranch (const SymbolicExecutor::Branch &branch, AbstractSolver &solver) |
| static SymbolicExecutor::Branch | popRandomBranch (std::vector< SymbolicExecutor::Branch > &candidateBranches) |
| Select a branch at random from the input. | |
Protected Attributes | |
| const P4::Coverage::CoverageSet & | coverableNodes |
| Set of all nodes, to be retrieved from programInfo. | |
| const ProgramInfo & | programInfo |
| Target-specific information about the P4 program. | |
| AbstractSolver & | solver |
| The SMT solver backing this executor. | |
| P4::Coverage::CoverageSet | visitedNodes |
| Set of all nodes executed in any testcase that has been outputted. | |
Base abstract class for symbolic execution. It requires the implementation of the run method, and carries the base Branch struct, to be reused in inherited classes. It also holds a default termination method, which can be overridden.
| using P4Tools::P4Testgen::SymbolicExecutor::Callback = std::function<bool(const FinalState &)> |
|
staticprotected |
Take a branch and a solver as input. Compute the branch's path conditions using the solver. Return true if the solver can find a solution and does not time out.
|
protected |
Handles processing at the end of a P4 program.
|
staticprotected |
Select a branch at random from the input.
| candidateBranches. |
| void P4Tools::P4Testgen::SymbolicExecutor::printCurrentTraceAndBranches | ( | std::ostream & | out, |
| const ExecutionState & | executionState ) |
Writes a list of the selected branches into.
| out. |
|
virtual |
|
pure virtual |