123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566 |
- '''
- 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
|