mirror of
				https://github.com/meilisearch/meilisearch.git
				synced 2025-11-04 09:56:28 +00:00 
			
		
		
		
	fix tests
This commit is contained in:
		@@ -254,121 +254,3 @@ fn persist_dump(dst_path: impl AsRef<Path>, tmp_dst: TempDir) -> anyhow::Result<
 | 
			
		||||
 | 
			
		||||
    Ok(())
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
#[cfg(test)]
 | 
			
		||||
mod test {
 | 
			
		||||
    use nelson::Mocker;
 | 
			
		||||
    use once_cell::sync::Lazy;
 | 
			
		||||
 | 
			
		||||
    use super::*;
 | 
			
		||||
    use crate::index_resolver::error::IndexResolverError;
 | 
			
		||||
    use crate::options::SchedulerConfig;
 | 
			
		||||
    use crate::tasks::error::Result as TaskResult;
 | 
			
		||||
    use crate::tasks::task::{Task, TaskId};
 | 
			
		||||
    use crate::tasks::{BatchHandler, TaskFilter, TaskStore};
 | 
			
		||||
    use crate::update_file_store::UpdateFileStore;
 | 
			
		||||
 | 
			
		||||
    fn setup() {
 | 
			
		||||
        static SETUP: Lazy<()> = Lazy::new(|| {
 | 
			
		||||
            if cfg!(windows) {
 | 
			
		||||
                std::env::set_var("TMP", ".");
 | 
			
		||||
            } else {
 | 
			
		||||
                std::env::set_var("TMPDIR", ".");
 | 
			
		||||
            }
 | 
			
		||||
        });
 | 
			
		||||
 | 
			
		||||
        // just deref to make sure the env is setup
 | 
			
		||||
        *SETUP
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    #[actix_rt::test]
 | 
			
		||||
    async fn test_dump_normal() {
 | 
			
		||||
        setup();
 | 
			
		||||
 | 
			
		||||
        let tmp = tempfile::tempdir().unwrap();
 | 
			
		||||
 | 
			
		||||
        let mocker = Mocker::default();
 | 
			
		||||
        let update_file_store = UpdateFileStore::mock(mocker);
 | 
			
		||||
 | 
			
		||||
        let mut performer = BatchHandler::new();
 | 
			
		||||
        performer
 | 
			
		||||
            .expect_process_job()
 | 
			
		||||
            .once()
 | 
			
		||||
            .returning(|j| match j {
 | 
			
		||||
                Job::Dump { ret, .. } => {
 | 
			
		||||
                    let (sender, _receiver) = oneshot::channel();
 | 
			
		||||
                    ret.send(Ok(sender)).unwrap();
 | 
			
		||||
                }
 | 
			
		||||
                _ => unreachable!(),
 | 
			
		||||
            });
 | 
			
		||||
        let performer = Arc::new(performer);
 | 
			
		||||
        let mocker = Mocker::default();
 | 
			
		||||
        mocker
 | 
			
		||||
            .when::<(&Path, UpdateFileStore), TaskResult<()>>("dump")
 | 
			
		||||
            .then(|_| Ok(()));
 | 
			
		||||
        mocker
 | 
			
		||||
            .when::<(Option<TaskId>, Option<TaskFilter>, Option<usize>), TaskResult<Vec<Task>>>(
 | 
			
		||||
                "list_tasks",
 | 
			
		||||
            )
 | 
			
		||||
            .then(|_| Ok(Vec::new()));
 | 
			
		||||
        let store = TaskStore::mock(mocker);
 | 
			
		||||
        let config = SchedulerConfig::default();
 | 
			
		||||
 | 
			
		||||
        let scheduler = Scheduler::new(store, performer, config).unwrap();
 | 
			
		||||
 | 
			
		||||
        let task = DumpJob {
 | 
			
		||||
            dump_path: tmp.path().into(),
 | 
			
		||||
            // this should do nothing
 | 
			
		||||
            update_file_store,
 | 
			
		||||
            db_path: tmp.path().into(),
 | 
			
		||||
            uid: String::from("test"),
 | 
			
		||||
            update_db_size: 4096 * 10,
 | 
			
		||||
            index_db_size: 4096 * 10,
 | 
			
		||||
            scheduler,
 | 
			
		||||
        };
 | 
			
		||||
 | 
			
		||||
        task.run().await.unwrap();
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    #[actix_rt::test]
 | 
			
		||||
    async fn error_performing_dump() {
 | 
			
		||||
        let tmp = tempfile::tempdir().unwrap();
 | 
			
		||||
 | 
			
		||||
        let mocker = Mocker::default();
 | 
			
		||||
        let file_store = UpdateFileStore::mock(mocker);
 | 
			
		||||
 | 
			
		||||
        let mocker = Mocker::default();
 | 
			
		||||
        mocker
 | 
			
		||||
            .when::<(Option<TaskId>, Option<TaskFilter>, Option<usize>), TaskResult<Vec<Task>>>(
 | 
			
		||||
                "list_tasks",
 | 
			
		||||
            )
 | 
			
		||||
            .then(|_| Ok(Vec::new()));
 | 
			
		||||
        let task_store = TaskStore::mock(mocker);
 | 
			
		||||
        let mut performer = BatchHandler::new();
 | 
			
		||||
        performer
 | 
			
		||||
            .expect_process_job()
 | 
			
		||||
            .once()
 | 
			
		||||
            .returning(|job| match job {
 | 
			
		||||
                Job::Dump { ret, .. } => drop(ret.send(Err(IndexResolverError::BadlyFormatted(
 | 
			
		||||
                    "blabla".to_string(),
 | 
			
		||||
                )))),
 | 
			
		||||
                _ => unreachable!(),
 | 
			
		||||
            });
 | 
			
		||||
        let performer = Arc::new(performer);
 | 
			
		||||
 | 
			
		||||
        let scheduler = Scheduler::new(task_store, performer, SchedulerConfig::default()).unwrap();
 | 
			
		||||
 | 
			
		||||
        let task = DumpJob {
 | 
			
		||||
            dump_path: tmp.path().into(),
 | 
			
		||||
            // this should do nothing
 | 
			
		||||
            db_path: tmp.path().into(),
 | 
			
		||||
            update_file_store: file_store,
 | 
			
		||||
            uid: String::from("test"),
 | 
			
		||||
            update_db_size: 4096 * 10,
 | 
			
		||||
            index_db_size: 4096 * 10,
 | 
			
		||||
            scheduler,
 | 
			
		||||
        };
 | 
			
		||||
 | 
			
		||||
        assert!(task.run().await.is_err());
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user