def analyze_results(results: List[ExecutionResult]) -> ExecutionTrace: """Merge the trace of the given results. Args: results: The list of execution results to analyze Returns: the merged traces. """ merged = ExecutionTrace() for result in results: trace = result.execution_trace assert trace is not None merged.merge(trace) return merged
def analyze_traces( results: List[ExecutionResult]) -> Tuple[bool, ExecutionTrace]: """Analyze the given traces. Args: results: The list of execution results to analyse Returns: A tuple that tells whether or not a trace contained an exception and the merged traces. """ has_exception = False merged = ExecutionTrace() for result in results: trace = result.execution_trace assert trace merged.merge(trace) if result.has_test_exceptions(): has_exception = True return has_exception, merged
def test_merge_full(): trace0 = ExecutionTrace() trace0.executed_code_objects.add(0) trace0.executed_code_objects.add(1) trace0.executed_predicates[0] = 9 trace0.executed_predicates[1] = 7 trace0.true_distances[0] = 6 trace0.true_distances[1] = 3 trace0.false_distances[0] = 0 trace0.false_distances[1] = 1 trace1 = ExecutionTrace() trace1.executed_code_objects.add(1) trace1.executed_code_objects.add(2) trace1.executed_predicates[1] = 5 trace1.executed_predicates[2] = 8 trace1.true_distances[1] = 19 trace1.true_distances[2] = 3 trace1.false_distances[1] = 234 trace1.false_distances[2] = 0 result = ExecutionTrace() result.executed_code_objects.add(0) result.executed_code_objects.add(1) result.executed_code_objects.add(2) result.executed_predicates[0] = 9 result.executed_predicates[1] = 12 result.executed_predicates[2] = 8 result.true_distances[0] = 6 result.true_distances[1] = 3 result.true_distances[2] = 3 result.false_distances[0] = 0 result.false_distances[1] = 1 result.false_distances[2] = 0 trace0.merge(trace1) assert trace0 == result
def _init_trace(self) -> None: """Create a new trace that only contains the trace data from the import.""" new_trace = ExecutionTrace() new_trace.merge(self._import_trace) self._trace = new_trace
def test_merge(): trace0 = ExecutionTrace() trace1 = ExecutionTrace() trace0.merge(trace1) assert trace0 == ExecutionTrace()