From 22bf3c09859c8b66796245f8620f5b53c335bd19 Mon Sep 17 00:00:00 2001 From: gmega Date: Thu, 19 Jun 2025 20:09:42 -0300 Subject: [PATCH] feat: add content check to download --- src/codex.bash | 19 +++++++++++++++++++ test/test_codex.bats | 19 +++++++++++++++++-- 2 files changed, 36 insertions(+), 2 deletions(-) diff --git a/src/codex.bash b/src/codex.bash index c9e5e68..97961a4 100644 --- a/src/codex.bash +++ b/src/codex.bash @@ -219,4 +219,23 @@ cdx_upload_sha1() { cdx_download_sha1() { local node_index="$1" cid="$2" sha1 "${_cdx_downloads}/codex-${node_index}/$cid" || return 1 +} + +cdx_check_download() { + local upload_node="$1"\ + download_node="$2"\ + cid="$3"\ + upload_sha1\ + download_sha1 + + upload_sha1=$(cdx_upload_sha1 "$upload_node" "$cid") + download_sha1=$(cdx_download_sha1 "$download_node" "$cid") + + if [ "$upload_sha1" != "$download_sha1" ]; then + # shellcheck disable=SC2140 + echoerr "Download SHA-1 at node $download_node ($download_sha1) does not"\ +" match upload SHA-1 at node $upload_node ($upload_sha1)" + return 1 + fi + return 0 } \ No newline at end of file diff --git a/test/test_codex.bats b/test/test_codex.bats index 03bfb44..4a08348 100755 --- a/test/test_codex.bats +++ b/test/test_codex.bats @@ -74,6 +74,20 @@ setup() { pm_stop } +@test "should check downloaded content" { + mkdir -p "${_cdx_genfiles}" + mkdir -p "${_cdx_uploads}/codex-0" + mkdir -p "${_cdx_downloads}/codex-1" + + filename=$(cdx_generate_file 10) + + echo "$(sha1 "$filename")" > "${_cdx_uploads}/codex-0/fakecid.sha1" + cp "$filename" "${_cdx_downloads}/codex-1/fakecid" + + # Checks that the file uploaded at 0 matches the file downloaded at 1. + assert cdx_check_download 0 1 "fakecid" +} + @test "should upload and synchronously download file from Codex node" { pm_start @@ -84,7 +98,8 @@ setup() { cid=$(cdx_upload_file 0 "$filename") assert cdx_download_file 0 "$cid" - assert_equal $(sha1 "${filename}") $(cdx_download_sha1 0 "$cid") + + assert cdx_check_download 0 0 "$cid" pm_stop } @@ -101,7 +116,7 @@ setup() { handle=$(cdx_download_file_async 0 "$cid") await $handle 3 - assert_equal $(sha1 "${filename}") $(cdx_download_sha1 0 "$cid") + assert cdx_check_download 0 0 "$cid" pm_stop }