Spaces:
Build error
Build error
use std::num::NonZeroUsize; | |
use std::sync::Arc; | |
use collection::operations::vector_params_builder::VectorParamsBuilder; | |
use collection::operations::verification::new_unchecked_verification_pass; | |
use collection::optimizers_builder::OptimizersConfig; | |
use collection::shards::channel_service::ChannelService; | |
use common::cpu::CpuBudget; | |
use memory::madvise; | |
use segment::types::Distance; | |
use storage::content_manager::collection_meta_ops::{ | |
ChangeAliasesOperation, CollectionMetaOperations, CreateAlias, CreateCollection, | |
CreateCollectionOperation, DeleteAlias, RenameAlias, | |
}; | |
use storage::content_manager::consensus::operation_sender::OperationSender; | |
use storage::content_manager::toc::TableOfContent; | |
use storage::dispatcher::Dispatcher; | |
use storage::rbac::{Access, AccessRequirements}; | |
use storage::types::{PerformanceConfig, StorageConfig}; | |
use tempfile::Builder; | |
use tokio::runtime::Runtime; | |
const FULL_ACCESS: Access = Access::full("For test"); | |
fn test_alias_operation() { | |
let storage_dir = Builder::new().prefix("storage").tempdir().unwrap(); | |
let config = StorageConfig { | |
storage_path: storage_dir.path().to_str().unwrap().to_string(), | |
snapshots_path: storage_dir | |
.path() | |
.join("snapshots") | |
.to_str() | |
.unwrap() | |
.to_string(), | |
snapshots_config: Default::default(), | |
temp_path: None, | |
on_disk_payload: false, | |
on_disk_payload_uses_mmap: false, | |
optimizers: OptimizersConfig { | |
deleted_threshold: 0.5, | |
vacuum_min_vector_number: 100, | |
default_segment_number: 2, | |
max_segment_size: None, | |
memmap_threshold: Some(100), | |
indexing_threshold: Some(100), | |
flush_interval_sec: 2, | |
max_optimization_threads: Some(2), | |
}, | |
optimizers_overwrite: None, | |
wal: Default::default(), | |
performance: PerformanceConfig { | |
max_search_threads: 1, | |
max_optimization_threads: 1, | |
optimizer_cpu_budget: 0, | |
update_rate_limit: None, | |
search_timeout_sec: None, | |
incoming_shard_transfers_limit: Some(1), | |
outgoing_shard_transfers_limit: Some(1), | |
async_scorer: None, | |
}, | |
hnsw_index: Default::default(), | |
mmap_advice: madvise::Advice::Random, | |
node_type: Default::default(), | |
update_queue_size: Default::default(), | |
handle_collection_load_errors: false, | |
recovery_mode: None, | |
update_concurrency: Some(NonZeroUsize::new(2).unwrap()), | |
// update_concurrency: None, | |
shard_transfer_method: None, | |
collection: None, | |
}; | |
let search_runtime = Runtime::new().unwrap(); | |
let handle = search_runtime.handle().clone(); | |
let update_runtime = Runtime::new().unwrap(); | |
let general_runtime = Runtime::new().unwrap(); | |
let (propose_sender, _propose_receiver) = std::sync::mpsc::channel(); | |
let propose_operation_sender = OperationSender::new(propose_sender); | |
let toc = Arc::new(TableOfContent::new( | |
&config, | |
search_runtime, | |
update_runtime, | |
general_runtime, | |
CpuBudget::default(), | |
ChannelService::new(6333, None), | |
0, | |
Some(propose_operation_sender), | |
)); | |
let dispatcher = Dispatcher::new(toc); | |
handle | |
.block_on( | |
dispatcher.submit_collection_meta_op( | |
CollectionMetaOperations::CreateCollection(CreateCollectionOperation::new( | |
"test".to_string(), | |
CreateCollection { | |
vectors: VectorParamsBuilder::new(10, Distance::Cosine) | |
.build() | |
.into(), | |
sparse_vectors: None, | |
hnsw_config: None, | |
wal_config: None, | |
optimizers_config: None, | |
shard_number: Some(1), | |
on_disk_payload: None, | |
replication_factor: None, | |
write_consistency_factor: None, | |
init_from: None, | |
quantization_config: None, | |
sharding_method: None, | |
strict_mode_config: None, | |
uuid: None, | |
}, | |
)), | |
FULL_ACCESS, | |
None, | |
), | |
) | |
.unwrap(); | |
handle | |
.block_on(dispatcher.submit_collection_meta_op( | |
CollectionMetaOperations::ChangeAliases(ChangeAliasesOperation { | |
actions: vec![CreateAlias { | |
collection_name: "test".to_string(), | |
alias_name: "test_alias".to_string(), | |
} | |
.into()], | |
}), | |
FULL_ACCESS, | |
None, | |
)) | |
.unwrap(); | |
handle | |
.block_on(dispatcher.submit_collection_meta_op( | |
CollectionMetaOperations::ChangeAliases(ChangeAliasesOperation { | |
actions: vec![ | |
CreateAlias { | |
collection_name: "test".to_string(), | |
alias_name: "test_alias2".to_string(), | |
} | |
.into(), | |
DeleteAlias { | |
alias_name: "test_alias".to_string(), | |
} | |
.into(), | |
RenameAlias { | |
old_alias_name: "test_alias2".to_string(), | |
new_alias_name: "test_alias3".to_string(), | |
} | |
.into(), | |
], | |
}), | |
FULL_ACCESS, | |
None, | |
)) | |
.unwrap(); | |
// Nothing to verify here. | |
let pass = new_unchecked_verification_pass(); | |
let _ = handle | |
.block_on( | |
dispatcher.toc(&FULL_ACCESS, &pass).get_collection( | |
&FULL_ACCESS | |
.check_collection_access("test_alias3", AccessRequirements::new()) | |
.unwrap(), | |
), | |
) | |
.unwrap(); | |
} | |