Parent: [ca078b] (diff)

Download this file

abxtestparams.py    88 lines (72 with data), 2.7 kB

 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
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
#!/usr/bin/env python2
from __future__ import print_function
# Manage parameters for a specific test
import sys
import conftree
import abxutils
def _printable(bytes):
return bytes.decode('utf-8', errors = 'replace')
class ABXTestParams(object):
pnames = ['renderer', 'url', 'meta', 'seek', 'dursecs', 'line',
'spk', 'seqlen']
def __init__(self, fn):
self.fn = fn
va = b'A'
vb = b'B'
# conftree is ok with non-existent files, we are not
f = open(fn)
f.close()
conf = conftree.ConfSimple(fn)
self.base = {}
self.changed = {}
self.defaults = {'renderer':None, 'url':None, 'meta':'',
'seek':0, 'dursecs':0, 'line':va, 'spk':va,
'seqlen':0}
print("%s"%type(conf.get('url')))
# Get base value with defaults
for pname in self.pnames:
self.base[pname] = abxutils.select(pname, [conf.get(pname),
self.defaults[pname]])
# Get changed values from section [test]
for pname in self.pnames:
v = conf.get(pname, 'test')
if v is not None:
self.changed[pname] = v
# If a speaker or line change is never required, no need to try an
# access the switch box
def needswitch(self):
va = b'A'
vb = b'B'
return self.base['line'] == vb or self.base['spk'] == vb or \
('line' in self.changed and self.changed['line'] == vb) or \
('spk' in self.changed and self.changed['spk'] == vb)
# Return value for param in A or B set
def param(self, pname, ab = 'A'):
if ab == 'B' or ab == 'b':
if pname in self.changed:
return self.changed[pname]
return self.base[pname]
def cfString(self):
return open(self.fn).read()
def __repr__(self):
out = ""
for pname in self.pnames:
if pname == 'url':
bpv = _printable(self.base[pname])
else:
bpv = str(self.base[pname])
change = ''
if pname in self.changed:
if pname == 'url':
pv = _printable(self.changed[pname])
else:
pv = str(self.changed[pname])
change = '\n => ' + pv
out += "%s: %s %s\n" % (pname, bpv, change)
return out
if __name__ == '__main__':
if len(sys.argv) != 2:
print("Bad argc", file=sys.stderr)
sys.exit(1)
test = ABXTestParams(sys.argv[1])
print("%s" % test)