def test_clear(): tracer = ExecutionTracer() tracer.register_code_object(MagicMock(CodeObjectMetaData)) tracer.executed_code_object(0) trace = tracer.get_trace() tracer.clear_trace() assert tracer.get_trace() != trace
def test_no_branchless_code_object_register_multiple(): tracer = ExecutionTracer() tracer.register_code_object(MagicMock()) tracer.register_code_object(MagicMock()) tracer.register_predicate(MagicMock(code_object_id=0)) tracer.register_predicate(MagicMock(code_object_id=0)) assert tracer.get_known_data().branch_less_code_objects == {1}
def test_code_object_executed_other_thread(): tracer = ExecutionTracer() tracer.current_thread_ident = threading.currentThread().ident tracer.register_code_object(MagicMock()) thread = threading.Thread(target=tracer.executed_code_object, args=(0,)) thread.start() thread.join() assert tracer.get_trace().executed_code_objects == set()
def test_clear(): tracer = ExecutionTracer() tracer.current_thread_ident = threading.currentThread().ident tracer.register_code_object(MagicMock(CodeObjectMetaData)) tracer.executed_code_object(0) trace = tracer.get_trace() tracer.clear_trace() assert tracer.get_trace() != trace
def test_bool_predicate_executed_other_thread(): tracer = ExecutionTracer() tracer.current_thread_ident = threading.currentThread().ident tracer.register_code_object(MagicMock()) tracer.register_code_object(MagicMock(code_object_id=0)) thread = threading.Thread(target=tracer.executed_bool_predicate, args=(True, 0)) thread.start() thread.join() assert tracer.get_trace().executed_predicates == {}
def test_calculate_control_flow_distance_for_root(executed_code_objects, approach_level): execution_result = MagicMock(ExecutionResult) execution_trace = MagicMock(ExecutionTrace) execution_trace.executed_code_objects = executed_code_objects execution_result.execution_trace = execution_trace tracer = ExecutionTracer() tracer.register_code_object(MagicMock()) tracer.register_code_object(MagicMock()) distance = get_root_control_flow_distance(execution_result, 0, tracer) assert distance == ControlFlowDistance(approach_level=approach_level, branch_distance=0.0)
def test_entered_function(): tracer = ExecutionTracer() tracer.register_code_object(MagicMock(CodeObjectMetaData)) tracer.executed_code_object(0) assert 0 in tracer.get_trace().executed_code_objects
def test_functions_exists(): tracer = ExecutionTracer() assert tracer.register_code_object(MagicMock(CodeObjectMetaData)) == 0 assert tracer.register_code_object(MagicMock(CodeObjectMetaData)) == 1 assert 0 in tracer.get_known_data().existing_code_objects
def test_entered_function(): tracer = ExecutionTracer() tracer.current_thread_ident = threading.currentThread().ident tracer.register_code_object(MagicMock(CodeObjectMetaData)) tracer.executed_code_object(0) assert 0 in tracer.get_trace().executed_code_objects
def test_default_branchless_code_object(): tracer = ExecutionTracer() tracer.register_code_object(MagicMock()) assert tracer.get_known_data().branch_less_code_objects == {0}