Bug 246448 - sys.net.if_bridge_test.stp always timeout
Summary: sys.net.if_bridge_test.stp always timeout
Status: Closed FIXED
Alias: None
Product: Base System
Classification: Unclassified
Component: tests (show other bugs)
Version: CURRENT
Hardware: Any Any
: --- Affects Only Me
Assignee: Kristof Provost
URL:
Keywords:
Depends on:
Blocks:
 
Reported: 2020-05-13 20:33 UTC by Li-Wen Hsu
Modified: 2021-04-23 15:51 UTC (History)
1 user (show)

See Also:


Attachments

Note You need to log in before you can comment on or make changes to this bug.
Description Li-Wen Hsu freebsd_committer freebsd_triage 2020-05-13 20:33:13 UTC
After https://github.com/freebsd/freebsd-ci/pull/65 merged,
jq is installed to the test VM, and sys.net.if_bridge_test.stp gets unskipped
since https://ci.freebsd.org/job/FreeBSD-head-amd64-test/15098/

This case always gets timeout, and might have side affect causes sys.net.if_clone_test.* unstable.
Comment 1 Li-Wen Hsu freebsd_committer freebsd_triage 2020-05-13 20:40:33 UTC
Temporarily skipped in CI:

https://svnweb.freebsd.org/changeset/base/361018
Comment 2 Kristof Provost freebsd_committer freebsd_triage 2020-05-13 22:08:24 UTC
The problem appears to be limited to single-core systems. That is, I cannot reproduce it on my 8-core test VM, but I can reproduce it on the same system running only with a single core.

The STP test creates a bridging loop, which means there is constant traffic over the bridges. This appears to drown out other tasks, and as such the test is extremely slow and not terminated by kyua's timeout functionality.

I'm not sure how this should be fixed though.
Comment 3 Kristof Provost freebsd_committer freebsd_triage 2020-05-31 19:20:56 UTC
Proposed patch in: https://reviews.freebsd.org/D25084

This doesn't fix the scheduling issue. It merely avoids it in the test.
Comment 4 commit-hook freebsd_committer freebsd_triage 2020-06-01 19:27:19 UTC
A commit references this bug:

Author: kp
Date: Mon Jun  1 19:26:16 UTC 2020
New revision: 361701
URL: https://svnweb.freebsd.org/changeset/base/361701

Log:
  bridge tests: Avoid building a switching loop

  Enable STP before bringing the bridges up. This avoids a switching loop,
  which has a tendency to drown out progress in userspace processes,
  especially on single-core systems.

  Only check that we have indeed shut down one of the looped interfaces

  PR:		246448
  Reviewed by:	melifaro
  Differential Revision:	https://reviews.freebsd.org/D25084

Changes:
  head/tests/sys/net/if_bridge_test.sh
Comment 5 commit-hook freebsd_committer freebsd_triage 2020-06-07 13:54:06 UTC
A commit references this bug:

Author: kp
Date: Sun Jun  7 13:53:03 UTC 2020
New revision: 361893
URL: https://svnweb.freebsd.org/changeset/base/361893

Log:
  bridge tests: Re-enable STP test

  This test should no longer provoke large amounts of traffic, which can
  overwhelm single-core systems, preventing them from making progress in the
  tests.

  The test can now be re-enabled.

  PR:		246448

Changes:
  head/tests/sys/net/if_bridge_test.sh
Comment 6 commit-hook freebsd_committer freebsd_triage 2021-03-02 15:18:33 UTC
A commit in branch stable/12 references this bug:

URL: https://cgit.FreeBSD.org/src/commit/?id=fd5828b62bdb5738143c81edb139365aa4151567

commit fd5828b62bdb5738143c81edb139365aa4151567
Author:     Kristof Provost <kp@FreeBSD.org>
AuthorDate: 2020-06-01 19:26:16 +0000
Commit:     Kristof Provost <kp@FreeBSD.org>
CommitDate: 2021-03-02 13:03:07 +0000

    bridge tests: Avoid building a switching loop

    Enable STP before bringing the bridges up. This avoids a switching loop,
    which has a tendency to drown out progress in userspace processes,
    especially on single-core systems.

    Only check that we have indeed shut down one of the looped interfaces

    PR:             246448
    Reviewed by:    melifaro
    Differential Revision:  https://reviews.freebsd.org/D25084

    (cherry picked from commit e07e002e950aa673266e3d4b30c43e1198af65e0)

 tests/sys/net/if_bridge_test.sh | 17 +++--------------
 1 file changed, 3 insertions(+), 14 deletions(-)