Skip to content

Commit 5e99561

Browse files
committed
Record checksum results in developer data
1 parent e74c984 commit 5e99561

File tree

2 files changed

+44
-0
lines changed

2 files changed

+44
-0
lines changed

cmd/plugin.go

+16
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,7 @@ package main
2121
import (
2222
"bufio"
2323
"context"
24+
"encoding/hex"
2425
"fmt"
2526
"io/fs"
2627
"net/url"
@@ -495,8 +496,23 @@ func runPluginWorker(ctx context.Context, upload bool, workChan <-chan PluginTra
495496
}
496497
if attempt.Error != nil {
497498
developerData[fmt.Sprintf("TransferError%d", attempt.Number)] = attempt.Error.Error()
499+
developerData[fmt.Sprintf("IsRetryable%d", attempt.Number)] = client.IsRetryable(attempt.Error)
498500
}
499501
}
502+
if len(result.ClientChecksums) > 0 {
503+
checksumInfo := make(map[string]interface{})
504+
for _, checksum := range result.ClientChecksums {
505+
checksumInfo[client.HttpDigestFromChecksum(checksum.Algorithm)] = hex.EncodeToString(checksum.Value)
506+
}
507+
developerData["ClientChecksums"] = checksumInfo
508+
}
509+
if len(result.ServerChecksums) > 0 {
510+
checksumInfo := make(map[string]interface{})
511+
for _, checksum := range result.ServerChecksums {
512+
checksumInfo[client.HttpDigestFromChecksum(checksum.Algorithm)] = hex.EncodeToString(checksum.Value)
513+
}
514+
developerData["ServerChecksums"] = checksumInfo
515+
}
500516

501517
resultAd.Set("DeveloperData", developerData)
502518

cmd/plugin_test.go

+28
Original file line numberDiff line numberDiff line change
@@ -553,6 +553,34 @@ func TestPluginMulti(t *testing.T) {
553553
boolVal, ok := transferSuccess.(bool)
554554
require.True(t, ok)
555555
assert.True(t, boolVal)
556+
557+
log.Debugln("Got result ad:", resultAd)
558+
// Verify the checksums
559+
fileName, err := resultAd.Get("TransferFileName")
560+
require.NoError(t, err)
561+
fileNameString, ok := fileName.(string)
562+
require.True(t, ok)
563+
564+
devData, err := resultAd.Get("DeveloperData")
565+
require.NoError(t, err)
566+
devDataMap, ok := devData.(map[string]interface{})
567+
require.True(t, ok)
568+
checksum, ok := devDataMap["ClientChecksums"]
569+
require.True(t, ok)
570+
checksumMap, ok := checksum.(map[string]interface{})
571+
require.True(t, ok, "Expected transfer checksum to be a map type; was %T", checksum)
572+
checksumValue, ok := checksumMap["crc32c"]
573+
require.True(t, ok)
574+
checksumString, ok := checksumValue.(string)
575+
require.True(t, ok)
576+
577+
if fileNameString == filepath.Base(localPath1) {
578+
assert.Equal(t, "977b8112", checksumString)
579+
} else if fileNameString == filepath.Base(localPath2) {
580+
assert.Equal(t, "b99ecaad", checksumString)
581+
} else {
582+
t.Fatalf("Unexpected file name: %s", fileNameString)
583+
}
556584
}
557585
}
558586
}

0 commit comments

Comments
 (0)