DUNE-DAQ
DUNE Trigger and Data Acquisition software
Toggle main menu visibility
Loading...
Searching...
No Matches
dunedaq
sourcecode
trgdataformats
scripts
TriggerCandidate_binding_test.py
Go to the documentation of this file.
1
#!/usr/bin/env python3
2
3
from
trgdataformats
import
(
4
TriggerCandidate,
5
TriggerCandidateData,
6
string_to_trigger_candidate_type,
7
trigger_candidate_type_to_string,
8
)
9
10
11
def
test_trigger_candidate_data_defaults
() -> int:
12
tc = TriggerCandidateData()
13
14
if
tc
is
None
:
15
print(
"FAIL: TriggerCandidateData default construction returned None"
)
16
return
1
17
18
size = TriggerCandidateData.sizeof()
19
if
size != 48:
20
print(f
"FAIL: TriggerCandidateData.sizeof() returned {size}, expected 48"
)
21
return
1
22
23
if
TriggerCandidateData.s_trigger_candidate_version != 3:
24
print(
25
"FAIL: TriggerCandidateData.s_trigger_candidate_version expected 3, "
26
f
"got {TriggerCandidateData.s_trigger_candidate_version}"
27
)
28
return
1
29
30
if
tc.version != 3:
31
print(f
"FAIL: TriggerCandidateData.version expected 3, got {tc.version}"
)
32
return
1
33
34
if
tc.version != TriggerCandidateData.s_trigger_candidate_version:
35
print(
36
"FAIL: TriggerCandidateData.version should match s_trigger_candidate_version, "
37
f
"got {tc.version} vs {TriggerCandidateData.s_trigger_candidate_version}"
38
)
39
return
1
40
41
if
tc.time_start != (2**64 - 1):
42
print(f
"FAIL: TriggerCandidateData.time_start expected 2**64-1, got {tc.time_start}"
)
43
return
1
44
45
if
tc.time_end != (2**64 - 1):
46
print(f
"FAIL: TriggerCandidateData.time_end expected 2**64-1, got {tc.time_end}"
)
47
return
1
48
49
if
tc.time_candidate != (2**64 - 1):
50
print(
51
"FAIL: TriggerCandidateData.time_candidate expected 2**64-1, "
52
f
"got {tc.time_candidate}"
53
)
54
return
1
55
56
if
tc.detid != 2**8 - 1:
57
print(f
"FAIL: TriggerCandidateData.detid expected 2**8 - 1, got {tc.detid}"
)
58
return
1
59
60
if
tc.type != TriggerCandidateData.Type.kUnknown:
61
print(f
"FAIL: TriggerCandidateData.type expected kUnknown, got {tc.type}"
)
62
return
1
63
64
if
tc.algorithm != TriggerCandidateData.Algorithm.kUnknown:
65
print(f
"FAIL: TriggerCandidateData.algorithm expected kUnknown, got {tc.algorithm}"
)
66
return
1
67
68
print(
"PASS: TriggerCandidateData default checks"
)
69
return
0
70
71
72
def
test_trigger_candidate_enum_and_conversion
() -> int:
73
if
trigger_candidate_type_to_string(TriggerCandidateData.Type.kTiming) !=
"kTiming"
:
74
print(
"FAIL: trigger_candidate_type_to_string(kTiming) mismatch"
)
75
return
1
76
77
if
string_to_trigger_candidate_type(
"kTiming"
) != TriggerCandidateData.Type.kTiming:
78
print(
"FAIL: string_to_trigger_candidate_type('kTiming') mismatch"
)
79
return
1
80
81
if
string_to_trigger_candidate_type(
"notAType"
) != TriggerCandidateData.Type.kUnknown:
82
print(
"FAIL: string_to_trigger_candidate_type('notAType') should return kUnknown"
)
83
return
1
84
85
# Spot-check long-tail enum entries added recently.
86
for
expected
in
[
87
TriggerCandidateData.Type.kCTBOffSpillSnapshot,
88
TriggerCandidateData.Type.kCTBCustomPulseTrain,
89
TriggerCandidateData.Type.kSSPLEDCalibration,
90
]:
91
as_str = trigger_candidate_type_to_string(expected)
92
if
string_to_trigger_candidate_type(as_str) != expected:
93
print(f
"FAIL: conversion roundtrip mismatch for enum value '{as_str}'"
)
94
return
1
95
96
print(
"PASS: TriggerCandidateData enum conversion checks"
)
97
return
0
98
99
100
def
test_trigger_candidate_holder_from_bytes
() -> int:
101
payload = bytes(TriggerCandidateData.sizeof() + 8)
# 8 for the uint64_t n_inputs in TriggerCandidate
102
tc = TriggerCandidate(payload)
103
104
if
tc.sizeof() != len(payload):
105
print(f
"FAIL: TriggerCandidate sizeof mismatch, got {tc.sizeof()}, expected {len(payload)}"
)
106
return
1
107
108
if
len(tc) != 0:
109
print(f
"FAIL: TriggerCandidate expected length 0 for zero payload, got {len(tc)}"
)
110
return
1
111
112
if
tc.n_inputs() != 0:
113
print(f
"FAIL: TriggerCandidate n_inputs expected 0 for zero payload, got {tc.n_inputs()}"
)
114
return
1
115
116
if
len(tc.get_bytes()) != len(payload):
117
print(
"FAIL: TriggerCandidate get_bytes length mismatch"
)
118
return
1
119
120
print(
"PASS: TriggerCandidate holder bytes roundtrip with zero-input payload"
)
121
return
0
122
123
124
def
main
() -> int:
125
failures = 0
126
failures +=
test_trigger_candidate_data_defaults
()
127
failures +=
test_trigger_candidate_enum_and_conversion
()
128
failures +=
test_trigger_candidate_holder_from_bytes
()
129
130
if
failures == 0:
131
print(
"TriggerCandidate binding tests passed"
)
132
else
:
133
print(f
"TriggerCandidate binding tests had {failures} failure(s)"
)
134
135
return
failures
136
137
138
if
__name__ ==
"__main__"
:
139
raise
SystemExit(
main
())
TriggerCandidate_binding_test.test_trigger_candidate_holder_from_bytes
int test_trigger_candidate_holder_from_bytes()
Definition
TriggerCandidate_binding_test.py:100
TriggerCandidate_binding_test.main
int main()
Definition
TriggerCandidate_binding_test.py:124
TriggerCandidate_binding_test.test_trigger_candidate_enum_and_conversion
int test_trigger_candidate_enum_and_conversion()
Definition
TriggerCandidate_binding_test.py:72
TriggerCandidate_binding_test.test_trigger_candidate_data_defaults
int test_trigger_candidate_data_defaults()
Definition
TriggerCandidate_binding_test.py:11
Generated on
for DUNE-DAQ by
1.18.0