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
예제 #2
0
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}
예제 #3
0
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()
예제 #4
0
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
예제 #5
0
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 == {}
예제 #6
0
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
예제 #9
0
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
예제 #10
0
def test_default_branchless_code_object():
    tracer = ExecutionTracer()
    tracer.register_code_object(MagicMock())
    assert tracer.get_known_data().branch_less_code_objects == {0}