Index: net/base/chunked_upload_data_stream_unittest.cc |
diff --git a/net/base/chunked_upload_data_stream_unittest.cc b/net/base/chunked_upload_data_stream_unittest.cc |
deleted file mode 100644 |
index 334e9a39428a16a6c380c771836adbf4ed82233a..0000000000000000000000000000000000000000 |
--- a/net/base/chunked_upload_data_stream_unittest.cc |
+++ /dev/null |
@@ -1,308 +0,0 @@ |
-// Copyright 2014 The Chromium Authors. All rights reserved. |
-// Use of this source code is governed by a BSD-style license that can be |
-// found in the LICENSE file. |
- |
-#include "net/base/chunked_upload_data_stream.h" |
- |
-#include <string> |
- |
-#include "base/memory/scoped_ptr.h" |
-#include "net/base/io_buffer.h" |
-#include "net/base/net_errors.h" |
-#include "net/base/test_completion_callback.h" |
-#include "net/base/upload_data_stream.h" |
-#include "testing/gtest/include/gtest/gtest.h" |
- |
-namespace net { |
- |
-namespace { |
- |
-const char kTestData[] = "0123456789"; |
-const size_t kTestDataSize = arraysize(kTestData) - 1; |
-const size_t kTestBufferSize = 1 << 14; // 16KB. |
- |
-} // namespace |
- |
-// Reads data once from the upload data stream, and returns the data as string. |
-// Expects the read to succeed synchronously. |
-std::string ReadSync(UploadDataStream* stream, int buffer_size) { |
- scoped_refptr<IOBuffer> buf = new IOBuffer(buffer_size); |
- int result = stream->Read(buf.get(), |
- buffer_size, |
- TestCompletionCallback().callback()); |
- EXPECT_GE(result, 0); |
- return std::string(buf->data(), result); |
-} |
- |
-// Check the case data is added after the first read attempt. |
-TEST(ChunkedUploadDataStreamTest, AppendOnce) { |
- ChunkedUploadDataStream stream(0); |
- |
- ASSERT_EQ(OK, stream.Init(TestCompletionCallback().callback())); |
- EXPECT_FALSE(stream.IsInMemory()); |
- EXPECT_EQ(0u, stream.size()); // Content-Length is 0 for chunked data. |
- EXPECT_EQ(0u, stream.position()); |
- EXPECT_FALSE(stream.IsEOF()); |
- |
- TestCompletionCallback callback; |
- scoped_refptr<IOBuffer> buf = new IOBuffer(kTestBufferSize); |
- int result = stream.Read(buf.get(), kTestBufferSize, callback.callback()); |
- ASSERT_EQ(ERR_IO_PENDING, result); |
- |
- stream.AppendData(kTestData, kTestDataSize, true); |
- int read = callback.WaitForResult(); |
- ASSERT_GE(read, 0); |
- EXPECT_EQ(kTestData, std::string(buf->data(), read)); |
- EXPECT_EQ(0u, stream.size()); // Content-Length is 0 for chunked data. |
- EXPECT_EQ(kTestDataSize, stream.position()); |
- EXPECT_TRUE(stream.IsEOF()); |
-} |
- |
-TEST(ChunkedUploadDataStreamTest, AppendOnceBeforeRead) { |
- ChunkedUploadDataStream stream(0); |
- |
- ASSERT_EQ(OK, stream.Init(TestCompletionCallback().callback())); |
- EXPECT_FALSE(stream.IsInMemory()); |
- EXPECT_EQ(0u, stream.size()); // Content-Length is 0 for chunked data. |
- EXPECT_EQ(0u, stream.position()); |
- EXPECT_FALSE(stream.IsEOF()); |
- |
- stream.AppendData(kTestData, kTestDataSize, true); |
- EXPECT_EQ(0u, stream.size()); // Content-Length is 0 for chunked data. |
- EXPECT_EQ(0u, stream.position()); |
- EXPECT_FALSE(stream.IsEOF()); |
- |
- std::string data = ReadSync(&stream, kTestBufferSize); |
- EXPECT_EQ(kTestData, data); |
- EXPECT_EQ(0u, stream.size()); // Content-Length is 0 for chunked data. |
- EXPECT_EQ(kTestDataSize, stream.position()); |
- EXPECT_TRUE(stream.IsEOF()); |
-} |
- |
-TEST(ChunkedUploadDataStreamTest, AppendOnceBeforeInit) { |
- ChunkedUploadDataStream stream(0); |
- |
- stream.AppendData(kTestData, kTestDataSize, true); |
- ASSERT_EQ(OK, stream.Init(TestCompletionCallback().callback())); |
- EXPECT_FALSE(stream.IsInMemory()); |
- EXPECT_EQ(0u, stream.size()); // Content-Length is 0 for chunked data. |
- EXPECT_EQ(0u, stream.position()); |
- EXPECT_FALSE(stream.IsEOF()); |
- |
- std::string data = ReadSync(&stream, kTestBufferSize); |
- EXPECT_EQ(kTestData, data); |
- EXPECT_EQ(0u, stream.size()); // Content-Length is 0 for chunked data. |
- EXPECT_EQ(kTestDataSize, stream.position()); |
- EXPECT_TRUE(stream.IsEOF()); |
-} |
- |
-TEST(ChunkedUploadDataStreamTest, MultipleAppends) { |
- ChunkedUploadDataStream stream(0); |
- |
- ASSERT_EQ(OK, stream.Init(TestCompletionCallback().callback())); |
- EXPECT_FALSE(stream.IsInMemory()); |
- EXPECT_EQ(0u, stream.size()); |
- EXPECT_EQ(0u, stream.position()); |
- EXPECT_FALSE(stream.IsEOF()); |
- |
- TestCompletionCallback callback; |
- scoped_refptr<IOBuffer> buf = new IOBuffer(kTestBufferSize); |
- for (size_t i = 0; i < kTestDataSize; ++i) { |
- EXPECT_EQ(0u, stream.size()); // Content-Length is 0 for chunked data. |
- EXPECT_EQ(i, stream.position()); |
- ASSERT_FALSE(stream.IsEOF()); |
- int bytes_read = stream.Read(buf.get(), |
- kTestBufferSize, |
- callback.callback()); |
- ASSERT_EQ(ERR_IO_PENDING, bytes_read); |
- stream.AppendData(&kTestData[i], 1, i == kTestDataSize - 1); |
- ASSERT_EQ(1, callback.WaitForResult()); |
- EXPECT_EQ(kTestData[i], buf->data()[0]); |
- } |
- |
- EXPECT_EQ(0u, stream.size()); // Content-Length is 0 for chunked data. |
- EXPECT_EQ(kTestDataSize, stream.position()); |
- ASSERT_TRUE(stream.IsEOF()); |
-} |
- |
-TEST(ChunkedUploadDataStreamTest, MultipleAppendsBetweenReads) { |
- ChunkedUploadDataStream stream(0); |
- |
- ASSERT_EQ(OK, stream.Init(TestCompletionCallback().callback())); |
- EXPECT_FALSE(stream.IsInMemory()); |
- EXPECT_EQ(0u, stream.size()); // Content-Length is 0 for chunked data. |
- EXPECT_EQ(0u, stream.position()); |
- EXPECT_FALSE(stream.IsEOF()); |
- |
- scoped_refptr<IOBuffer> buf = new IOBuffer(kTestBufferSize); |
- for (size_t i = 0; i < kTestDataSize; ++i) { |
- EXPECT_EQ(i, stream.position()); |
- ASSERT_FALSE(stream.IsEOF()); |
- stream.AppendData(&kTestData[i], 1, i == kTestDataSize - 1); |
- int bytes_read = stream.Read(buf.get(), |
- kTestBufferSize, |
- TestCompletionCallback().callback()); |
- ASSERT_EQ(1, bytes_read); |
- EXPECT_EQ(kTestData[i], buf->data()[0]); |
- } |
- |
- EXPECT_EQ(kTestDataSize, stream.position()); |
- ASSERT_TRUE(stream.IsEOF()); |
-} |
- |
-// Checks that multiple reads can be merged. |
-TEST(ChunkedUploadDataStreamTest, MultipleAppendsBeforeInit) { |
- ChunkedUploadDataStream stream(0); |
- stream.AppendData(kTestData, 1, false); |
- stream.AppendData(kTestData + 1, 1, false); |
- stream.AppendData(kTestData + 2, kTestDataSize - 2, true); |
- |
- ASSERT_EQ(OK, stream.Init(TestCompletionCallback().callback())); |
- EXPECT_FALSE(stream.IsInMemory()); |
- EXPECT_EQ(0u, stream.size()); // Content-Length is 0 for chunked data. |
- EXPECT_EQ(0u, stream.position()); |
- EXPECT_FALSE(stream.IsEOF()); |
- |
- std::string data = ReadSync(&stream, kTestBufferSize); |
- EXPECT_EQ(kTestData, data); |
- EXPECT_EQ(kTestDataSize, stream.position()); |
- ASSERT_TRUE(stream.IsEOF()); |
-} |
- |
-TEST(ChunkedUploadDataStreamTest, MultipleReads) { |
- // Use a read size different from the write size to test bounds checking. |
- const size_t kReadSize = kTestDataSize + 3; |
- |
- ChunkedUploadDataStream stream(0); |
- stream.AppendData(kTestData, kTestDataSize, false); |
- stream.AppendData(kTestData, kTestDataSize, false); |
- stream.AppendData(kTestData, kTestDataSize, false); |
- stream.AppendData(kTestData, kTestDataSize, true); |
- |
- ASSERT_EQ(OK, stream.Init(TestCompletionCallback().callback())); |
- EXPECT_FALSE(stream.IsInMemory()); |
- EXPECT_EQ(0u, stream.size()); // Content-Length is 0 for chunked data. |
- EXPECT_EQ(0u, stream.position()); |
- EXPECT_FALSE(stream.IsEOF()); |
- |
- std::string data = ReadSync(&stream, kReadSize); |
- EXPECT_EQ("0123456789012", data); |
- EXPECT_EQ(kReadSize, stream.position()); |
- EXPECT_FALSE(stream.IsEOF()); |
- |
- data = ReadSync(&stream, kReadSize); |
- EXPECT_EQ("3456789012345", data); |
- EXPECT_EQ(2 * kReadSize, stream.position()); |
- EXPECT_FALSE(stream.IsEOF()); |
- |
- data = ReadSync(&stream, kReadSize); |
- EXPECT_EQ("6789012345678", data); |
- EXPECT_EQ(3 * kReadSize, stream.position()); |
- EXPECT_FALSE(stream.IsEOF()); |
- |
- data = ReadSync(&stream, kReadSize); |
- EXPECT_EQ("9", data); |
- EXPECT_EQ(4 * kTestDataSize, stream.position()); |
- EXPECT_TRUE(stream.IsEOF()); |
-} |
- |
-TEST(ChunkedUploadDataStreamTest, EmptyUpload) { |
- ChunkedUploadDataStream stream(0); |
- |
- ASSERT_EQ(OK, stream.Init(TestCompletionCallback().callback())); |
- EXPECT_FALSE(stream.IsInMemory()); |
- EXPECT_EQ(0u, stream.size()); // Content-Length is 0 for chunked data. |
- EXPECT_EQ(0u, stream.position()); |
- EXPECT_FALSE(stream.IsEOF()); |
- |
- TestCompletionCallback callback; |
- scoped_refptr<IOBuffer> buf = new IOBuffer(kTestBufferSize); |
- int result = stream.Read(buf.get(), kTestBufferSize, callback.callback()); |
- ASSERT_EQ(ERR_IO_PENDING, result); |
- |
- stream.AppendData(NULL, 0, true); |
- int read = callback.WaitForResult(); |
- EXPECT_EQ(0, read); |
- EXPECT_EQ(0u, stream.position()); |
- EXPECT_TRUE(stream.IsEOF()); |
-} |
- |
-TEST(ChunkedUploadDataStreamTest, EmptyUploadEndedBeforeInit) { |
- ChunkedUploadDataStream stream(0); |
- stream.AppendData(NULL, 0, true); |
- |
- ASSERT_EQ(OK, stream.Init(TestCompletionCallback().callback())); |
- EXPECT_FALSE(stream.IsInMemory()); |
- EXPECT_EQ(0u, stream.size()); // Content-Length is 0 for chunked data. |
- EXPECT_EQ(0u, stream.position()); |
- EXPECT_FALSE(stream.IsEOF()); |
- |
- std::string data = ReadSync(&stream, kTestBufferSize); |
- ASSERT_EQ("", data); |
- EXPECT_EQ(0u, stream.position()); |
- EXPECT_TRUE(stream.IsEOF()); |
-} |
- |
-TEST(ChunkedUploadDataStreamTest, RewindAfterComplete) { |
- ChunkedUploadDataStream stream(0); |
- stream.AppendData(kTestData, 1, false); |
- stream.AppendData(kTestData + 1, kTestDataSize - 1, true); |
- |
- ASSERT_EQ(OK, stream.Init(TestCompletionCallback().callback())); |
- EXPECT_FALSE(stream.IsInMemory()); |
- EXPECT_EQ(0u, stream.size()); // Content-Length is 0 for chunked data. |
- EXPECT_EQ(0u, stream.position()); |
- EXPECT_FALSE(stream.IsEOF()); |
- |
- std::string data = ReadSync(&stream, kTestBufferSize); |
- EXPECT_EQ(kTestData, data); |
- EXPECT_EQ(kTestDataSize, stream.position()); |
- ASSERT_TRUE(stream.IsEOF()); |
- |
- // Rewind stream and repeat. |
- ASSERT_EQ(OK, stream.Init(TestCompletionCallback().callback())); |
- EXPECT_FALSE(stream.IsInMemory()); |
- EXPECT_EQ(0u, stream.size()); // Content-Length is 0 for chunked data. |
- EXPECT_EQ(0u, stream.position()); |
- EXPECT_FALSE(stream.IsEOF()); |
- |
- data = ReadSync(&stream, kTestBufferSize); |
- EXPECT_EQ(kTestData, data); |
- EXPECT_EQ(kTestDataSize, stream.position()); |
- ASSERT_TRUE(stream.IsEOF()); |
-} |
- |
-TEST(ChunkedUploadDataStreamTest, RewindWhileReading) { |
- ChunkedUploadDataStream stream(0); |
- |
- ASSERT_EQ(OK, stream.Init(TestCompletionCallback().callback())); |
- EXPECT_FALSE(stream.IsInMemory()); |
- EXPECT_EQ(0u, stream.size()); // Content-Length is 0 for chunked data. |
- EXPECT_EQ(0u, stream.position()); |
- EXPECT_FALSE(stream.IsEOF()); |
- |
- TestCompletionCallback callback; |
- scoped_refptr<IOBuffer> buf = new IOBuffer(kTestBufferSize); |
- int result = stream.Read(buf.get(), kTestBufferSize, callback.callback()); |
- ASSERT_EQ(ERR_IO_PENDING, result); |
- |
- ASSERT_EQ(OK, stream.Init(TestCompletionCallback().callback())); |
- EXPECT_FALSE(stream.IsInMemory()); |
- EXPECT_EQ(0u, stream.size()); // Content-Length is 0 for chunked data. |
- EXPECT_EQ(0u, stream.position()); |
- EXPECT_FALSE(stream.IsEOF()); |
- |
- // Adding data now should not result in calling the original read callback, |
- // since the stream was re-initialized for reuse, which cancels all pending |
- // reads. |
- stream.AppendData(kTestData, kTestDataSize, true); |
- EXPECT_FALSE(callback.have_result()); |
- |
- std::string data = ReadSync(&stream, kTestBufferSize); |
- EXPECT_EQ(kTestData, data); |
- EXPECT_EQ(kTestDataSize, stream.position()); |
- ASSERT_TRUE(stream.IsEOF()); |
- EXPECT_FALSE(callback.have_result()); |
-} |
- |
-} // namespace net |