7 from string
import Template
10 from TdcPlugin
import TdcPlugin
11 from tdc_config
import *
13 class SubPlugin(TdcPlugin
):
15 self
.sub_class
= 'buildebpf/SubPlugin'
19 def pre_suite(self
, testcount
, testidlist
):
20 super().pre_suite(testcount
, testidlist
)
22 if self
.args
.buildebpf
:
25 def post_suite(self
, index
):
26 super().post_suite(index
)
28 self
._ebpf
_makeclean
()
30 def add_args(self
, parser
):
31 super().add_args(parser
)
33 self
.argparser_group
= self
.argparser
.add_argument_group(
35 'options for buildebpfPlugin')
36 self
.argparser_group
.add_argument(
37 '--nobuildebpf', action
='store_false', default
=True,
39 help='Don\'t build eBPF programs')
43 def _ebpf_makeall(self
):
44 if self
.args
.buildebpf
:
47 def _ebpf_makeclean(self
):
48 if self
.args
.buildebpf
:
51 def _make(self
, target
):
52 command
= 'make -C {} {}'.format(self
.args
.NAMES
['EBPFDIR'], target
)
53 proc
= subprocess
.Popen(command
,
55 stdout
=subprocess
.PIPE
,
56 stderr
=subprocess
.PIPE
,
58 (rawout
, serr
) = proc
.communicate()
60 if proc
.returncode
!= 0 and len(serr
) > 0:
61 foutput
= serr
.decode("utf-8")
63 foutput
= rawout
.decode("utf-8")