Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(226)

Side by Side Diff: net/base/upload_data_stream_unittest.cc

Issue 10913179: net: Make UploadDataStream::Init() asynchronous. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: _ Created 8 years, 3 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
OLDNEW
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "net/base/upload_data_stream.h" 5 #include "net/base/upload_data_stream.h"
6 6
7 #include <vector> 7 #include <vector>
8 8
9 #include "base/basictypes.h" 9 #include "base/basictypes.h"
10 #include "base/bind.h" 10 #include "base/bind.h"
(...skipping 37 matching lines...) Expand 10 before | Expand all | Expand 10 after
48 void FileChangedHelper(const FilePath& file_path, 48 void FileChangedHelper(const FilePath& file_path,
49 const base::Time& time, 49 const base::Time& time,
50 bool error_expected); 50 bool error_expected);
51 51
52 scoped_refptr<UploadData> upload_data_; 52 scoped_refptr<UploadData> upload_data_;
53 }; 53 };
54 54
55 TEST_F(UploadDataStreamTest, EmptyUploadData) { 55 TEST_F(UploadDataStreamTest, EmptyUploadData) {
56 upload_data_->AppendBytes("", 0); 56 upload_data_->AppendBytes("", 0);
57 scoped_ptr<UploadDataStream> stream(new UploadDataStream(upload_data_)); 57 scoped_ptr<UploadDataStream> stream(new UploadDataStream(upload_data_));
58 ASSERT_EQ(OK, stream->Init()); 58 ASSERT_EQ(OK, stream->InitSync());
59 EXPECT_TRUE(stream->IsInMemory()); 59 EXPECT_TRUE(stream->IsInMemory());
60 ASSERT_TRUE(stream.get()); 60 ASSERT_TRUE(stream.get());
61 EXPECT_EQ(0U, stream->size()); 61 EXPECT_EQ(0U, stream->size());
62 EXPECT_EQ(0U, stream->position()); 62 EXPECT_EQ(0U, stream->position());
63 EXPECT_TRUE(stream->IsEOF()); 63 EXPECT_TRUE(stream->IsEOF());
64 } 64 }
65 65
66 TEST_F(UploadDataStreamTest, ConsumeAllBytes) { 66 TEST_F(UploadDataStreamTest, ConsumeAllBytes) {
67 upload_data_->AppendBytes(kTestData, kTestDataSize); 67 upload_data_->AppendBytes(kTestData, kTestDataSize);
68 scoped_ptr<UploadDataStream> stream(new UploadDataStream(upload_data_)); 68 scoped_ptr<UploadDataStream> stream(new UploadDataStream(upload_data_));
69 ASSERT_EQ(OK, stream->Init()); 69 ASSERT_EQ(OK, stream->InitSync());
70 EXPECT_TRUE(stream->IsInMemory()); 70 EXPECT_TRUE(stream->IsInMemory());
71 ASSERT_TRUE(stream.get()); 71 ASSERT_TRUE(stream.get());
72 EXPECT_EQ(kTestDataSize, stream->size()); 72 EXPECT_EQ(kTestDataSize, stream->size());
73 EXPECT_EQ(0U, stream->position()); 73 EXPECT_EQ(0U, stream->position());
74 EXPECT_FALSE(stream->IsEOF()); 74 EXPECT_FALSE(stream->IsEOF());
75 scoped_refptr<IOBuffer> buf = new IOBuffer(kTestBufferSize); 75 scoped_refptr<IOBuffer> buf = new IOBuffer(kTestBufferSize);
76 while (!stream->IsEOF()) { 76 while (!stream->IsEOF()) {
77 int bytes_read = stream->Read(buf, kTestBufferSize); 77 int bytes_read = stream->Read(buf, kTestBufferSize);
78 ASSERT_LE(0, bytes_read); // Not an error. 78 ASSERT_LE(0, bytes_read); // Not an error.
79 } 79 }
80 EXPECT_EQ(kTestDataSize, stream->position()); 80 EXPECT_EQ(kTestDataSize, stream->position());
81 ASSERT_TRUE(stream->IsEOF()); 81 ASSERT_TRUE(stream->IsEOF());
82 } 82 }
83 83
84 TEST_F(UploadDataStreamTest, File) { 84 TEST_F(UploadDataStreamTest, File) {
85 FilePath temp_file_path; 85 FilePath temp_file_path;
86 ASSERT_TRUE(file_util::CreateTemporaryFile(&temp_file_path)); 86 ASSERT_TRUE(file_util::CreateTemporaryFile(&temp_file_path));
87 ASSERT_EQ(static_cast<int>(kTestDataSize), 87 ASSERT_EQ(static_cast<int>(kTestDataSize),
88 file_util::WriteFile(temp_file_path, kTestData, kTestDataSize)); 88 file_util::WriteFile(temp_file_path, kTestData, kTestDataSize));
89 89
90 std::vector<UploadElement> elements; 90 std::vector<UploadElement> elements;
91 UploadElement element; 91 UploadElement element;
92 element.SetToFilePath(temp_file_path); 92 element.SetToFilePath(temp_file_path);
93 elements.push_back(element); 93 elements.push_back(element);
94 upload_data_->SetElements(elements); 94 upload_data_->SetElements(elements);
95 95
96 scoped_ptr<UploadDataStream> stream(new UploadDataStream(upload_data_)); 96 scoped_ptr<UploadDataStream> stream(new UploadDataStream(upload_data_));
97 ASSERT_EQ(OK, stream->Init()); 97 ASSERT_EQ(OK, stream->InitSync());
98 EXPECT_FALSE(stream->IsInMemory()); 98 EXPECT_FALSE(stream->IsInMemory());
99 ASSERT_TRUE(stream.get()); 99 ASSERT_TRUE(stream.get());
100 EXPECT_EQ(kTestDataSize, stream->size()); 100 EXPECT_EQ(kTestDataSize, stream->size());
101 EXPECT_EQ(0U, stream->position()); 101 EXPECT_EQ(0U, stream->position());
102 EXPECT_FALSE(stream->IsEOF()); 102 EXPECT_FALSE(stream->IsEOF());
103 scoped_refptr<IOBuffer> buf = new IOBuffer(kTestBufferSize); 103 scoped_refptr<IOBuffer> buf = new IOBuffer(kTestBufferSize);
104 while (!stream->IsEOF()) { 104 while (!stream->IsEOF()) {
105 int bytes_read = stream->Read(buf, kTestBufferSize); 105 int bytes_read = stream->Read(buf, kTestBufferSize);
106 ASSERT_LE(0, bytes_read); // Not an error. 106 ASSERT_LE(0, bytes_read); // Not an error.
107 } 107 }
(...skipping 12 matching lines...) Expand all
120 UploadFileElementReader::ScopedOverridingContentLengthForTests 120 UploadFileElementReader::ScopedOverridingContentLengthForTests
121 overriding_content_length(kFakeSize); 121 overriding_content_length(kFakeSize);
122 122
123 std::vector<UploadElement> elements; 123 std::vector<UploadElement> elements;
124 UploadElement element; 124 UploadElement element;
125 element.SetToFilePath(temp_file_path); 125 element.SetToFilePath(temp_file_path);
126 elements.push_back(element); 126 elements.push_back(element);
127 upload_data_->SetElements(elements); 127 upload_data_->SetElements(elements);
128 128
129 scoped_ptr<UploadDataStream> stream(new UploadDataStream(upload_data_)); 129 scoped_ptr<UploadDataStream> stream(new UploadDataStream(upload_data_));
130 ASSERT_EQ(OK, stream->Init()); 130 ASSERT_EQ(OK, stream->InitSync());
131 EXPECT_FALSE(stream->IsInMemory()); 131 EXPECT_FALSE(stream->IsInMemory());
132 ASSERT_TRUE(stream.get()); 132 ASSERT_TRUE(stream.get());
133 EXPECT_EQ(kFakeSize, stream->size()); 133 EXPECT_EQ(kFakeSize, stream->size());
134 EXPECT_EQ(0U, stream->position()); 134 EXPECT_EQ(0U, stream->position());
135 EXPECT_FALSE(stream->IsEOF()); 135 EXPECT_FALSE(stream->IsEOF());
136 uint64 read_counter = 0; 136 uint64 read_counter = 0;
137 scoped_refptr<IOBuffer> buf = new IOBuffer(kTestBufferSize); 137 scoped_refptr<IOBuffer> buf = new IOBuffer(kTestBufferSize);
138 while (!stream->IsEOF()) { 138 while (!stream->IsEOF()) {
139 int bytes_read = stream->Read(buf, kTestBufferSize); 139 int bytes_read = stream->Read(buf, kTestBufferSize);
140 ASSERT_LE(0, bytes_read); // Not an error. 140 ASSERT_LE(0, bytes_read); // Not an error.
(...skipping 16 matching lines...) Expand all
157 157
158 const uint64 kFileRangeOffset = 1; 158 const uint64 kFileRangeOffset = 1;
159 const uint64 kFileRangeLength = 4; 159 const uint64 kFileRangeLength = 4;
160 upload_data_->AppendFileRange( 160 upload_data_->AppendFileRange(
161 temp_file_path, kFileRangeOffset, kFileRangeLength, base::Time()); 161 temp_file_path, kFileRangeOffset, kFileRangeLength, base::Time());
162 162
163 upload_data_->AppendBytes(kTestData, kTestDataSize); 163 upload_data_->AppendBytes(kTestData, kTestDataSize);
164 164
165 const uint64 kStreamSize = kTestDataSize + kFileRangeLength; 165 const uint64 kStreamSize = kTestDataSize + kFileRangeLength;
166 scoped_ptr<UploadDataStream> stream(new UploadDataStream(upload_data_)); 166 scoped_ptr<UploadDataStream> stream(new UploadDataStream(upload_data_));
167 ASSERT_EQ(OK, stream->Init()); 167 ASSERT_EQ(OK, stream->InitSync());
168 EXPECT_FALSE(stream->IsInMemory()); 168 EXPECT_FALSE(stream->IsInMemory());
169 ASSERT_TRUE(stream.get()); 169 ASSERT_TRUE(stream.get());
170 EXPECT_EQ(kStreamSize, stream->size()); 170 EXPECT_EQ(kStreamSize, stream->size());
171 EXPECT_EQ(0U, stream->position()); 171 EXPECT_EQ(0U, stream->position());
172 EXPECT_FALSE(stream->IsEOF()); 172 EXPECT_FALSE(stream->IsEOF());
173 scoped_refptr<IOBuffer> buf = new IOBuffer(kTestBufferSize); 173 scoped_refptr<IOBuffer> buf = new IOBuffer(kTestBufferSize);
174 while (!stream->IsEOF()) { 174 while (!stream->IsEOF()) {
175 int bytes_read = stream->Read(buf, kTestBufferSize); 175 int bytes_read = stream->Read(buf, kTestBufferSize);
176 ASSERT_LE(0, bytes_read); // Not an error. 176 ASSERT_LE(0, bytes_read); // Not an error.
177 } 177 }
178 EXPECT_EQ(kStreamSize, stream->position()); 178 EXPECT_EQ(kStreamSize, stream->position());
179 ASSERT_TRUE(stream->IsEOF()); 179 ASSERT_TRUE(stream->IsEOF());
180 180
181 file_util::Delete(temp_file_path, false); 181 file_util::Delete(temp_file_path, false);
182 } 182 }
183 183
184 TEST_F(UploadDataStreamTest, Chunk) { 184 TEST_F(UploadDataStreamTest, Chunk) {
185 upload_data_->set_is_chunked(true); 185 upload_data_->set_is_chunked(true);
186 upload_data_->AppendChunk(kTestData, kTestDataSize, false); 186 upload_data_->AppendChunk(kTestData, kTestDataSize, false);
187 upload_data_->AppendChunk(kTestData, kTestDataSize, true); 187 upload_data_->AppendChunk(kTestData, kTestDataSize, true);
188 188
189 const uint64 kStreamSize = kTestDataSize*2; 189 const uint64 kStreamSize = kTestDataSize*2;
190 scoped_ptr<UploadDataStream> stream(new UploadDataStream(upload_data_)); 190 scoped_ptr<UploadDataStream> stream(new UploadDataStream(upload_data_));
191 ASSERT_EQ(OK, stream->Init()); 191 ASSERT_EQ(OK, stream->InitSync());
192 EXPECT_FALSE(stream->IsInMemory()); 192 EXPECT_FALSE(stream->IsInMemory());
193 ASSERT_TRUE(stream.get()); 193 ASSERT_TRUE(stream.get());
194 EXPECT_EQ(0U, stream->size()); // Content-Length is 0 for chunked data. 194 EXPECT_EQ(0U, stream->size()); // Content-Length is 0 for chunked data.
195 EXPECT_EQ(0U, stream->position()); 195 EXPECT_EQ(0U, stream->position());
196 EXPECT_FALSE(stream->IsEOF()); 196 EXPECT_FALSE(stream->IsEOF());
197 scoped_refptr<IOBuffer> buf = new IOBuffer(kTestBufferSize); 197 scoped_refptr<IOBuffer> buf = new IOBuffer(kTestBufferSize);
198 while (!stream->IsEOF()) { 198 while (!stream->IsEOF()) {
199 int bytes_read = stream->Read(buf, kTestBufferSize); 199 int bytes_read = stream->Read(buf, kTestBufferSize);
200 ASSERT_LE(0, bytes_read); // Not an error. 200 ASSERT_LE(0, bytes_read); // Not an error.
201 } 201 }
202 EXPECT_EQ(kStreamSize, stream->position()); 202 EXPECT_EQ(kStreamSize, stream->position());
203 ASSERT_TRUE(stream->IsEOF()); 203 ASSERT_TRUE(stream->IsEOF());
204 } 204 }
205 205
206 void UploadDataStreamTest::FileChangedHelper(const FilePath& file_path, 206 void UploadDataStreamTest::FileChangedHelper(const FilePath& file_path,
207 const base::Time& time, 207 const base::Time& time,
208 bool error_expected) { 208 bool error_expected) {
209 std::vector<UploadElement> elements; 209 std::vector<UploadElement> elements;
210 UploadElement element; 210 UploadElement element;
211 element.SetToFilePathRange(file_path, 1, 2, time); 211 element.SetToFilePathRange(file_path, 1, 2, time);
212 elements.push_back(element); 212 elements.push_back(element);
213 // Don't use upload_data_ here, as this function is called twice, and 213 // Don't use upload_data_ here, as this function is called twice, and
214 // reusing upload_data_ is wrong. 214 // reusing upload_data_ is wrong.
215 scoped_refptr<UploadData> upload_data(new UploadData); 215 scoped_refptr<UploadData> upload_data(new UploadData);
216 upload_data->SetElements(elements); 216 upload_data->SetElements(elements);
217 217
218 scoped_ptr<UploadDataStream> stream(new UploadDataStream(upload_data)); 218 scoped_ptr<UploadDataStream> stream(new UploadDataStream(upload_data));
219 int error_code = stream->Init(); 219 int error_code = stream->InitSync();
220 if (error_expected) 220 if (error_expected)
221 ASSERT_EQ(ERR_UPLOAD_FILE_CHANGED, error_code); 221 ASSERT_EQ(ERR_UPLOAD_FILE_CHANGED, error_code);
222 else 222 else
223 ASSERT_EQ(OK, error_code); 223 ASSERT_EQ(OK, error_code);
224 } 224 }
225 225
226 TEST_F(UploadDataStreamTest, FileChanged) { 226 TEST_F(UploadDataStreamTest, FileChanged) {
227 FilePath temp_file_path; 227 FilePath temp_file_path;
228 ASSERT_TRUE(file_util::CreateTemporaryFile(&temp_file_path)); 228 ASSERT_TRUE(file_util::CreateTemporaryFile(&temp_file_path));
229 ASSERT_EQ(static_cast<int>(kTestDataSize), 229 ASSERT_EQ(static_cast<int>(kTestDataSize),
(...skipping 22 matching lines...) Expand all
252 // Prepare |upload_data_| that contains a file. 252 // Prepare |upload_data_| that contains a file.
253 std::vector<UploadElement> elements; 253 std::vector<UploadElement> elements;
254 UploadElement element; 254 UploadElement element;
255 element.SetToFilePath(temp_file_path); 255 element.SetToFilePath(temp_file_path);
256 elements.push_back(element); 256 elements.push_back(element);
257 upload_data_->SetElements(elements); 257 upload_data_->SetElements(elements);
258 258
259 // Confirm that the file is read properly. 259 // Confirm that the file is read properly.
260 { 260 {
261 UploadDataStream stream(upload_data_); 261 UploadDataStream stream(upload_data_);
262 ASSERT_EQ(OK, stream.Init()); 262 ASSERT_EQ(OK, stream.InitSync());
263 EXPECT_EQ(kTestDataSize, stream.size()); 263 EXPECT_EQ(kTestDataSize, stream.size());
264 EXPECT_EQ(kTestData, ReadFromUploadDataStream(&stream)); 264 EXPECT_EQ(kTestData, ReadFromUploadDataStream(&stream));
265 } 265 }
266 266
267 // Reuse |upload_data_| for another UploadDataStream, and confirm that the 267 // Reuse |upload_data_| for another UploadDataStream, and confirm that the
268 // file is read properly. 268 // file is read properly.
269 { 269 {
270 UploadDataStream stream(upload_data_); 270 UploadDataStream stream(upload_data_);
271 ASSERT_EQ(OK, stream.Init()); 271 ASSERT_EQ(OK, stream.InitSync());
272 EXPECT_EQ(kTestDataSize, stream.size()); 272 EXPECT_EQ(kTestDataSize, stream.size());
273 EXPECT_EQ(kTestData, ReadFromUploadDataStream(&stream)); 273 EXPECT_EQ(kTestData, ReadFromUploadDataStream(&stream));
274 } 274 }
275 275
276 file_util::Delete(temp_file_path, false); 276 file_util::Delete(temp_file_path, false);
277 } 277 }
278 278
279 } // namespace net 279 } // namespace net
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698