Main Page
Namespaces
Classes
Package Documentation
DQM
Integration
scripts
contentValuesCheck.py
Go to the documentation of this file.
1
#!/usr/bin/env python
2
3
from
contentValuesLib
import
*
4
5
class
OptionParser
(optparse.OptionParser):
6
""" Option parser class """
7
def
__init__
(self):
8
optparse.OptionParser.__init__(self, usage=
"%prog [options] root_file ..."
, version=
"%prog 0.0.1"
, conflict_handler=
"resolve"
)
9
self.add_option(
"--silent"
,
"-s"
, action=
"store_true"
, dest=
"silent"
, default=
False
, help=
"silent mode: specify return code and exit"
)
10
self.add_option(
"--subsystem"
,
"-c"
, action=
"store"
, type=
"string"
, dest=
"subsystem"
, default=
None
, help=
"Specify test subsystem"
)
11
12
if
__name__ ==
"__main__"
:
13
14
# Create option parser and get options/arguments
15
optManager =
OptionParser
()
16
(opts, args) = optManager.parse_args()
17
opts = opts.__dict__
18
19
# Check if at least one root file defined (can be many!)
20
if
len(args) == 0:
21
print
"At least one ROOT file must be priovided, use --help for hit"
22
sys.exit(1)
23
24
# Check if all files exists and are accessible
25
for
rfile
in
args:
26
try
:
27
os.stat(rfile)
28
except
:
29
print
"File ["
, rfile,
"] not exists or is not accessible?"
30
sys.exit(2)
31
32
ss = opts[
'subsystem'
]
33
34
# Lets extract values from files one-by-one, construct hashmap and check values
35
for
rfile
in
args:
36
37
(run_number, values) =
getSummaryValues
(file_name = rfile, shift_type =
None
, translate =
False
, filters =
None
)
38
39
if
values ==
None
or
len(values) == 0:
40
print
"No content summary values found. Skipping file: %s"
% rfile
41
continue
42
43
messages = []
44
for
sub
in
SUBSYSTEMS.keys():
45
46
if
not
ss ==
None
and
not
sub == ss:
47
continue
48
49
if
sub
not
in
values:
50
messages.append(
"%s: missing subsystem!"
% sub)
51
continue
52
53
skeys = {}
54
sfolders = []
55
56
for
folder
in
FOLDERS.keys():
57
58
if
folder
not
in
values[sub]:
59
messages.append(
"%s: missing folder EventInfo/%s"
% (sub, folder))
60
continue
61
62
if
len(values[sub][folder]) == 0:
63
messages.append(
"%s: empty folder EventInfo/%s"
% (sub, FOLDERS[folder][1]))
64
continue
65
66
sfolders.append(folder)
67
68
if
'Summary'
not
in
values[sub][folder]:
69
messages.append(
"%s: missing summary value EventInfo/%s"
% (sub, FOLDERS[folder][1]))
70
71
for
key
in
values[sub][folder].
keys
():
72
if
key ==
'Summary'
:
73
continue
74
if
key
not
in
skeys:
75
skeys[key] = []
76
skeys[key].
append
(folder)
77
78
for
key
in
skeys:
79
nfound = []
80
for
folder
in
sfolders:
81
if
skeys[key].
count
(folder) == 0: nfound.append(folder)
82
if
len(nfound) > 0:
83
messages.append(
"%s: value (%s)/%s not found in (%s)"
% (sub,
','
.
join
(skeys[key]), key,
','
.
join
(nfound)))
84
85
if
not
opts[
'silent'
]:
86
for
message
in
sorted(messages):
print
message
87
print
"%d errors found"
% len(messages)
88
89
if
len(messages) > 0: sys.exit(1)
90
91
sys.exit(0)
92
93
KineDebug3::count
void count()
Definition:
KinematicConstrainedVertexUpdatorT.h:20
contentValuesCheck.OptionParser.__init__
def __init__(self)
Definition:
contentValuesCheck.py:7
contentValuesLib.getSummaryValues
def getSummaryValues(file_name, translate, filters=None)
Definition:
contentValuesLib.py:40
relativeConstraints.keys
keys
Definition:
relativeConstraints.py:88
mps_setup.append
append
Definition:
mps_setup.py:83
join
static std::string join(char **cmd)
Definition:
RemoteFile.cc:18
contentValuesCheck.OptionParser
Definition:
contentValuesCheck.py:5
Generated for CMSSW Reference Manual by
1.8.11