Skip to content

Commit 1ba6619

Browse files
committed
Add completeness checking store
1 parent db724c0 commit 1ba6619

File tree

11 files changed

+692
-1
lines changed

11 files changed

+692
-1
lines changed

Cargo.lock

+78
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

Cargo.toml

+4
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,8 @@ members = [
2929
"gencargo/cas_server",
3030
"gencargo/cas_server_test",
3131
"gencargo/common",
32+
"gencargo/completeness_checking_store",
33+
"gencargo/completeness_checking_store_test",
3234
"gencargo/compression_store",
3335
"gencargo/compression_store_test",
3436
"gencargo/config",
@@ -177,6 +179,8 @@ cas = { path = "gencargo/cas" }
177179
cas_server = { path = "gencargo/cas_server" }
178180
cas_server_test = { path = "gencargo/cas_server_test" }
179181
common = { path = "gencargo/common" }
182+
completeness_checking_store = { path = "gencargo/completeness_checking_store" }
183+
completeness_checking_store_test = { path = "gencargo/completeness_checking_store_test" }
180184
compression_store = { path = "gencargo/compression_store" }
181185
compression_store_test = { path = "gencargo/compression_store_test" }
182186
config = { path = "gencargo/config" }

cas/scheduler/action_messages.rs

+63
Original file line numberDiff line numberDiff line change
@@ -748,6 +748,69 @@ impl From<ActionResult> for ProtoActionResult {
748748
}
749749
}
750750

751+
impl TryFrom<ProtoActionResult> for ActionResult {
752+
type Error = Error;
753+
754+
fn try_from(val: ProtoActionResult) -> Result<Self, Error> {
755+
let output_file_symlinks: Result<Vec<_>, _> = val
756+
.output_file_symlinks
757+
.into_iter()
758+
.map(|output_symlink| {
759+
SymlinkInfo::try_from(output_symlink)
760+
.err_tip(|| "Output File Symlinks could not be converted to SymlinkInfo")
761+
})
762+
.collect();
763+
764+
let output_directory_symlinks: Result<Vec<_>, _> = val
765+
.output_directory_symlinks
766+
.into_iter()
767+
.map(|output_symlink| {
768+
SymlinkInfo::try_from(output_symlink)
769+
.err_tip(|| "Output File Symlinks could not be converted to SymlinkInfo")
770+
})
771+
.collect();
772+
773+
let output_files: Result<Vec<_>, _> = val
774+
.output_files
775+
.into_iter()
776+
.map(|output_file| output_file.try_into().err_tip(|| "Output File could not be converted"))
777+
.collect();
778+
779+
let output_folders: Result<Vec<_>, _> = val
780+
.output_directories
781+
.into_iter()
782+
.map(|output_directory| {
783+
output_directory
784+
.try_into()
785+
.err_tip(|| "Output File could not be converted")
786+
})
787+
.collect();
788+
789+
Ok(Self {
790+
output_files: output_files?,
791+
output_folders: output_folders?,
792+
output_file_symlinks: output_file_symlinks?,
793+
output_directory_symlinks: output_directory_symlinks?,
794+
exit_code: val.exit_code,
795+
stdout_digest: val
796+
.stdout_digest
797+
.map(|digest| digest.try_into().unwrap_or(DigestInfo::empty_digest()))
798+
.unwrap_or(DigestInfo::empty_digest()),
799+
stderr_digest: val
800+
.stderr_digest
801+
.map(|digest| digest.try_into().unwrap_or(DigestInfo::empty_digest()))
802+
.unwrap_or_else(DigestInfo::empty_digest),
803+
execution_metadata: val
804+
.execution_metadata
805+
.map(|metadata| metadata.try_into().unwrap_or(ExecutionMetadata::default()))
806+
.unwrap_or_default(),
807+
server_logs: Default::default(),
808+
error: None,
809+
message: String::new(),
810+
})
811+
}
812+
}
813+
751814
impl TryFrom<ExecuteResponse> for ActionStage {
752815
type Error = Error;
753816

cas/store/BUILD

+45
Original file line numberDiff line numberDiff line change
@@ -31,6 +31,7 @@ rust_library(
3131
":ref_store",
3232
":s3_store",
3333
":shard_store",
34+
":completeness_checking_store",
3435
":size_partitioning_store",
3536
":store",
3637
":traits",
@@ -126,6 +127,29 @@ rust_library(
126127
],
127128
)
128129

130+
rust_library(
131+
name = "completeness_checking_store",
132+
srcs = ["completeness_checking_store.rs"],
133+
proc_macro_deps = ["@crate_index//:async-trait"],
134+
visibility = ["//cas:__pkg__"],
135+
deps = [
136+
":traits",
137+
":ac_utils",
138+
"//proto",
139+
"//config",
140+
"//util:buf_channel",
141+
"//util:common",
142+
"//util:error",
143+
"//util:metrics_utils",
144+
"//cas/scheduler:action_messages",
145+
"@crate_index//:futures",
146+
"@crate_index//:hashbrown",
147+
"@crate_index//:hex",
148+
"@crate_index//:sha2",
149+
"@crate_index//:tokio",
150+
],
151+
)
152+
129153
rust_library(
130154
name = "verify_store",
131155
srcs = ["verify_store.rs"],
@@ -500,6 +524,27 @@ rust_test(
500524
],
501525
)
502526

527+
rust_test(
528+
name = "completeness_checking_store_test",
529+
srcs = ["tests/completeness_checking_store_test.rs"],
530+
deps = [
531+
":memory_store",
532+
":traits",
533+
":completeness_checking_store",
534+
":store",
535+
"//proto",
536+
"//config",
537+
"//util:buf_channel",
538+
"//util:common",
539+
"//util:error",
540+
"//cas/scheduler:action_messages",
541+
"@crate_index//:prost",
542+
"@crate_index//:futures",
543+
"@crate_index//:pretty_assertions",
544+
"@crate_index//:tokio",
545+
],
546+
)
547+
503548
rust_test(
504549
name = "filesystem_store_test",
505550
srcs = ["tests/filesystem_store_test.rs"],

0 commit comments

Comments
 (0)