static int cfg_clockid = CLOCK_TAI;
static uint16_t cfg_port = 8000;
static int cfg_variance_us = 4000;
+static bool cfg_machine_slow;
static uint64_t cfg_start_time_ns;
static int cfg_mark;
static bool cfg_rx;
if (llabs(tstop - texpect) > cfg_variance_us) {
fprintf(stderr, "exceeds variance (%d us)\n", cfg_variance_us);
- if (!getenv("KSFT_MACHINE_SLOW"))
+ if (!cfg_machine_slow)
errors++;
}
}
now = gettime_ns(CLOCK_REALTIME);
if (cfg_start_time_ns < now) {
fprintf(stderr, "FAIL: start time already passed\n");
- if (!getenv("KSFT_MACHINE_SLOW"))
+ if (!cfg_machine_slow)
errors++;
return;
}
if (bind(fd, addr, alen))
error(1, errno, "bind");
+ if (cfg_machine_slow)
+ tv.tv_sec = 2;
+
if (setsockopt(fd, SOL_SOCKET, SO_RCVTIMEO, &tv, sizeof(tv)))
error(1, errno, "setsockopt rcv timeout");
setup_sockaddr(domain, saddr, &cfg_src_addr);
cfg_num_pkt = parse_io(argv[optind], cfg_buf);
+
+ cfg_machine_slow = getenv("KSFT_MACHINE_SLOW");
}
int main(int argc, char **argv)
Test delivery time in FQ and ETF qdiscs.
"""
+import os
import time
from lib.py import ksft_exit, ksft_run, ksft_variants
def test_so_txtime(cfg, clockid, ipver, args_tx, args_rx, expect_success):
"""Main function. Run so_txtime as sender and receiver."""
+ slow_machine = os.environ.get('KSFT_MACHINE_SLOW')
+
bin_path = cfg.test_dir / "so_txtime"
- tstart = time.time_ns() + 200_000_000
+ tstart = time.time_ns() + (2000_000_000 if slow_machine else 200_000_000)
cmd_addr = f"-S {cfg.addr_v[ipver]} -D {cfg.remote_addr_v[ipver]}"
cmd_base = f"{bin_path} -{ipver} -c {clockid} -t {tstart} {cmd_addr}"
cmd_rx = f"{cmd_base} {args_rx} -r"
cmd_tx = f"{cmd_base} {args_tx}"
+ expect_fail = not expect_success
+ if slow_machine:
+ expect_success = False
+
with bkg(cmd_rx, host=cfg.remote, fail=expect_success,
- expect_fail=(not expect_success), exit_wait=True):
+ expect_fail=expect_fail, exit_wait=True):
cmd(cmd_tx)