test(tvix/[ca]store): enable bigtable only with "integration" feature
The emulator and bigtable client are quite big. Remove them from the default //tvix:shell. Put the tests behind a `integration` feature flag, and add a variant with that enabled to CI, and drop the bigtable tools from //tvix:shell. Change-Id: Ie042097a0d6fc26542faa96c139b77298ccb160a Reviewed-on: https://cl.tvl.fyi/c/depot/+/11582 Reviewed-by: edef <edef@edef.eu> Autosubmit: flokli <flokli@flokli.de> Tested-by: BuildkiteCI
This commit is contained in:
parent
b8e82a42ed
commit
37671d3913
10 changed files with 44 additions and 15 deletions
|
@ -13771,7 +13771,7 @@ rec {
|
||||||
"tonic-reflection" = [ "dep:tonic-reflection" ];
|
"tonic-reflection" = [ "dep:tonic-reflection" ];
|
||||||
"virtiofs" = [ "fs" "dep:vhost" "dep:vhost-user-backend" "dep:virtio-queue" "dep:vm-memory" "dep:vmm-sys-util" "dep:virtio-bindings" "fuse-backend-rs?/vhost-user-fs" "fuse-backend-rs?/virtiofs" ];
|
"virtiofs" = [ "fs" "dep:vhost" "dep:vhost-user-backend" "dep:virtio-queue" "dep:vm-memory" "dep:vmm-sys-util" "dep:virtio-bindings" "fuse-backend-rs?/vhost-user-fs" "fuse-backend-rs?/virtiofs" ];
|
||||||
};
|
};
|
||||||
resolvedDefaultFeatures = [ "cloud" "default" "fs" "fuse" "tonic-reflection" "virtiofs" ];
|
resolvedDefaultFeatures = [ "cloud" "default" "fs" "fuse" "integration" "tonic-reflection" "virtiofs" ];
|
||||||
};
|
};
|
||||||
"tvix-cli" = rec {
|
"tvix-cli" = rec {
|
||||||
crateName = "tvix-cli";
|
crateName = "tvix-cli";
|
||||||
|
@ -14489,7 +14489,7 @@ rec {
|
||||||
"tonic-reflection" = [ "dep:tonic-reflection" "tvix-castore/tonic-reflection" ];
|
"tonic-reflection" = [ "dep:tonic-reflection" "tvix-castore/tonic-reflection" ];
|
||||||
"virtiofs" = [ "tvix-castore/virtiofs" ];
|
"virtiofs" = [ "tvix-castore/virtiofs" ];
|
||||||
};
|
};
|
||||||
resolvedDefaultFeatures = [ "cloud" "default" "fuse" "otlp" "tonic-reflection" "virtiofs" ];
|
resolvedDefaultFeatures = [ "cloud" "default" "fuse" "integration" "otlp" "tonic-reflection" "virtiofs" ];
|
||||||
};
|
};
|
||||||
"typenum" = rec {
|
"typenum" = rec {
|
||||||
crateName = "typenum";
|
crateName = "typenum";
|
||||||
|
|
|
@ -112,3 +112,7 @@ virtiofs = [
|
||||||
]
|
]
|
||||||
fuse = ["fs"]
|
fuse = ["fs"]
|
||||||
tonic-reflection = ["dep:tonic-reflection"]
|
tonic-reflection = ["dep:tonic-reflection"]
|
||||||
|
# Whether to run the integration tests.
|
||||||
|
# Requires the following packages in $PATH:
|
||||||
|
# cbtemulator, google-cloud-bigtable-tool
|
||||||
|
integration = []
|
||||||
|
|
|
@ -1,12 +1,23 @@
|
||||||
{ depot, pkgs, ... }:
|
{ depot, pkgs, ... }:
|
||||||
|
|
||||||
depot.tvix.crates.workspaceMembers.tvix-castore.build.override {
|
(depot.tvix.crates.workspaceMembers.tvix-castore.build.override {
|
||||||
runTests = true;
|
runTests = true;
|
||||||
testPreRun = ''
|
testPreRun = ''
|
||||||
export SSL_CERT_FILE=${pkgs.cacert}/etc/ssl/certs/ca-bundle.crt;
|
export SSL_CERT_FILE=${pkgs.cacert}/etc/ssl/certs/ca-bundle.crt;
|
||||||
export PATH="$PATH:${pkgs.lib.makeBinPath [pkgs.cbtemulator pkgs.google-cloud-bigtable-tool]}"
|
|
||||||
'';
|
'';
|
||||||
|
|
||||||
# enable some optional features.
|
# enable some optional features.
|
||||||
features = [ "default" "cloud" ];
|
features = [ "default" "cloud" ];
|
||||||
}
|
}).overrideAttrs (_: {
|
||||||
|
meta.ci.targets = [ "integration-tests" ];
|
||||||
|
passthru.integration-tests = depot.tvix.crates.workspaceMembers.tvix-castore.build.override {
|
||||||
|
runTests = true;
|
||||||
|
testPreRun = ''
|
||||||
|
export SSL_CERT_FILE=${pkgs.cacert}/etc/ssl/certs/ca-bundle.crt;
|
||||||
|
export PATH="$PATH:${pkgs.lib.makeBinPath [pkgs.cbtemulator pkgs.google-cloud-bigtable-tool]}"
|
||||||
|
'';
|
||||||
|
|
||||||
|
# enable some optional features.
|
||||||
|
features = [ "default" "cloud" "integration" ];
|
||||||
|
};
|
||||||
|
})
|
||||||
|
|
|
@ -144,7 +144,7 @@ mod tests {
|
||||||
#[case::grpc_invalid_host_and_path("grpc+http://localhost/some-path", false)]
|
#[case::grpc_invalid_host_and_path("grpc+http://localhost/some-path", false)]
|
||||||
/// A valid example for Bigtable
|
/// A valid example for Bigtable
|
||||||
#[cfg_attr(
|
#[cfg_attr(
|
||||||
feature = "cloud",
|
all(feature = "cloud", feature = "integration"),
|
||||||
case::bigtable_valid_url(
|
case::bigtable_valid_url(
|
||||||
"bigtable://instance-1?project_id=project-1&table_name=table-1&family_name=cf1",
|
"bigtable://instance-1?project_id=project-1&table_name=table-1&family_name=cf1",
|
||||||
true
|
true
|
||||||
|
@ -152,7 +152,7 @@ mod tests {
|
||||||
)]
|
)]
|
||||||
/// A valid example for Bigtable, specifying a custom channel size and timeout
|
/// A valid example for Bigtable, specifying a custom channel size and timeout
|
||||||
#[cfg_attr(
|
#[cfg_attr(
|
||||||
feature = "cloud",
|
all(feature = "cloud", feature = "integration"),
|
||||||
case::bigtable_valid_url(
|
case::bigtable_valid_url(
|
||||||
"bigtable://instance-1?project_id=project-1&table_name=table-1&family_name=cf1&channel_size=10&timeout=10",
|
"bigtable://instance-1?project_id=project-1&table_name=table-1&family_name=cf1&channel_size=10&timeout=10",
|
||||||
true
|
true
|
||||||
|
@ -160,7 +160,7 @@ mod tests {
|
||||||
)]
|
)]
|
||||||
/// A invalid Bigtable example (missing fields)
|
/// A invalid Bigtable example (missing fields)
|
||||||
#[cfg_attr(
|
#[cfg_attr(
|
||||||
feature = "cloud",
|
all(feature = "cloud", feature = "integration"),
|
||||||
case::bigtable_invalid_url("bigtable://instance-1", false)
|
case::bigtable_invalid_url("bigtable://instance-1", false)
|
||||||
)]
|
)]
|
||||||
#[tokio::test]
|
#[tokio::test]
|
||||||
|
|
|
@ -26,7 +26,7 @@ use self::utils::make_grpc_directory_service_client;
|
||||||
#[case::grpc(make_grpc_directory_service_client().await)]
|
#[case::grpc(make_grpc_directory_service_client().await)]
|
||||||
#[case::memory(directoryservice::from_addr("memory://").await.unwrap())]
|
#[case::memory(directoryservice::from_addr("memory://").await.unwrap())]
|
||||||
#[case::sled(directoryservice::from_addr("sled://").await.unwrap())]
|
#[case::sled(directoryservice::from_addr("sled://").await.unwrap())]
|
||||||
#[cfg_attr(feature = "cloud", case::bigtable(directoryservice::from_addr("bigtable://instance-1?project_id=project-1&table_name=table-1&family_name=cf1").await.unwrap()))]
|
#[cfg_attr(all(feature = "cloud", feature = "integration"), case::bigtable(directoryservice::from_addr("bigtable://instance-1?project_id=project-1&table_name=table-1&family_name=cf1").await.unwrap()))]
|
||||||
pub fn directory_services(#[case] directory_service: impl DirectoryService) {}
|
pub fn directory_services(#[case] directory_service: impl DirectoryService) {}
|
||||||
|
|
||||||
/// Ensures asking for a directory that doesn't exist returns a Ok(None).
|
/// Ensures asking for a directory that doesn't exist returns a Ok(None).
|
||||||
|
|
|
@ -29,12 +29,10 @@ pkgs.mkShell {
|
||||||
pkgs.cargo
|
pkgs.cargo
|
||||||
pkgs.cargo-machete
|
pkgs.cargo-machete
|
||||||
pkgs.cargo-expand
|
pkgs.cargo-expand
|
||||||
pkgs.cbtemulator
|
|
||||||
pkgs.clippy
|
pkgs.clippy
|
||||||
pkgs.evans
|
pkgs.evans
|
||||||
pkgs.fuse
|
pkgs.fuse
|
||||||
pkgs.go
|
pkgs.go
|
||||||
pkgs.google-cloud-bigtable-tool
|
|
||||||
pkgs.grpcurl
|
pkgs.grpcurl
|
||||||
pkgs.hyperfine
|
pkgs.hyperfine
|
||||||
pkgs.mdbook
|
pkgs.mdbook
|
||||||
|
|
|
@ -74,3 +74,7 @@ fuse = ["tvix-castore/fuse"]
|
||||||
otlp = ["dep:opentelemetry", "dep:opentelemetry-otlp", "dep:opentelemetry_sdk"]
|
otlp = ["dep:opentelemetry", "dep:opentelemetry-otlp", "dep:opentelemetry_sdk"]
|
||||||
tonic-reflection = ["dep:tonic-reflection", "tvix-castore/tonic-reflection"]
|
tonic-reflection = ["dep:tonic-reflection", "tvix-castore/tonic-reflection"]
|
||||||
virtiofs = ["tvix-castore/virtiofs"]
|
virtiofs = ["tvix-castore/virtiofs"]
|
||||||
|
# Whether to run the integration tests.
|
||||||
|
# Requires the following packages in $PATH:
|
||||||
|
# cbtemulator, google-cloud-bigtable-tool
|
||||||
|
integration = []
|
||||||
|
|
|
@ -26,7 +26,6 @@ in
|
||||||
runTests = true;
|
runTests = true;
|
||||||
testPreRun = ''
|
testPreRun = ''
|
||||||
export SSL_CERT_FILE=${pkgs.cacert}/etc/ssl/certs/ca-bundle.crt
|
export SSL_CERT_FILE=${pkgs.cacert}/etc/ssl/certs/ca-bundle.crt
|
||||||
export PATH="$PATH:${pkgs.lib.makeBinPath [pkgs.cbtemulator pkgs.google-cloud-bigtable-tool]}"
|
|
||||||
'';
|
'';
|
||||||
|
|
||||||
# enable some optional features.
|
# enable some optional features.
|
||||||
|
@ -34,7 +33,20 @@ in
|
||||||
# virtiofs feature currently fails to build on Darwin.
|
# virtiofs feature currently fails to build on Darwin.
|
||||||
++ pkgs.lib.optional pkgs.stdenv.isLinux "virtiofs";
|
++ pkgs.lib.optional pkgs.stdenv.isLinux "virtiofs";
|
||||||
}).overrideAttrs (_: {
|
}).overrideAttrs (_: {
|
||||||
|
meta.ci.targets = [ "integration-tests" ];
|
||||||
meta.ci.extraSteps = {
|
meta.ci.extraSteps = {
|
||||||
import-docs = (mkImportCheck "tvix/store/docs" ./docs);
|
import-docs = (mkImportCheck "tvix/store/docs" ./docs);
|
||||||
};
|
};
|
||||||
|
passthru.integration-tests = depot.tvix.crates.workspaceMembers.tvix-store.build.override {
|
||||||
|
runTests = true;
|
||||||
|
testPreRun = ''
|
||||||
|
export SSL_CERT_FILE=${pkgs.cacert}/etc/ssl/certs/ca-bundle.crt
|
||||||
|
export PATH="$PATH:${pkgs.lib.makeBinPath [pkgs.cbtemulator pkgs.google-cloud-bigtable-tool]}"
|
||||||
|
'';
|
||||||
|
|
||||||
|
# enable some optional features.
|
||||||
|
features = [ "default" "cloud" "integration" ]
|
||||||
|
# virtiofs feature currently fails to build on Darwin.
|
||||||
|
++ pkgs.lib.optional pkgs.stdenv.isLinux "virtiofs";
|
||||||
|
};
|
||||||
})
|
})
|
||||||
|
|
|
@ -208,7 +208,7 @@ mod tests {
|
||||||
#[case::grpc_invalid_host_and_path("grpc+http://localhost/some-path", false)]
|
#[case::grpc_invalid_host_and_path("grpc+http://localhost/some-path", false)]
|
||||||
/// A valid example for Bigtable.
|
/// A valid example for Bigtable.
|
||||||
#[cfg_attr(
|
#[cfg_attr(
|
||||||
feature = "cloud",
|
all(feature = "cloud", feature = "integration"),
|
||||||
case::bigtable_valid(
|
case::bigtable_valid(
|
||||||
"bigtable://instance-1?project_id=project-1&table_name=table-1&family_name=cf1",
|
"bigtable://instance-1?project_id=project-1&table_name=table-1&family_name=cf1",
|
||||||
true
|
true
|
||||||
|
@ -216,7 +216,7 @@ mod tests {
|
||||||
)]
|
)]
|
||||||
/// An invalid example for Bigtable, missing fields
|
/// An invalid example for Bigtable, missing fields
|
||||||
#[cfg_attr(
|
#[cfg_attr(
|
||||||
feature = "cloud",
|
all(feature = "cloud", feature = "integration"),
|
||||||
case::bigtable_invalid_missing_fields("bigtable://instance-1", false)
|
case::bigtable_invalid_missing_fields("bigtable://instance-1", false)
|
||||||
)]
|
)]
|
||||||
#[tokio::test]
|
#[tokio::test]
|
||||||
|
|
|
@ -51,7 +51,7 @@ pub async fn make_path_info_service(uri: &str) -> BSDSPS {
|
||||||
#[case::memory(make_path_info_service("memory://").await)]
|
#[case::memory(make_path_info_service("memory://").await)]
|
||||||
#[case::grpc(make_grpc_path_info_service_client().await)]
|
#[case::grpc(make_grpc_path_info_service_client().await)]
|
||||||
#[case::sled(make_path_info_service("sled://").await)]
|
#[case::sled(make_path_info_service("sled://").await)]
|
||||||
#[cfg_attr(feature = "cloud", case::bigtable(make_path_info_service("bigtable://instance-1?project_id=project-1&table_name=table-1&family_name=cf1").await))]
|
#[cfg_attr(all(feature = "cloud",feature="integration"), case::bigtable(make_path_info_service("bigtable://instance-1?project_id=project-1&table_name=table-1&family_name=cf1").await))]
|
||||||
pub fn path_info_services(
|
pub fn path_info_services(
|
||||||
#[case] services: (
|
#[case] services: (
|
||||||
impl BlobService,
|
impl BlobService,
|
||||||
|
|
Loading…
Reference in a new issue