mirror of
https://review.coreboot.org/flashrom.git
synced 2025-04-29 16:03:47 +02:00
flashrom_tester: Move all subprocess stderr logging to dispatch
Instead of printing stderr in each function separately, print all stderr in the dispatch function. BUG=None BRANCH=None TEST=/usr/bin/flashrom_tester --debug host Lock_top_quad Change-Id: Id76f83c8c089537aa44aa13533c75900eb6ed175 Signed-off-by: Evan Benn <evanbenn@chromium.org> Reviewed-on: https://review.coreboot.org/c/flashrom/+/65279 Reviewed-by: Edward O'Callaghan <quasisec@chromium.org> Tested-by: build bot (Jenkins) <no-reply@coreboot.org>
This commit is contained in:
parent
81069f0c65
commit
5bb1698e6a
@ -93,18 +93,21 @@ fn flashrom_extract_size(stdout: &str) -> Result<i64, FlashromError> {
|
|||||||
}
|
}
|
||||||
|
|
||||||
impl FlashromCmd {
|
impl FlashromCmd {
|
||||||
fn dispatch(&self, fropt: FlashromOpt) -> Result<(Vec<u8>, Vec<u8>), FlashromError> {
|
fn dispatch(
|
||||||
|
&self,
|
||||||
|
fropt: FlashromOpt,
|
||||||
|
debug_name: &str,
|
||||||
|
) -> Result<(String, String), FlashromError> {
|
||||||
let params = flashrom_decode_opts(fropt);
|
let params = flashrom_decode_opts(fropt);
|
||||||
flashrom_dispatch(self.path.as_str(), ¶ms, self.fc)
|
flashrom_dispatch(self.path.as_str(), ¶ms, self.fc, debug_name)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
impl crate::Flashrom for FlashromCmd {
|
impl crate::Flashrom for FlashromCmd {
|
||||||
fn get_size(&self) -> Result<i64, FlashromError> {
|
fn get_size(&self) -> Result<i64, FlashromError> {
|
||||||
let (stdout, _) = flashrom_dispatch(self.path.as_str(), &["--flash-size"], self.fc)?;
|
let (stdout, _) =
|
||||||
let sz = String::from_utf8_lossy(&stdout);
|
flashrom_dispatch(self.path.as_str(), &["--flash-size"], self.fc, "get_size")?;
|
||||||
|
flashrom_extract_size(&stdout)
|
||||||
flashrom_extract_size(&sz)
|
|
||||||
}
|
}
|
||||||
|
|
||||||
fn name(&self) -> Result<(String, String), FlashromError> {
|
fn name(&self) -> Result<(String, String), FlashromError> {
|
||||||
@ -118,13 +121,8 @@ impl crate::Flashrom for FlashromCmd {
|
|||||||
..Default::default()
|
..Default::default()
|
||||||
};
|
};
|
||||||
|
|
||||||
let (stdout, stderr) = self.dispatch(opts)?;
|
let (stdout, _) = self.dispatch(opts, "name")?;
|
||||||
let output = String::from_utf8_lossy(stdout.as_slice());
|
match extract_flash_name(&stdout) {
|
||||||
let eoutput = String::from_utf8_lossy(stderr.as_slice());
|
|
||||||
debug!("name()'stdout: {:#?}.", output);
|
|
||||||
debug!("name()'stderr: {:#?}.", eoutput);
|
|
||||||
|
|
||||||
match extract_flash_name(&output) {
|
|
||||||
None => Err("Didn't find chip vendor/name in flashrom output".into()),
|
None => Err("Didn't find chip vendor/name in flashrom output".into()),
|
||||||
Some((vendor, name)) => Ok((vendor.into(), name.into())),
|
Some((vendor, name)) => Ok((vendor.into(), name.into())),
|
||||||
}
|
}
|
||||||
@ -143,11 +141,7 @@ impl crate::Flashrom for FlashromCmd {
|
|||||||
..Default::default()
|
..Default::default()
|
||||||
};
|
};
|
||||||
|
|
||||||
let (stdout, stderr) = self.dispatch(opts)?;
|
self.dispatch(opts, "write_file_with_layout")?;
|
||||||
let output = String::from_utf8_lossy(stdout.as_slice());
|
|
||||||
let eoutput = String::from_utf8_lossy(stderr.as_slice());
|
|
||||||
debug!("write_file_with_layout()'stdout:\n{}.", output);
|
|
||||||
debug!("write_file_with_layout()'stderr:\n{}.", eoutput);
|
|
||||||
Ok(true)
|
Ok(true)
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -161,11 +155,7 @@ impl crate::Flashrom for FlashromCmd {
|
|||||||
..Default::default()
|
..Default::default()
|
||||||
};
|
};
|
||||||
|
|
||||||
let (stdout, stderr) = self.dispatch(opts)?;
|
self.dispatch(opts, "wp_range")?;
|
||||||
let output = String::from_utf8_lossy(stdout.as_slice());
|
|
||||||
let eoutput = String::from_utf8_lossy(stderr.as_slice());
|
|
||||||
debug!("wp_range()'stdout:\n{}.", output);
|
|
||||||
debug!("wp_range()'stderr:\n{}.", eoutput);
|
|
||||||
Ok(true)
|
Ok(true)
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -178,15 +168,14 @@ impl crate::Flashrom for FlashromCmd {
|
|||||||
..Default::default()
|
..Default::default()
|
||||||
};
|
};
|
||||||
|
|
||||||
let (stdout, _) = self.dispatch(opts)?;
|
let (stdout, _) = self.dispatch(opts, "wp_list")?;
|
||||||
let output = String::from_utf8_lossy(stdout.as_slice());
|
if stdout.len() == 0 {
|
||||||
if output.len() == 0 {
|
|
||||||
return Err(
|
return Err(
|
||||||
"wp_list isn't supported on platforms using the Linux kernel SPI driver wp_list"
|
"wp_list isn't supported on platforms using the Linux kernel SPI driver wp_list"
|
||||||
.into(),
|
.into(),
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
Ok(output.to_string())
|
Ok(stdout)
|
||||||
}
|
}
|
||||||
|
|
||||||
fn wp_status(&self, en: bool) -> Result<bool, FlashromError> {
|
fn wp_status(&self, en: bool) -> Result<bool, FlashromError> {
|
||||||
@ -201,13 +190,9 @@ impl crate::Flashrom for FlashromCmd {
|
|||||||
..Default::default()
|
..Default::default()
|
||||||
};
|
};
|
||||||
|
|
||||||
let (stdout, _) = self.dispatch(opts)?;
|
let (stdout, _) = self.dispatch(opts, "wp_status")?;
|
||||||
let output = String::from_utf8_lossy(stdout.as_slice());
|
|
||||||
|
|
||||||
debug!("wp_status():\n{}", output);
|
|
||||||
|
|
||||||
let s = std::format!("write protect is {}abled", status);
|
let s = std::format!("write protect is {}abled", status);
|
||||||
Ok(output.contains(&s))
|
Ok(stdout.contains(&s))
|
||||||
}
|
}
|
||||||
|
|
||||||
fn wp_toggle(&self, en: bool) -> Result<bool, FlashromError> {
|
fn wp_toggle(&self, en: bool) -> Result<bool, FlashromError> {
|
||||||
@ -231,12 +216,7 @@ impl crate::Flashrom for FlashromCmd {
|
|||||||
..Default::default()
|
..Default::default()
|
||||||
};
|
};
|
||||||
|
|
||||||
let (stdout, stderr) = self.dispatch(opts)?;
|
self.dispatch(opts, "wp_toggle")?;
|
||||||
let output = String::from_utf8_lossy(stdout.as_slice());
|
|
||||||
let eoutput = String::from_utf8_lossy(stderr.as_slice());
|
|
||||||
|
|
||||||
debug!("wp_toggle()'stdout:\n{}.", output);
|
|
||||||
debug!("wp_toggle()'stderr:\n{}.", eoutput);
|
|
||||||
|
|
||||||
match self.wp_status(true) {
|
match self.wp_status(true) {
|
||||||
Ok(_ret) => {
|
Ok(_ret) => {
|
||||||
@ -256,9 +236,7 @@ impl crate::Flashrom for FlashromCmd {
|
|||||||
..Default::default()
|
..Default::default()
|
||||||
};
|
};
|
||||||
|
|
||||||
let (stdout, _) = self.dispatch(opts)?;
|
self.dispatch(opts, "read")?;
|
||||||
let output = String::from_utf8_lossy(stdout.as_slice());
|
|
||||||
debug!("read():\n{}", output);
|
|
||||||
Ok(())
|
Ok(())
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -272,9 +250,7 @@ impl crate::Flashrom for FlashromCmd {
|
|||||||
..Default::default()
|
..Default::default()
|
||||||
};
|
};
|
||||||
|
|
||||||
let (stdout, _) = self.dispatch(opts)?;
|
let (stdout, _) = self.dispatch(opts, "read_region")?;
|
||||||
let output = String::from_utf8_lossy(stdout.as_slice());
|
|
||||||
debug!("read():\n{}", output);
|
|
||||||
Ok(())
|
Ok(())
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -287,9 +263,7 @@ impl crate::Flashrom for FlashromCmd {
|
|||||||
..Default::default()
|
..Default::default()
|
||||||
};
|
};
|
||||||
|
|
||||||
let (stdout, _) = self.dispatch(opts)?;
|
self.dispatch(opts, "write")?;
|
||||||
let output = String::from_utf8_lossy(stdout.as_slice());
|
|
||||||
debug!("write():\n{}", output);
|
|
||||||
Ok(())
|
Ok(())
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -302,9 +276,7 @@ impl crate::Flashrom for FlashromCmd {
|
|||||||
..Default::default()
|
..Default::default()
|
||||||
};
|
};
|
||||||
|
|
||||||
let (stdout, _) = self.dispatch(opts)?;
|
self.dispatch(opts, "verify")?;
|
||||||
let output = String::from_utf8_lossy(stdout.as_slice());
|
|
||||||
debug!("verify():\n{}", output);
|
|
||||||
Ok(())
|
Ok(())
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -317,9 +289,7 @@ impl crate::Flashrom for FlashromCmd {
|
|||||||
..Default::default()
|
..Default::default()
|
||||||
};
|
};
|
||||||
|
|
||||||
let (stdout, _) = self.dispatch(opts)?;
|
self.dispatch(opts, "erase")?;
|
||||||
let output = String::from_utf8_lossy(stdout.as_slice());
|
|
||||||
debug!("erase():\n{}", output);
|
|
||||||
Ok(())
|
Ok(())
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -393,7 +363,8 @@ fn flashrom_dispatch<S: AsRef<str>>(
|
|||||||
path: &str,
|
path: &str,
|
||||||
params: &[S],
|
params: &[S],
|
||||||
fc: FlashChip,
|
fc: FlashChip,
|
||||||
) -> Result<(Vec<u8>, Vec<u8>), FlashromError> {
|
debug_name: &str,
|
||||||
|
) -> Result<(String, String), FlashromError> {
|
||||||
// from man page:
|
// from man page:
|
||||||
// ' -p, --programmer <name>[:parameter[,parameter[,parameter]]] '
|
// ' -p, --programmer <name>[:parameter[,parameter[,parameter]]] '
|
||||||
let mut args: Vec<&str> = vec!["-p", FlashChip::to(fc)];
|
let mut args: Vec<&str> = vec!["-p", FlashChip::to(fc)];
|
||||||
@ -405,24 +376,25 @@ fn flashrom_dispatch<S: AsRef<str>>(
|
|||||||
Ok(x) => x,
|
Ok(x) => x,
|
||||||
Err(e) => return Err(format!("Failed to run flashrom: {}", e).into()),
|
Err(e) => return Err(format!("Failed to run flashrom: {}", e).into()),
|
||||||
};
|
};
|
||||||
|
|
||||||
|
let stdout = String::from_utf8_lossy(output.stdout.as_slice());
|
||||||
|
let stderr = String::from_utf8_lossy(output.stderr.as_slice());
|
||||||
|
debug!("{}()'stdout: {}.", debug_name, stdout);
|
||||||
|
debug!("{}()'stderr: {}.", debug_name, stderr);
|
||||||
|
|
||||||
if !output.status.success() {
|
if !output.status.success() {
|
||||||
// There is two cases on failure;
|
// There is two cases on failure;
|
||||||
// i. ) A bad exit code,
|
// i. ) A bad exit code,
|
||||||
// ii.) A SIG killed us.
|
// ii.) A SIG killed us.
|
||||||
match output.status.code() {
|
match output.status.code() {
|
||||||
Some(code) => {
|
Some(code) => {
|
||||||
return Err(format!(
|
return Err(format!("{}\nExited with error code: {}", stderr, code).into());
|
||||||
"{}\nExited with error code: {}",
|
|
||||||
String::from_utf8_lossy(&output.stderr),
|
|
||||||
code
|
|
||||||
)
|
|
||||||
.into());
|
|
||||||
}
|
}
|
||||||
None => return Err("Process terminated by a signal".into()),
|
None => return Err("Process terminated by a signal".into()),
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
Ok((output.stdout, output.stderr))
|
Ok((stdout.into(), stderr.into()))
|
||||||
}
|
}
|
||||||
|
|
||||||
pub fn dut_ctrl_toggle_wp(en: bool) -> Result<(Vec<u8>, Vec<u8>), FlashromError> {
|
pub fn dut_ctrl_toggle_wp(en: bool) -> Result<(Vec<u8>, Vec<u8>), FlashromError> {
|
||||||
|
Loading…
x
Reference in New Issue
Block a user