Commit a79d8ba7 authored by Pedro Tammela's avatar Pedro Tammela Committed by Jakub Kicinski
Browse files

selftests: tc-testing: remove buildebpf plugin



As tdc only tests loading/deleting and anything more complicated is
better left to the ebpf test suite, provide a pre-compiled version of
'action.c' and don't bother compiling it in kselftests or on the fly
at all.

Cc: Davide Caratti <dcaratti@redhat.com>
Signed-off-by: default avatarPedro Tammela <pctammela@mojatatu.com>
Acked-by: default avatarJamal Hadi Salim <jhs@mojatatu.com>
Link: https://lore.kernel.org/r/20231124154248.315470-2-pctammela@mojatatu.com


Signed-off-by: default avatarJakub Kicinski <kuba@kernel.org>
parent cae0de45
Loading
Loading
Loading
Loading
+2 −27
Original line number Diff line number Diff line
# SPDX-License-Identifier: GPL-2.0
include ../../../scripts/Makefile.include

top_srcdir = $(abspath ../../../..)
APIDIR := $(top_scrdir)/include/uapi
TEST_GEN_FILES = action.o
TEST_PROGS += ./tdc.sh
TEST_FILES := action-ebpf tdc*.py Tdc*.py plugins plugin-lib tc-tests scripts

include ../lib.mk

PROBE := $(shell $(LLC) -march=bpf -mcpu=probe -filetype=null /dev/null 2>&1)

ifeq ($(PROBE),)
  CPU ?= probe
else
  CPU ?= generic
endif

CLANG_SYS_INCLUDES := $(shell $(CLANG) -v -E - </dev/null 2>&1 \
	| sed -n '/<...> search starts here:/,/End of search list./{ s| \(/.*\)|-idirafter \1|p }')

CLANG_FLAGS = -I. -I$(APIDIR) \
	      $(CLANG_SYS_INCLUDES) \
	      -Wno-compare-distinct-pointer-types

$(OUTPUT)/%.o: %.c
	$(CLANG) $(CLANG_FLAGS) \
		 -O2 --target=bpf -emit-llvm -c $< -o - |      \
	$(LLC) -march=bpf -mcpu=$(CPU) $(LLC_FLAGS) -filetype=obj -o $@

TEST_PROGS += ./tdc.sh
TEST_FILES := tdc*.py Tdc*.py plugins plugin-lib tc-tests scripts
+0 −2
Original line number Diff line number Diff line
@@ -195,8 +195,6 @@ directory:
      and the other is a test whether the command leaked memory or not.
      (This one is a preliminary version, it may not work quite right yet,
      but the overall template is there and it should only need tweaks.)
  - buildebpfPlugin.py:
      builds all programs in $EBPFDIR.


ACKNOWLEDGEMENTS
+856 B

File added.

No diff preview for this file type.

+0 −67
Original line number Diff line number Diff line
'''
build ebpf program
'''

import os
import signal
from string import Template
import subprocess
import time
from TdcPlugin import TdcPlugin
from tdc_config import *

class SubPlugin(TdcPlugin):
    def __init__(self):
        self.sub_class = 'buildebpf/SubPlugin'
        self.tap = ''
        super().__init__()

    def pre_suite(self, testcount, testidlist):
        super().pre_suite(testcount, testidlist)

        if self.args.buildebpf:
            self._ebpf_makeall()

    def post_suite(self, index):
        super().post_suite(index)

        self._ebpf_makeclean()

    def add_args(self, parser):
        super().add_args(parser)

        self.argparser_group = self.argparser.add_argument_group(
            'buildebpf',
            'options for buildebpfPlugin')
        self.argparser_group.add_argument(
            '--nobuildebpf', action='store_false', default=True,
            dest='buildebpf',
            help='Don\'t build eBPF programs')

        return self.argparser

    def _ebpf_makeall(self):
        if self.args.buildebpf:
            self._make('all')

    def _ebpf_makeclean(self):
        if self.args.buildebpf:
            self._make('clean')

    def _make(self, target):
        command = 'make -C {} {}'.format(self.args.NAMES['EBPFDIR'], target)
        proc = subprocess.Popen(command,
            shell=True,
            stdout=subprocess.PIPE,
            stderr=subprocess.PIPE,
            env=os.environ.copy())
        (rawout, serr) = proc.communicate()

        if proc.returncode != 0 and len(serr) > 0:
            foutput = serr.decode("utf-8")
        else:
            foutput = rawout.decode("utf-8")

        proc.stdout.close()
        proc.stderr.close()
        return proc, foutput
+4 −10
Original line number Diff line number Diff line
@@ -54,9 +54,6 @@
            "actions",
            "bpf"
        ],
        "plugins": {
                "requires": "buildebpfPlugin"
        },
        "setup": [
            [
                "$TC action flush action bpf",
@@ -65,10 +62,10 @@
                255
            ]
        ],
        "cmdUnderTest": "$TC action add action bpf object-file $EBPFDIR/action.o section action-ok index 667",
        "cmdUnderTest": "$TC action add action bpf object-file $EBPFDIR/action-ebpf section action-ok index 667",
        "expExitCode": "0",
        "verifyCmd": "$TC action get action bpf index 667",
        "matchPattern": "action order [0-9]*: bpf action.o:\\[action-ok\\] id [0-9].* tag [0-9a-f]{16}( jited)? default-action pipe.*index 667 ref",
        "matchPattern": "action order [0-9]*: bpf action-ebpf:\\[action-ok\\] id [0-9].* tag [0-9a-f]{16}( jited)? default-action pipe.*index 667 ref",
        "matchCount": "1",
        "teardown": [
            "$TC action flush action bpf"
@@ -81,9 +78,6 @@
            "actions",
            "bpf"
        ],
        "plugins": {
                "requires": "buildebpfPlugin"
        },
        "setup": [
            [
                "$TC action flush action bpf",
@@ -92,10 +86,10 @@
                255
            ]
        ],
        "cmdUnderTest": "$TC action add action bpf object-file $EBPFDIR/action.o section action-ko index 667",
        "cmdUnderTest": "$TC action add action bpf object-file $EBPFDIR/action-ebpf section action-ko index 667",
        "expExitCode": "255",
        "verifyCmd": "$TC action get action bpf index 667",
        "matchPattern": "action order [0-9]*: bpf action.o:\\[action-ko\\] id [0-9].*index 667 ref",
        "matchPattern": "action order [0-9]*: bpf action-ebpf:\\[action-ko\\] id [0-9].*index 667 ref",
        "matchCount": "0",
        "teardown": [
            [
Loading