On Mon 12 Jun 2023 at 18:35, shaozhengchao <shaozhengchao@xxxxxxxxxx> wrote: > On 2023/6/12 15:57, Vlad Buslov wrote: >> All TEQL tests assume that sch_teql module is loaded. Load module in tdc.sh >> before running qdisc tests. >> Fixes following example error when running tests via tdc.sh for all TEQL >> tests: >> # $ sudo ./tdc.py -d eth2 -e 84a0 >> # -- ns/SubPlugin.__init__ >> # Test 84a0: Create TEQL with default setting >> # exit: 2 >> # exit: 0 >> # Error: Specified qdisc kind is unknown. >> # >> # -----> teardown stage *** Could not execute: "$TC qdisc del dev $DUMMY handle 1: root" >> # >> # -----> teardown stage *** Error message: "Error: Invalid handle. >> # " >> # returncode 2; expected [0] >> # >> # -----> teardown stage *** Aborting test run. >> # >> # <_io.BufferedReader name=3> *** stdout *** >> # >> # <_io.BufferedReader name=5> *** stderr *** >> # "-----> teardown stage" did not complete successfully >> # Exception <class '__main__.PluginMgrTestFail'> ('teardown', 'Error: Specified qdisc kind is unknown.\n', '"-----> teardown stage" did not complete successfully') (caught in test_runner, running test 2 84a0 Create TEQL with default setting stage teardown) >> # --------------- >> # traceback >> # File "/images/src/linux/tools/testing/selftests/tc-testing/./tdc.py", line 495, in test_runner >> # res = run_one_test(pm, args, index, tidx) >> # File "/images/src/linux/tools/testing/selftests/tc-testing/./tdc.py", line 434, in run_one_test >> # prepare_env(args, pm, 'teardown', '-----> teardown stage', tidx['teardown'], procout) >> # File "/images/src/linux/tools/testing/selftests/tc-testing/./tdc.py", line 245, in prepare_env >> # raise PluginMgrTestFail( >> # --------------- >> # accumulated output for this test: >> # Error: Specified qdisc kind is unknown. >> # >> # --------------- >> # >> # All test results: >> # >> # 1..1 >> # ok 1 84a0 - Create TEQL with default setting # skipped - "-----> teardown stage" did not complete successfully >> Fixes: cc62fbe114c9 ("selftests/tc-testing: add selftests for teql qdisc") >> Signed-off-by: Vlad Buslov <vladbu@xxxxxxxxxx> >> --- >> tools/testing/selftests/tc-testing/tdc.sh | 1 + >> 1 file changed, 1 insertion(+) >> diff --git a/tools/testing/selftests/tc-testing/tdc.sh >> b/tools/testing/selftests/tc-testing/tdc.sh >> index afb0cd86fa3d..eb357bd7923c 100755 >> --- a/tools/testing/selftests/tc-testing/tdc.sh >> +++ b/tools/testing/selftests/tc-testing/tdc.sh >> @@ -2,5 +2,6 @@ >> # SPDX-License-Identifier: GPL-2.0 >> modprobe netdevsim >> +modprobe sch_teql > I think not only the sch_teql module needs to be imported, but all test > modules need to be imported before testing. Modifying the config file > looks more appropriate. All other modules are automatically loaded when first qdisc/action/classifier is instantiated via their respective APIs. The problem with two modules that are manually inserted here is that netdevsim-related tests expect /sys/bus/netdevsim/new_device to exist (which only exists if netdevsim module has been manually loaded) and specific command format "$TC qdisc add dev $DUMMY handle 1: root teql0" failing since 'telq0', again, only exists when sch_telq is loaded. Overall, I added modprobe here not for theoretical correctness sake but because running tdc.sh on cold system causes error included in the commit message for me. I don't get any other errors related to necessary kernel modules not being loaded for any other kinds of tc tests. >> ./tdc.py -c actions --nobuildebpf >> ./tdc.py -c qdisc