mirror of
https://mirrors.bfsu.edu.cn/git/linux.git
synced 2024-11-26 05:34:13 +08:00
tc-testing: use a plugin to build eBPF program
use a TDC plugin, instead of building eBPF programs in the 'setup' stage. '-B' argument can be used to build eBPF programs in $EBPFDIR directory, in the 'pre-suite' stage. Binaries are then cleaned in 'post-suite' stage. Signed-off-by: Davide Caratti <dcaratti@redhat.com> Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:
parent
cf5eafbfa5
commit
4c2d39bd40
@ -232,6 +232,8 @@ directory:
|
|||||||
and the other is a test whether the command leaked memory or not.
|
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,
|
(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.)
|
but the overall template is there and it should only need tweaks.)
|
||||||
|
- buildebpfPlugin.py:
|
||||||
|
builds all programs in $EBPFDIR.
|
||||||
|
|
||||||
|
|
||||||
ACKNOWLEDGEMENTS
|
ACKNOWLEDGEMENTS
|
||||||
|
@ -0,0 +1,66 @@
|
|||||||
|
'''
|
||||||
|
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(
|
||||||
|
'-B', '--buildebpf', action='store_true',
|
||||||
|
help='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=ENVIR)
|
||||||
|
(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
|
@ -55,7 +55,6 @@
|
|||||||
"bpf"
|
"bpf"
|
||||||
],
|
],
|
||||||
"setup": [
|
"setup": [
|
||||||
"make -C bpf",
|
|
||||||
[
|
[
|
||||||
"$TC action flush action bpf",
|
"$TC action flush action bpf",
|
||||||
0,
|
0,
|
||||||
@ -69,8 +68,7 @@
|
|||||||
"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.o:\\[action-ok\\] id [0-9]* tag [0-9a-f]{16}( jited)? default-action pipe.*index 667 ref",
|
||||||
"matchCount": "1",
|
"matchCount": "1",
|
||||||
"teardown": [
|
"teardown": [
|
||||||
"$TC action flush action bpf",
|
"$TC action flush action bpf"
|
||||||
"make -C bpf clean"
|
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
@ -81,7 +79,6 @@
|
|||||||
"bpf"
|
"bpf"
|
||||||
],
|
],
|
||||||
"setup": [
|
"setup": [
|
||||||
"make -C bpf",
|
|
||||||
[
|
[
|
||||||
"$TC action flush action bpf",
|
"$TC action flush action bpf",
|
||||||
0,
|
0,
|
||||||
@ -100,8 +97,7 @@
|
|||||||
0,
|
0,
|
||||||
1,
|
1,
|
||||||
255
|
255
|
||||||
],
|
]
|
||||||
"make -C bpf clean"
|
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
|
Loading…
Reference in New Issue
Block a user