'''build ebpf program''' import osimport signalfrom string import Templateimport subprocessimport timefrom TdcPlugin import TdcPluginfrom 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
'''
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