use essential_builder_db::{self as builder_db};
use essential_builder_types::SolutionSetFailure;
use rusqlite::Connection;
use std::time::Duration;
mod util;
#[test]
fn delete_oldest_failures() {
let block = util::test_block(0, Duration::from_secs(0));
let block_ca = essential_hash::content_addr(&block);
let solution_set = block.solution_sets[0].clone();
let ca = essential_hash::content_addr(&solution_set);
let mut conn = Connection::open_in_memory().unwrap();
let tx = conn.transaction().unwrap();
builder_db::create_tables(&tx).unwrap();
builder_db::insert_solution_set_submission(&tx, &solution_set, block.header.timestamp).unwrap();
tx.commit().unwrap();
let failures = vec![
SolutionSetFailure {
attempt_block_num: 1,
attempt_block_addr: block_ca.clone(),
attempt_solution_set_ix: 0,
err_msg: "Failure 1".into(),
},
SolutionSetFailure {
attempt_block_num: 2,
attempt_block_addr: block_ca.clone(),
attempt_solution_set_ix: 1,
err_msg: "Failure 2".into(),
},
SolutionSetFailure {
attempt_block_num: 3,
attempt_block_addr: block_ca,
attempt_solution_set_ix: 2,
err_msg: "Failure 3".into(),
},
];
for failure in &failures {
builder_db::insert_solution_set_failure(&conn, &ca, failure.clone()).unwrap();
}
let all_failures = builder_db::latest_solution_set_failures(&conn, &ca, 10).unwrap();
assert_eq!(all_failures.len(), 3);
builder_db::delete_oldest_solution_set_failures(&conn, 2).unwrap();
let remaining_failures = builder_db::latest_solution_set_failures(&conn, &ca, 10).unwrap();
assert_eq!(remaining_failures.len(), 2);
assert_eq!(remaining_failures[0], failures[2]); assert_eq!(remaining_failures[1], failures[1]); }