Add output about max internal links and max overall byte size
This commit is contained in:
parent
6daeefa0d8
commit
36adac4a16
1 changed files with 37 additions and 0 deletions
|
@ -45,6 +45,7 @@ extern crate libimagstore;
|
||||||
use libimagrt::setup::generate_runtime_setup;
|
use libimagrt::setup::generate_runtime_setup;
|
||||||
use libimagerror::trace::MapErrTrace;
|
use libimagerror::trace::MapErrTrace;
|
||||||
use libimagstore::store::FileLockEntry;
|
use libimagstore::store::FileLockEntry;
|
||||||
|
use libimagstore::storeid::StoreId;
|
||||||
use libimagstore::iter::get::*;
|
use libimagstore::iter::get::*;
|
||||||
use libimagstore::error::StoreError as Error;
|
use libimagstore::error::StoreError as Error;
|
||||||
use libimagentrylink::internal::*;
|
use libimagentrylink::internal::*;
|
||||||
|
@ -57,6 +58,7 @@ use std::collections::BTreeMap;
|
||||||
mod ui;
|
mod ui;
|
||||||
|
|
||||||
struct Diagnostic {
|
struct Diagnostic {
|
||||||
|
pub id: StoreId,
|
||||||
pub entry_store_version: String,
|
pub entry_store_version: String,
|
||||||
pub header_sections: usize,
|
pub header_sections: usize,
|
||||||
pub bytecount_content: usize,
|
pub bytecount_content: usize,
|
||||||
|
@ -69,6 +71,7 @@ impl<'a> From<FileLockEntry<'a>> for Diagnostic {
|
||||||
|
|
||||||
fn from(entry: FileLockEntry<'a>) -> Diagnostic {
|
fn from(entry: FileLockEntry<'a>) -> Diagnostic {
|
||||||
Diagnostic {
|
Diagnostic {
|
||||||
|
id: entry.get_location().clone(),
|
||||||
entry_store_version: entry
|
entry_store_version: entry
|
||||||
.get_header()
|
.get_header()
|
||||||
.read("imag.version")
|
.read("imag.version")
|
||||||
|
@ -113,14 +116,22 @@ fn main() {
|
||||||
let mut sum_header_sections = 0;
|
let mut sum_header_sections = 0;
|
||||||
let mut sum_bytecount_content = 0;
|
let mut sum_bytecount_content = 0;
|
||||||
let mut sum_overall_byte_size = 0;
|
let mut sum_overall_byte_size = 0;
|
||||||
|
let mut max_overall_byte_size : Option<(usize, StoreId)> = None;
|
||||||
let mut verified_count = 0;
|
let mut verified_count = 0;
|
||||||
let mut unverified_count = 0;
|
let mut unverified_count = 0;
|
||||||
let mut num_internal_links = 0;
|
let mut num_internal_links = 0;
|
||||||
|
let mut max_internal_links : Option<(usize, StoreId)> = None;
|
||||||
|
|
||||||
for diag in diags.iter() {
|
for diag in diags.iter() {
|
||||||
sum_header_sections += diag.header_sections;
|
sum_header_sections += diag.header_sections;
|
||||||
sum_bytecount_content += diag.bytecount_content;
|
sum_bytecount_content += diag.bytecount_content;
|
||||||
sum_overall_byte_size += diag.overall_byte_size;
|
sum_overall_byte_size += diag.overall_byte_size;
|
||||||
|
match max_overall_byte_size {
|
||||||
|
None => max_overall_byte_size = Some((diag.num_internal_links, diag.id.clone())),
|
||||||
|
Some((num, _)) => if num < diag.overall_byte_size {
|
||||||
|
max_overall_byte_size = Some((diag.overall_byte_size, diag.id.clone()));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
let n = version_counts.get(&diag.entry_store_version).map(Clone::clone).unwrap_or(0);
|
let n = version_counts.get(&diag.entry_store_version).map(Clone::clone).unwrap_or(0);
|
||||||
version_counts.insert(diag.entry_store_version.clone(), n+1);
|
version_counts.insert(diag.entry_store_version.clone(), n+1);
|
||||||
|
@ -132,6 +143,12 @@ fn main() {
|
||||||
}
|
}
|
||||||
|
|
||||||
num_internal_links += diag.num_internal_links;
|
num_internal_links += diag.num_internal_links;
|
||||||
|
match max_internal_links {
|
||||||
|
None => max_internal_links = Some((diag.num_internal_links, diag.id.clone())),
|
||||||
|
Some((num, _)) => if num < diag.num_internal_links {
|
||||||
|
max_internal_links = Some((diag.num_internal_links, diag.id.clone()));
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
let n = diags.len();
|
let n = diags.len();
|
||||||
|
@ -146,7 +163,27 @@ fn main() {
|
||||||
println!("{} header sections in the average entry", sum_header_sections / n);
|
println!("{} header sections in the average entry", sum_header_sections / n);
|
||||||
println!("{} average content bytecount", sum_bytecount_content / n);
|
println!("{} average content bytecount", sum_bytecount_content / n);
|
||||||
println!("{} average overall bytecount", sum_overall_byte_size / n);
|
println!("{} average overall bytecount", sum_overall_byte_size / n);
|
||||||
|
if let Some((num, path)) = max_overall_byte_size {
|
||||||
|
println!("Largest Entry ({bytes} bytes): {path}",
|
||||||
|
bytes = num,
|
||||||
|
path = path
|
||||||
|
.into_pathbuf()
|
||||||
|
.map_err_trace_exit_unwrap(1)
|
||||||
|
.to_str()
|
||||||
|
.unwrap_or("Failed converting path to string")
|
||||||
|
);
|
||||||
|
}
|
||||||
println!("{} average internal link count per entry", num_internal_links / n);
|
println!("{} average internal link count per entry", num_internal_links / n);
|
||||||
|
if let Some((num, path)) = max_internal_links {
|
||||||
|
println!("Entry with most internal links ({count}): {path}",
|
||||||
|
count = num,
|
||||||
|
path = path
|
||||||
|
.into_pathbuf()
|
||||||
|
.map_err_trace_exit_unwrap(1)
|
||||||
|
.to_str()
|
||||||
|
.unwrap_or("Failed converting path to string")
|
||||||
|
);
|
||||||
|
}
|
||||||
println!("{} verified entries", verified_count);
|
println!("{} verified entries", verified_count);
|
||||||
println!("{} unverified entries", unverified_count);
|
println!("{} unverified entries", unverified_count);
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue