53 lines
1.7 KiB
Rust
53 lines
1.7 KiB
Rust
|
|
//! 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
|
||
|
|
)
|
||
|
|
}
|