Files
Oxicloud/benches/file_operations.rs
T

53 lines
1.7 KiB
Rust
Raw Normal View History

2025-03-26 18:33:22 +01:00
//! Benchmarks for file operations in OxiCloud
#![feature(test)]
extern crate test;
use test::{black_box, Bencher};
use oxicloud::application::services::file_service::{FileCreationOptions, FileService};
use oxicloud::domain::entities::file::File;
use std::sync::Arc;
use tokio::runtime::Runtime;
use uuid::Uuid;
/// Benchmark for creating files
#[bench]
fn bench_create_file(b: &mut Bencher) {
let rt = Runtime::new().unwrap();
// Initialize services - this would need adaptation based on actual application structure
let file_service = Arc::new(get_file_service());
let user_id = Uuid::parse_str("00000000-0000-0000-0000-000000000000").unwrap();
let filename = "benchmark_test.txt";
let content = "This is a test file for benchmarking".as_bytes().to_vec();
let folder_id = Uuid::parse_str("00000000-0000-0000-0000-000000000001").unwrap();
b.iter(|| {
black_box(rt.block_on(async {
let options = FileCreationOptions {
overwrite: true,
..Default::default()
};
// Create a file with the service
file_service.create_file(
user_id,
folder_id,
filename.to_string(),
content.clone(),
options,
).await
}))
});
}
/// Mock implementation for getting a file service instance for benchmarking
fn get_file_service() -> FileService {
// This is a simplified mock implementation
// In a real benchmark, you would use actual dependencies
FileService::new(
// Add required repositories/services as needed
// For illustration only - will need adaptation for actual implementation
)
}