add a test

This commit is contained in:
Tamo 2025-05-14 17:40:15 +02:00
parent 8608d10fa2
commit 0940f0e4f4
2 changed files with 34 additions and 0 deletions

View File

@ -929,3 +929,30 @@ fn create_and_list_index() {
]
"###);
}
#[test]
fn test_scheduler_doesnt_run_with_zero_batched_tasks() {
let (index_scheduler, mut handle) = IndexScheduler::test_with_custom_config(vec![], |config| {
config.max_number_of_batched_tasks = 0;
None
});
handle.scheduler_is_down();
// Register a task
index_scheduler
.register(
KindWithContent::IndexCreation { index_uid: S("doggos"), primary_key: None },
None,
false,
)
.unwrap();
snapshot!(snapshot_index_scheduler(&index_scheduler), name: "registered_task");
handle.scheduler_is_down();
// If we restart the scheduler, it should run properly.
let (index_scheduler, mut handle) = handle.restart(index_scheduler, true, vec![], |_| None);
handle.advance_n_successful_batches(1);
snapshot!(snapshot_index_scheduler(&index_scheduler), name: "after_restart");
}

View File

@ -118,6 +118,9 @@ impl IndexScheduler {
(versioning::VERSION_MAJOR, versioning::VERSION_MINOR, versioning::VERSION_PATCH)
});
// If the number of batched tasks is 0, the scheduler will not run and we can't do the init check.
let skip_init = options.max_number_of_batched_tasks == 0;
std::fs::create_dir_all(&options.auth_path).unwrap();
let auth_env = open_auth_store_env(&options.auth_path).unwrap();
let index_scheduler =
@ -126,7 +129,11 @@ impl IndexScheduler {
// To be 100% consistent between all test we're going to start the scheduler right now
// and ensure it's in the expected starting state.
let breakpoint = match receiver.recv_timeout(std::time::Duration::from_secs(10)) {
Ok(b) if skip_init => {
panic!("The scheduler was not supposed to start, but it did: {b:?}.")
}
Ok(b) => b,
Err(_) if skip_init => (Init, false),
Err(RecvTimeoutError::Timeout) => {
panic!("The scheduler seems to be waiting for a new task while your test is waiting for a breakpoint.")
}