feat(tvix/composition): allow urls as anonymous stores
This allows specifying an url in place of a named reference to another composition entry, if the castore crate has been compiled with the xp-store-composition feature. Example: `--directory-service-addr cache://?near=memory://&far=memory://` This would be equivalent to the instantiation via toml file: ```toml [memory1] type = "memory" [memory2] type = "memory" [default] type = "cache" near = "memory1" far = "memory2" ``` Note that each anonymous url causes a distinct instance to be created. Change-Id: Iee5a07a94b063b5e767c704d9cad0114fa843164 Reviewed-on: https://cl.tvl.fyi/c/depot/+/12146 Reviewed-by: flokli <flokli@flokli.de> Tested-by: BuildkiteCI
This commit is contained in:
parent
ba4e02c3ac
commit
52bb3c6d02
9 changed files with 151 additions and 91 deletions
|
|
@ -44,7 +44,10 @@ pub async fn from_addr(
|
|||
})?
|
||||
.0;
|
||||
let path_info_service = path_info_service_config
|
||||
.build("anonymous", context.unwrap_or(&CompositionContext::blank()))
|
||||
.build(
|
||||
"anonymous",
|
||||
context.unwrap_or(&CompositionContext::blank(®)),
|
||||
)
|
||||
.await?;
|
||||
|
||||
Ok(path_info_service)
|
||||
|
|
@ -53,7 +56,7 @@ pub async fn from_addr(
|
|||
#[cfg(test)]
|
||||
mod tests {
|
||||
use super::from_addr;
|
||||
use crate::composition::{Composition, DeserializeWithRegistry, ServiceBuilder};
|
||||
use crate::composition::{Composition, DeserializeWithRegistry, ServiceBuilder, REG};
|
||||
use lazy_static::lazy_static;
|
||||
use rstest::rstest;
|
||||
use tempfile::TempDir;
|
||||
|
|
@ -125,7 +128,7 @@ mod tests {
|
|||
)]
|
||||
#[tokio::test]
|
||||
async fn test_from_addr_tokio(#[case] uri_str: &str, #[case] exp_succeed: bool) {
|
||||
let mut comp = Composition::default();
|
||||
let mut comp = Composition::new(®);
|
||||
comp.extend(vec![(
|
||||
"default".into(),
|
||||
DeserializeWithRegistry(Box::new(MemoryBlobServiceConfig {})
|
||||
|
|
|
|||
|
|
@ -188,7 +188,7 @@ pub async fn construct_services_from_configs(
|
|||
),
|
||||
Box<dyn std::error::Error + Send + Sync>,
|
||||
> {
|
||||
let mut comp = Composition::default();
|
||||
let mut comp = Composition::new(®);
|
||||
|
||||
comp.extend(configs.blobservices);
|
||||
comp.extend(configs.directoryservices);
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue