Skip to content

Commit b449d40

Browse files
committed
fix reviews on awschunking and default behavior
1 parent 50d171a commit b449d40

File tree

2 files changed

+4
-71
lines changed

2 files changed

+4
-71
lines changed

src/aws-cpp-sdk-core/include/smithy/client/features/ChunkingInterceptor.h

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -147,10 +147,10 @@ class ChunkingInterceptor : public smithy::interceptor::Interceptor {
147147
}
148148
}
149149

150-
auto chunkedBuf = Aws::MakeShared<AwsChunkedStreamBuf>(
150+
auto chunkedBuf = Aws::MakeUnique<AwsChunkedStreamBuf>(
151151
ALLOCATION_TAG, request.get(), originalBody);
152152
auto chunkedBody = std::shared_ptr<Aws::IOStream>(
153-
new Aws::IOStream(chunkedBuf.get()));
153+
new Aws::IOStream(chunkedBuf.release()));
154154

155155
request->AddContentBody(chunkedBody);
156156
return request;

tests/aws-cpp-sdk-core-tests/utils/stream/AwsChunkedStreamTest.cpp

Lines changed: 2 additions & 69 deletions
Original file line numberDiff line numberDiff line change
@@ -5,37 +5,16 @@
55
#include <aws/core/http/standard/StandardHttpRequest.h>
66
#include <aws/core/utils/crypto/CRC32.h>
77
#include <aws/core/utils/stream/AwsChunkedStream.h>
8-
#include <smithy/client/features/ChunkingInterceptor.h>
98
#include <aws/testing/AwsCppSdkGTestSuite.h>
109

1110
using namespace Aws;
1211
using namespace Aws::Http::Standard;
1312
using namespace Aws::Utils::Stream;
1413
using namespace Aws::Utils::Crypto;
1514

16-
const char* TEST_LOG_TAG = "AWS_CHUNKED_STREAM_TEST";
15+
class AwsChunkedStreamTest : public Aws::Testing::AwsCppSdkGTestSuite {};
1716

18-
class AwsChunkedStreamTest : public Aws::Testing::AwsCppSdkGTestSuite {
19-
protected:
20-
StandardHttpRequest CreateRequestWithChecksum(const std::string& url, const std::string& /* data */) {
21-
StandardHttpRequest request{Http::URI(Aws::String(url.c_str())), Http::HttpMethod::HTTP_GET};
22-
auto requestHash = Aws::MakeShared<CRC32>(TEST_LOG_TAG);
23-
request.SetRequestHash("crc32", requestHash);
24-
return request;
25-
}
26-
27-
std::string ReadEntireStream(Aws::IOStream& stream) {
28-
Aws::StringStream output;
29-
char buffer[100];
30-
while (stream.read(buffer, sizeof(buffer))) {
31-
output.write(buffer, stream.gcount());
32-
}
33-
if (stream.gcount() > 0) {
34-
output.write(buffer, stream.gcount());
35-
}
36-
return output.str().c_str();
37-
}
38-
};
17+
const char* TEST_LOG_TAG = "AWS_CHUNKED_STREAM_TEST";
3918

4019
TEST_F(AwsChunkedStreamTest, ChunkedStreamShouldWork) {
4120
StandardHttpRequest request{"www.elda.com/will", Http::HttpMethod::HTTP_GET};
@@ -118,49 +97,3 @@ TEST_F(AwsChunkedStreamTest, ShouldWorkOnEmptyStream) {
11897
auto encodedStr = firstRead.str();
11998
EXPECT_EQ("0\r\nx-amz-checksum-crc32:AAAAAA==\r\n\r\n", encodedStr);
12099
}
121-
122-
TEST_F(AwsChunkedStreamTest, ChunkingInterceptorShouldWork) {
123-
auto request = CreateRequestWithChecksum("www.elda.com/will", "1234567890123456789012345");
124-
std::shared_ptr<IOStream> inputStream = Aws::MakeShared<StringStream>(TEST_LOG_TAG, "1234567890123456789012345");
125-
auto chunkedBuf = Aws::MakeShared<smithy::client::features::AwsChunkedStreamBuf>(TEST_LOG_TAG, &request, inputStream, 10);
126-
Aws::IOStream chunkedStream(chunkedBuf.get());
127-
const auto encodedStr = ReadEntireStream(chunkedStream);
128-
auto expectedStreamWithChecksum = "A\r\n1234567890\r\nA\r\n1234567890\r\n5\r\n12345\r\n0\r\nx-amz-checksum-crc32:78DeVw==\r\n\r\n";
129-
EXPECT_EQ(expectedStreamWithChecksum, encodedStr);
130-
}
131-
132-
TEST_F(AwsChunkedStreamTest, ChunkingInterceptorShouldNotRequireTwoReadsOnSmallChunk) {
133-
auto request = CreateRequestWithChecksum("www.clemar.com/strohl", "12345");
134-
std::shared_ptr<IOStream> inputStream = Aws::MakeShared<StringStream>(TEST_LOG_TAG, "12345");
135-
auto chunkedBuf = Aws::MakeShared<smithy::client::features::AwsChunkedStreamBuf>(TEST_LOG_TAG, &request, inputStream, 100);
136-
Aws::IOStream chunkedStream(chunkedBuf.get());
137-
const auto encodedStr = ReadEntireStream(chunkedStream);
138-
auto expectedStreamWithChecksum = "5\r\n12345\r\n0\r\nx-amz-checksum-crc32:y/U6HA==\r\n\r\n";
139-
EXPECT_EQ(expectedStreamWithChecksum, encodedStr);
140-
}
141-
142-
TEST_F(AwsChunkedStreamTest, ChunkingInterceptorShouldWorkOnSmallBuffer) {
143-
auto request = CreateRequestWithChecksum("www.eugief.com/hesimay", "1234567890");
144-
std::shared_ptr<IOStream> inputStream = Aws::MakeShared<StringStream>(TEST_LOG_TAG, "1234567890");
145-
auto chunkedBuf = Aws::MakeShared<smithy::client::features::AwsChunkedStreamBuf>(TEST_LOG_TAG, &request, inputStream, 5);
146-
Aws::IOStream chunkedStream(chunkedBuf.get());
147-
char buffer[10];
148-
chunkedStream.read(buffer, sizeof(buffer));
149-
std::string firstRead(buffer, chunkedStream.gcount());
150-
EXPECT_EQ("5\r\n12345\r\n", firstRead);
151-
char buffer2[50];
152-
chunkedStream.read(buffer2, sizeof(buffer2));
153-
std::string secondRead(buffer2, chunkedStream.gcount());
154-
EXPECT_EQ("5\r\n67890\r\n0\r\nx-amz-checksum-crc32:Jh2u5Q==\r\n\r\n", secondRead);
155-
chunkedStream.read(buffer, sizeof(buffer));
156-
EXPECT_EQ(0, chunkedStream.gcount());
157-
}
158-
159-
TEST_F(AwsChunkedStreamTest, ChunkingInterceptorShouldWorkOnEmptyStream) {
160-
auto request = CreateRequestWithChecksum("www.nidia.com/juna", "");
161-
std::shared_ptr<IOStream> inputStream = Aws::MakeShared<StringStream>(TEST_LOG_TAG, "");
162-
auto chunkedBuf = Aws::MakeShared<smithy::client::features::AwsChunkedStreamBuf>(TEST_LOG_TAG, &request, inputStream, 5);
163-
Aws::IOStream chunkedStream(chunkedBuf.get());
164-
const auto encodedStr = ReadEntireStream(chunkedStream);
165-
EXPECT_EQ("0\r\nx-amz-checksum-crc32:AAAAAA==\r\n\r\n", encodedStr);
166-
}

0 commit comments

Comments
 (0)