def METHOD_NAME(
    net_connect_newconn, fast_cli, delay_factor, max_loops, compat_timeout
):
    """
    In this test read_timeout is ignored and the timeout used by
    send_command should be calculated from global_delay_factor/delay_factor/max_loops
    """
    nc = net_connect_newconn
    # Force it into Netmiko 3.x compatibility mode
    nc.delay_factor_compat = True
    allowed_percentage = 0.5
    if not fast_cli:
        nc.fast_cli = False
        nc.global_delay_factor = 1.0
    # Explicitly send expect_string so timing is more accurate
    my_prompt = nc.find_prompt()
    pattern = re.escape(my_prompt)
    my_except, exec_time = show_long_running(
        nc,
        read_timeout=20,
        expect_string=pattern,
        delay_factor=delay_factor,
        max_loops=max_loops,
    )
    print(exec_time)
    # Returned exception should be read_timeout
    assert isinstance(my_except, ReadTimeout)
    # Calculate difference in execution time from timeout
    time_diff = abs(exec_time.total_seconds() - compat_timeout)
    # Convert difference to a percentage of expected timeout
    time_margin_percent = time_diff / compat_timeout * 100
    # Margin off should be less than the allowed_percentage
    assert time_margin_percent < allowed_percentage