![]()  | 
  
    P4C
    
   The P4 Compiler 
   | 
 
#include <random_backtrack.h>
Public Member Functions | |
| RandomBacktrack (AbstractSolver &solver, const ProgramInfo &programInfo) | |
| Constructor for this strategy, considering inheritance.  | |
| void | runImpl (const Callback &callBack, ExecutionStateReference executionState) override | 
  Public Member Functions inherited from P4Tools::P4Testgen::SymbolicExecutor | |
| 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) | 
| bool | updateVisitedNodes (const P4::Coverage::CoverageSet &newNodes) | 
| Update the set of visited nodes. Returns true if there was an update.  | |
Additional Inherited Members | |
  Public Types inherited from P4Tools::P4Testgen::SymbolicExecutor | |
| using | Branch = SmallStepEvaluator::Branch | 
| using | Callback = std::function<bool(const FinalState &)> | 
| using | StepResult = SmallStepEvaluator::Result | 
  Protected Member Functions inherited from P4Tools::P4Testgen::SymbolicExecutor | |
| 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 inherited from P4Tools::P4Testgen::SymbolicExecutor | |
| 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 inherited from P4Tools::P4Testgen::SymbolicExecutor | |
| 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.  | |
A simple random traversal strategy. If this selection strategy hits a branch point, it will choose a path at random and continue execution downwards. Once the selection strategy has hit a terminal state, it will pop a random state from the container of unexplored, remaining branches.
      
  | 
  overridevirtual | 
Executes the P4 program along a randomly chosen path. When the program terminates, the given callback is invoked. If the callback returns true, then the executor terminates. Otherwise, execution of the P4 program continues on a different random path.
Implements P4Tools::P4Testgen::SymbolicExecutor.