Skip to content

Commit 78cc8c7

Browse files
committed
adding more checksum algorithms and adding test logger
1 parent 90ae39b commit 78cc8c7

File tree

2 files changed

+28
-16
lines changed

2 files changed

+28
-16
lines changed

src/aws-cpp-sdk-transfer/source/transfer/TransferManager.cpp

Lines changed: 19 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,8 @@
99
#include <aws/core/utils/crypto/Hash.h>
1010
#include <aws/core/utils/crypto/CRC32.h>
1111
#include <aws/core/utils/crypto/CRC64.h>
12+
#include <aws/core/utils/crypto/Sha1.h>
13+
#include <aws/core/utils/crypto/Sha256.h>
1214
#include <aws/core/utils/memory/AWSMemory.h>
1315
#include <aws/core/utils/memory/stl/AWSStreamFwd.h>
1416
#include <aws/core/utils/memory/stl/AWSStringStream.h>
@@ -402,14 +404,24 @@ namespace Aws
402404
bool isRetry = !handle->GetMultiPartId().empty();
403405
uint64_t sentBytes = 0;
404406

405-
std::shared_ptr<Aws::Utils::Crypto::Hash> fullObjectHashCalculator;
406-
if (handle->GetChecksum().empty() && !isRetry) {
407-
if (m_transferConfig.checksumAlgorithm == S3::Model::ChecksumAlgorithm::CRC32C) {
408-
fullObjectHashCalculator = Aws::MakeShared<Aws::Utils::Crypto::CRC32C>("TransferManager");
409-
} else{
410-
fullObjectHashCalculator = Aws::MakeShared<Aws::Utils::Crypto::CRC64>("TransferManager");
407+
const auto fullObjectHashCalculator = [](const std::shared_ptr<TransferHandle>& handle, bool isRetry, S3::Model::ChecksumAlgorithm algorithm) -> std::shared_ptr<Aws::Utils::Crypto::Hash> {
408+
if (handle->GetChecksum().empty() && !isRetry) {
409+
if (algorithm == S3::Model::ChecksumAlgorithm::CRC32) {
410+
return Aws::MakeShared<Aws::Utils::Crypto::CRC32>("TransferManager");
411+
}
412+
if (algorithm == S3::Model::ChecksumAlgorithm::CRC32C) {
413+
return Aws::MakeShared<Aws::Utils::Crypto::CRC32C>("TransferManager");
414+
}
415+
if (algorithm == S3::Model::ChecksumAlgorithm::SHA1) {
416+
return Aws::MakeShared<Aws::Utils::Crypto::Sha1>("TransferManager");
417+
}
418+
if (algorithm == S3::Model::ChecksumAlgorithm::SHA256) {
419+
return Aws::MakeShared<Aws::Utils::Crypto::Sha256>("TransferManager");
420+
}
421+
return Aws::MakeShared<Aws::Utils::Crypto::CRC64>("TransferManager");
411422
}
412-
}
423+
return nullptr;
424+
}(handle, isRetry, m_transferConfig.checksumAlgorithm);
413425

414426
if (!isRetry) {
415427
Aws::S3::Model::CreateMultipartUploadRequest createMultipartRequest = m_transferConfig.createMultipartUploadTemplate;

tests/aws-cpp-sdk-transfer-tests/TransferTests.cpp

Lines changed: 9 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -164,15 +164,15 @@ class MockS3Client : public S3Client
164164
// Override to verify checksum is being sent
165165
Model::CompleteMultipartUploadOutcome CompleteMultipartUpload(const Model::CompleteMultipartUploadRequest& request) const override
166166
{
167-
std::cout << "=== CompleteMultipartUpload Request ===" << std::endl;
168-
std::cout << "Available ChecksumAlgorithm enum values:" << std::endl;
169-
std::cout << "ChecksumType: " << (int)request.GetChecksumType() << std::endl;
170-
std::cout << "ChecksumCRC32: " << request.GetChecksumCRC32() << std::endl;
171-
std::cout << "ChecksumCRC32C: " << request.GetChecksumCRC32C() << std::endl;
172-
std::cout << "ChecksumCRC64NVME: " << request.GetChecksumCRC64NVME() << std::endl;
173-
std::cout << "ChecksumSHA1: " << request.GetChecksumSHA1() << std::endl;
174-
std::cout << "ChecksumSHA256: " << request.GetChecksumSHA256() << std::endl;
175-
std::cout << "=======================================" << std::endl;
167+
AWS_LOGSTREAM_INFO("TransferTests", "=== CompleteMultipartUpload Request ===");
168+
AWS_LOGSTREAM_INFO("TransferTests", "Available ChecksumAlgorithm enum values:");
169+
AWS_LOGSTREAM_INFO("TransferTests", "ChecksumType: " << (int)request.GetChecksumType());
170+
AWS_LOGSTREAM_INFO("TransferTests", "ChecksumCRC32: " << request.GetChecksumCRC32());
171+
AWS_LOGSTREAM_INFO("TransferTests", "ChecksumCRC32C: " << request.GetChecksumCRC32C());
172+
AWS_LOGSTREAM_INFO("TransferTests", "ChecksumCRC64NVME: " << request.GetChecksumCRC64NVME());
173+
AWS_LOGSTREAM_INFO("TransferTests", "ChecksumSHA1: " << request.GetChecksumSHA1());
174+
AWS_LOGSTREAM_INFO("TransferTests", "ChecksumSHA256: " << request.GetChecksumSHA256());
175+
AWS_LOGSTREAM_INFO("TransferTests", "=======================================");
176176
return S3Client::CompleteMultipartUpload(request);
177177
}
178178

0 commit comments

Comments
 (0)