1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69
|
#!/usr/bin/env python
import subprocess as sp
from runtest import TestBase
class TestCase(TestBase):
def __init__(self):
TestBase.__init__(self, 'hello', """
# system information
# ==================
# program version : v0.10-52-gca6c ( x86_64 dwarf python luajit tui perf sched dynamic )
# recorded on : Mon Aug 16 07:05:58 2021
# cmdline : uftrace record t-hello note.txt
# cpu info : ARM64 (v8)
# number of cpus : 2 / 2 (online / possible)
# memory info : 0.1 / 1.8 GB (free / total)
# system load : 1.21 / 1.12 / 1.13 (1 / 5 / 15 min)
# kernel version : Linux 5.10.21-200.fc33.aarch64
# hostname : fedora
# distro : "Fedora 33 (Workstation Edition)
#
# process information
# ===================
# number of tasks : 1
# task list : 19331(t-hello)
# exe image : /home/honggyu/work/uftrace/tests/t-hello
# build id : bbe710345ed7b36f7c83085837cbf24b1fba00fb
# pattern : regex
# exit status : exited with code: 0
# elapsed time : 0.008521454 sec
# cpu time : 0.007 / 0.001 sec (sys / user)
# context switch : 2 / 1 (voluntary / involuntary)
# max rss : 4844 KB
# page fault : 0 / 349 (major / minor)
# disk iops : 0 / 8 (read / write)
#
# extra note information
# ======================
You can leave a note for the recorded data.""")
def prerun(self, timeout):
self.subcmd = 'record'
self.exearg += ' note.txt'
record_cmd = self.runcmd()
self.pr_debug('prerun command: ' + record_cmd)
f = open('/dev/null')
sp.call(record_cmd.split(), stdout=f, stderr=f)
f.close()
return TestBase.TEST_SUCCESS
def setup(self):
with open('uftrace.data/note.txt', 'w+') as f:
f.write('You can leave a note for the recorded data.')
self.subcmd = 'info'
self.exearg = ''
def sort(self, output):
header_match = 0
for ln in output.split('\n'):
if header_match == 0:
if ln.startswith('# extra note information'):
header_match = 1
elif header_match == 1:
header_match = 2
elif header_match == 2:
return ln
return ''
|