mirror of
https://gitlab.cern.ch/wotsubo/psboard-qaqc-postprocess.git
synced 2024-11-24 16:11:11 +09:00
update: auto distinguish boards to retest
- automatically print
This commit is contained in:
parent
79e7291031
commit
ae29be2daa
4 changed files with 93 additions and 3 deletions
13
src/main.rs
13
src/main.rs
|
@ -194,6 +194,7 @@ impl PsbQaqcResult {
|
||||||
pub fn from_masterlogresult(result: MasterLogResult) -> Vec<Self> {
|
pub fn from_masterlogresult(result: MasterLogResult) -> Vec<Self> {
|
||||||
let mut converted = vec![];
|
let mut converted = vec![];
|
||||||
for (pos, boardresult) in result.board_results {
|
for (pos, boardresult) in result.board_results {
|
||||||
|
let isretest = boardresult.is_need_retest().is_some();
|
||||||
let new = PsbQaqcResult {
|
let new = PsbQaqcResult {
|
||||||
motherboard_id: boardresult.id.id,
|
motherboard_id: boardresult.id.id,
|
||||||
daughterboard_id: None,
|
daughterboard_id: None,
|
||||||
|
@ -214,7 +215,7 @@ impl PsbQaqcResult {
|
||||||
firmware_ver: None,
|
firmware_ver: None,
|
||||||
parameter_ver: None,
|
parameter_ver: None,
|
||||||
fpga_dna: None,
|
fpga_dna: None,
|
||||||
retest: false,
|
retest: isretest,
|
||||||
comment: "".to_string(),
|
comment: "".to_string(),
|
||||||
};
|
};
|
||||||
converted.push(new);
|
converted.push(new);
|
||||||
|
@ -366,6 +367,16 @@ fn main() -> Result<()> {
|
||||||
};
|
};
|
||||||
debug!("{:?}", result);
|
debug!("{:?}", result);
|
||||||
|
|
||||||
|
// Print boards to retest
|
||||||
|
for (pos, boardresult) in &result.board_results {
|
||||||
|
if let Some(reason) = boardresult.is_need_retest() {
|
||||||
|
println!(
|
||||||
|
"Board {} at {} need retest for {}",
|
||||||
|
boardresult.id.id, pos, reason
|
||||||
|
);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
let expanded_results = PsbQaqcResult::from_masterlogresult(result);
|
let expanded_results = PsbQaqcResult::from_masterlogresult(result);
|
||||||
|
|
||||||
let mut wtr = match outfile.exists() {
|
let mut wtr = match outfile.exists() {
|
||||||
|
|
|
@ -24,6 +24,36 @@ pub struct MasterBoardResult {
|
||||||
pub result: u8,
|
pub result: u8,
|
||||||
}
|
}
|
||||||
|
|
||||||
|
impl MasterBoardResult {
|
||||||
|
/// Check the board needs to be retested with reason.
|
||||||
|
///
|
||||||
|
/// None if it doesn't need retest.
|
||||||
|
pub fn is_need_retest(&self) -> Option<String> {
|
||||||
|
let mut result = false;
|
||||||
|
let mut reasons = vec![];
|
||||||
|
if self.qspip != 1 {
|
||||||
|
result = true;
|
||||||
|
reasons.push(format!("QSPIp is not 1({})", self.qspip));
|
||||||
|
}
|
||||||
|
if self.recov != 1 {
|
||||||
|
result = true;
|
||||||
|
reasons.push(format!("Recov is not 1({})", self.recov));
|
||||||
|
}
|
||||||
|
if self.power != 1 {
|
||||||
|
result = true;
|
||||||
|
reasons.push(format!("Power is not 1({})", self.qspip));
|
||||||
|
}
|
||||||
|
if self.clock != 1 {
|
||||||
|
result = true;
|
||||||
|
reasons.push(format!("Clock is not 1({})", self.clock));
|
||||||
|
}
|
||||||
|
match result {
|
||||||
|
true => Some(reasons.join(", ")),
|
||||||
|
false => None,
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/// Full result for a single QAQC run from a log file on JATHub master.
|
/// Full result for a single QAQC run from a log file on JATHub master.
|
||||||
#[derive(Debug)]
|
#[derive(Debug)]
|
||||||
pub struct MasterLogResult {
|
pub struct MasterLogResult {
|
||||||
|
|
|
@ -19,7 +19,7 @@ mod integrated_test {
|
||||||
let mut cmd = Command::cargo_bin("psb-qaqc")?;
|
let mut cmd = Command::cargo_bin("psb-qaqc")?;
|
||||||
cmd.current_dir("tests")
|
cmd.current_dir("tests")
|
||||||
.arg("add-master-log")
|
.arg("add-master-log")
|
||||||
.arg("./example_logs/valid/7.log")
|
.arg("./example_logs/valid/44.log")
|
||||||
.arg(test_out.as_path())
|
.arg(test_out.as_path())
|
||||||
.assert()
|
.assert()
|
||||||
.success()
|
.success()
|
||||||
|
@ -32,7 +32,7 @@ mod integrated_test {
|
||||||
let r = BufReader::new(f);
|
let r = BufReader::new(f);
|
||||||
assert!(r.lines().any(|line| {
|
assert!(r.lines().any(|line| {
|
||||||
line.unwrap().eq(
|
line.unwrap().eq(
|
||||||
"8866,,B-0-1,0,1,1,0,1,8,1,,7,2024-07-20T17:15:46Z,7.log,0.1.0,alice,,,,false,",
|
"214,,B-0-1,1,1,1,1,1,0,1,,44,2024-07-25T08:41:27Z,44.log,1.0.1,Bob,,,,false,",
|
||||||
)
|
)
|
||||||
}));
|
}));
|
||||||
}
|
}
|
||||||
|
|
49
tests/example_logs/valid/44.log
Normal file
49
tests/example_logs/valid/44.log
Normal file
|
@ -0,0 +1,49 @@
|
||||||
|
Shift script: 1.0.1
|
||||||
|
----------------------
|
||||||
|
Date: 2024-07-25T08:41:27+0000
|
||||||
|
QAQC runid: 44
|
||||||
|
Shifters: Bob
|
||||||
|
----------------------
|
||||||
|
PBS Assignment:
|
||||||
|
Position / assigned-ID : B-0-1 / PS000214
|
||||||
|
Position / assigned-ID : B-1-1 / PS000215
|
||||||
|
Position / assigned-ID : B-0-2 / PS000213
|
||||||
|
Position / assigned-ID : B-1-2 / PS000211
|
||||||
|
Position / assigned-ID : B-0-3 / PS000212
|
||||||
|
Position / assigned-ID : B-1-3 / PS000210
|
||||||
|
Position / assigned-ID : B-0-4 / PS000207
|
||||||
|
Position / assigned-ID : B-1-4 / PS000209
|
||||||
|
Position / assigned-ID : B-0-5 / PS000208
|
||||||
|
Position / assigned-ID : B-1-5 / PS000206
|
||||||
|
Position / assigned-ID : B-0-6 / PS000205
|
||||||
|
Position / assigned-ID : B-1-6 / PS000204
|
||||||
|
Position / assigned-ID : B-0-7 / PS000203
|
||||||
|
Position / assigned-ID : B-1-7 / PS000202
|
||||||
|
Position / assigned-ID : B-0-8 / PS000201
|
||||||
|
Position / assigned-ID : B-1-8 / PS000239
|
||||||
|
Position / assigned-ID : B-0-9 / PS000238
|
||||||
|
Position / assigned-ID : B-1-9 / PS000237
|
||||||
|
======================
|
||||||
|
QAQC status| QSPIp | Recov | Power | Clock | ASDTP | Reset | Result |
|
||||||
|
----------------------------------------------------------------------
|
||||||
|
Station0
|
||||||
|
JATHub_ 1| 1| 1| 1| 1| 1| 0| 1|
|
||||||
|
JATHub_ 2| 1| 1| 1| 1| 1| 0| 1|
|
||||||
|
JATHub_ 3| 1| 1| 1| 1| 1| 0| 1|
|
||||||
|
JATHub_ 4| 1| 1| 1| 2| 1| 4| 2|
|
||||||
|
JATHub_ 5| 1| 1| 1| 1| 1| 0| 1|
|
||||||
|
JATHub_ 6| 1| 1| 1| 1| 1| 1| 1|
|
||||||
|
JATHub_ 7| 1| 1| 1| 1| 1| 0| 1|
|
||||||
|
JATHub_ 8| 1| 1| 1| 1| 1| 0| 1|
|
||||||
|
JATHub_ 9| 1| 1| 1| 2| 1| 0| 2|
|
||||||
|
Station1
|
||||||
|
JATHub_11| 2| 1| 2| 1| 2| 1| 2|
|
||||||
|
JATHub_12| 1| 1| 1| 1| 1| 0| 1|
|
||||||
|
JATHub_13| 1| 1| 1| 2| 1| 0| 2|
|
||||||
|
JATHub_14| 1| 1| 1| 2| 1| 0| 2|
|
||||||
|
JATHub_15| 1| 1| 1| 2| 1| 0| 2|
|
||||||
|
JATHub_16| 1| 1| 2| 1| 1| 1| 2|
|
||||||
|
JATHub_17| 1| 1| 1| 1| 1| 0| 1|
|
||||||
|
JATHub_18| 1| 1| 1| 1| 1| 3| 1|
|
||||||
|
JATHub_19| 1| 1| 1| 1| 1| 0| 1|
|
||||||
|
======================
|
Loading…
Reference in a new issue