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

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: changed argument order 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
« no previous file with comments | « net/base/upload_data_stream.cc ('k') | net/base/upload_element_reader.h » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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"
11 #include "base/file_path.h" 11 #include "base/file_path.h"
12 #include "base/file_util.h" 12 #include "base/file_util.h"
13 #include "base/memory/scoped_ptr.h" 13 #include "base/memory/scoped_ptr.h"
14 #include "base/message_loop.h" 14 #include "base/message_loop.h"
15 #include "base/time.h" 15 #include "base/time.h"
16 #include "net/base/io_buffer.h" 16 #include "net/base/io_buffer.h"
17 #include "net/base/net_errors.h" 17 #include "net/base/net_errors.h"
18 #include "net/base/upload_data.h" 18 #include "net/base/upload_data.h"
19 #include "net/base/upload_file_element_reader.h" 19 #include "net/base/upload_file_element_reader.h"
20 #include "testing/gmock/include/gmock/gmock.h"
20 #include "testing/gtest/include/gtest/gtest.h" 21 #include "testing/gtest/include/gtest/gtest.h"
21 #include "testing/platform_test.h" 22 #include "testing/platform_test.h"
22 23
24 using ::testing::DoAll;
25 using ::testing::Invoke;
26 using ::testing::Return;
27 using ::testing::_;
28
23 namespace net { 29 namespace net {
24 30
25 namespace { 31 namespace {
26 32
27 const char kTestData[] = "0123456789"; 33 const char kTestData[] = "0123456789";
28 const size_t kTestDataSize = arraysize(kTestData) - 1; 34 const size_t kTestDataSize = arraysize(kTestData) - 1;
29 const size_t kTestBufferSize = 1 << 14; // 16KB. 35 const size_t kTestBufferSize = 1 << 14; // 16KB.
30 36
31 // Reads data from the upload data stream, and returns the data as string. 37 // Reads data from the upload data stream, and returns the data as string.
32 std::string ReadFromUploadDataStream(UploadDataStream* stream) { 38 std::string ReadFromUploadDataStream(UploadDataStream* stream) {
33 std::string data_read; 39 std::string data_read;
34 scoped_refptr<IOBuffer> buf = new IOBuffer(kTestBufferSize); 40 scoped_refptr<IOBuffer> buf = new IOBuffer(kTestBufferSize);
35 while (!stream->IsEOF()) { 41 while (!stream->IsEOF()) {
36 const int bytes_read = stream->Read(buf, kTestBufferSize); 42 const int bytes_read = stream->Read(buf, kTestBufferSize);
37 data_read.append(buf->data(), bytes_read); 43 data_read.append(buf->data(), bytes_read);
38 } 44 }
39 return data_read; 45 return data_read;
40 } 46 }
41 47
48 // A mock class of UploadElementReader.
49 class MockUploadElementReader : public UploadElementReader {
50 public:
51 MockUploadElementReader() : init_result_(OK) {}
52 virtual ~MockUploadElementReader() {}
53
54 MOCK_METHOD1(Init, int(const CompletionCallback& callback));
55 MOCK_CONST_METHOD0(GetContentLength, uint64());
56 MOCK_CONST_METHOD0(BytesRemaining, uint64());
57 MOCK_CONST_METHOD0(IsInMemory, bool());
58 MOCK_METHOD2(ReadSync, int(char* buf, int buf_length));
59
60 // Sets expectation to return the specified result from Init() asynchronously.
61 void SetAsyncInitExpectation(int result) {
62 init_result_ = result;
63 EXPECT_CALL(*this, Init(_))
64 .WillOnce(DoAll(Invoke(this, &MockUploadElementReader::OnInit),
65 Return(ERR_IO_PENDING)));
66 }
67
68 private:
69 void OnInit(const CompletionCallback& callback) {
70 MessageLoop::current()->PostTask(FROM_HERE,
71 base::Bind(callback, init_result_));
72 }
73
74 // Result value returned from Init().
75 int init_result_;
76 };
77
78 // A mock CompletionCallback.
79 class MockCompletionCallback {
80 public:
81 MOCK_METHOD1(Run, void(int result));
82
83 CompletionCallback CreateCallback() {
84 return base::Bind(&MockCompletionCallback::Run, base::Unretained(this));
85 }
86 };
87
42 } // namespace 88 } // namespace
43 89
44 class UploadDataStreamTest : public PlatformTest { 90 class UploadDataStreamTest : public PlatformTest {
45 public: 91 public:
46 UploadDataStreamTest() : upload_data_(new UploadData) { } 92 UploadDataStreamTest() : upload_data_(new UploadData) { }
47 93
48 void FileChangedHelper(const FilePath& file_path, 94 void FileChangedHelper(const FilePath& file_path,
49 const base::Time& time, 95 const base::Time& time,
50 bool error_expected); 96 bool error_expected);
51 97
52 scoped_refptr<UploadData> upload_data_; 98 scoped_refptr<UploadData> upload_data_;
53 }; 99 };
54 100
55 TEST_F(UploadDataStreamTest, EmptyUploadData) { 101 TEST_F(UploadDataStreamTest, EmptyUploadData) {
56 upload_data_->AppendBytes("", 0); 102 upload_data_->AppendBytes("", 0);
57 scoped_ptr<UploadDataStream> stream(new UploadDataStream(upload_data_)); 103 scoped_ptr<UploadDataStream> stream(new UploadDataStream(upload_data_));
58 ASSERT_EQ(OK, stream->Init()); 104 ASSERT_EQ(OK, stream->InitSync());
59 EXPECT_TRUE(stream->IsInMemory()); 105 EXPECT_TRUE(stream->IsInMemory());
60 ASSERT_TRUE(stream.get()); 106 ASSERT_TRUE(stream.get());
61 EXPECT_EQ(0U, stream->size()); 107 EXPECT_EQ(0U, stream->size());
62 EXPECT_EQ(0U, stream->position()); 108 EXPECT_EQ(0U, stream->position());
63 EXPECT_TRUE(stream->IsEOF()); 109 EXPECT_TRUE(stream->IsEOF());
64 } 110 }
65 111
66 TEST_F(UploadDataStreamTest, ConsumeAllBytes) { 112 TEST_F(UploadDataStreamTest, ConsumeAllBytes) {
67 upload_data_->AppendBytes(kTestData, kTestDataSize); 113 upload_data_->AppendBytes(kTestData, kTestDataSize);
68 scoped_ptr<UploadDataStream> stream(new UploadDataStream(upload_data_)); 114 scoped_ptr<UploadDataStream> stream(new UploadDataStream(upload_data_));
69 ASSERT_EQ(OK, stream->Init()); 115 ASSERT_EQ(OK, stream->InitSync());
70 EXPECT_TRUE(stream->IsInMemory()); 116 EXPECT_TRUE(stream->IsInMemory());
71 ASSERT_TRUE(stream.get()); 117 ASSERT_TRUE(stream.get());
72 EXPECT_EQ(kTestDataSize, stream->size()); 118 EXPECT_EQ(kTestDataSize, stream->size());
73 EXPECT_EQ(0U, stream->position()); 119 EXPECT_EQ(0U, stream->position());
74 EXPECT_FALSE(stream->IsEOF()); 120 EXPECT_FALSE(stream->IsEOF());
75 scoped_refptr<IOBuffer> buf = new IOBuffer(kTestBufferSize); 121 scoped_refptr<IOBuffer> buf = new IOBuffer(kTestBufferSize);
76 while (!stream->IsEOF()) { 122 while (!stream->IsEOF()) {
77 int bytes_read = stream->Read(buf, kTestBufferSize); 123 int bytes_read = stream->Read(buf, kTestBufferSize);
78 ASSERT_LE(0, bytes_read); // Not an error. 124 ASSERT_LE(0, bytes_read); // Not an error.
79 } 125 }
80 EXPECT_EQ(kTestDataSize, stream->position()); 126 EXPECT_EQ(kTestDataSize, stream->position());
81 ASSERT_TRUE(stream->IsEOF()); 127 ASSERT_TRUE(stream->IsEOF());
82 } 128 }
83 129
84 TEST_F(UploadDataStreamTest, File) { 130 TEST_F(UploadDataStreamTest, File) {
85 FilePath temp_file_path; 131 FilePath temp_file_path;
86 ASSERT_TRUE(file_util::CreateTemporaryFile(&temp_file_path)); 132 ASSERT_TRUE(file_util::CreateTemporaryFile(&temp_file_path));
87 ASSERT_EQ(static_cast<int>(kTestDataSize), 133 ASSERT_EQ(static_cast<int>(kTestDataSize),
88 file_util::WriteFile(temp_file_path, kTestData, kTestDataSize)); 134 file_util::WriteFile(temp_file_path, kTestData, kTestDataSize));
89 135
90 std::vector<UploadElement> elements; 136 std::vector<UploadElement> elements;
91 UploadElement element; 137 UploadElement element;
92 element.SetToFilePath(temp_file_path); 138 element.SetToFilePath(temp_file_path);
93 elements.push_back(element); 139 elements.push_back(element);
94 upload_data_->SetElements(elements); 140 upload_data_->SetElements(elements);
95 141
96 scoped_ptr<UploadDataStream> stream(new UploadDataStream(upload_data_)); 142 scoped_ptr<UploadDataStream> stream(new UploadDataStream(upload_data_));
97 ASSERT_EQ(OK, stream->Init()); 143 ASSERT_EQ(OK, stream->InitSync());
98 EXPECT_FALSE(stream->IsInMemory()); 144 EXPECT_FALSE(stream->IsInMemory());
99 ASSERT_TRUE(stream.get()); 145 ASSERT_TRUE(stream.get());
100 EXPECT_EQ(kTestDataSize, stream->size()); 146 EXPECT_EQ(kTestDataSize, stream->size());
101 EXPECT_EQ(0U, stream->position()); 147 EXPECT_EQ(0U, stream->position());
102 EXPECT_FALSE(stream->IsEOF()); 148 EXPECT_FALSE(stream->IsEOF());
103 scoped_refptr<IOBuffer> buf = new IOBuffer(kTestBufferSize); 149 scoped_refptr<IOBuffer> buf = new IOBuffer(kTestBufferSize);
104 while (!stream->IsEOF()) { 150 while (!stream->IsEOF()) {
105 int bytes_read = stream->Read(buf, kTestBufferSize); 151 int bytes_read = stream->Read(buf, kTestBufferSize);
106 ASSERT_LE(0, bytes_read); // Not an error. 152 ASSERT_LE(0, bytes_read); // Not an error.
107 } 153 }
(...skipping 12 matching lines...) Expand all
120 UploadFileElementReader::ScopedOverridingContentLengthForTests 166 UploadFileElementReader::ScopedOverridingContentLengthForTests
121 overriding_content_length(kFakeSize); 167 overriding_content_length(kFakeSize);
122 168
123 std::vector<UploadElement> elements; 169 std::vector<UploadElement> elements;
124 UploadElement element; 170 UploadElement element;
125 element.SetToFilePath(temp_file_path); 171 element.SetToFilePath(temp_file_path);
126 elements.push_back(element); 172 elements.push_back(element);
127 upload_data_->SetElements(elements); 173 upload_data_->SetElements(elements);
128 174
129 scoped_ptr<UploadDataStream> stream(new UploadDataStream(upload_data_)); 175 scoped_ptr<UploadDataStream> stream(new UploadDataStream(upload_data_));
130 ASSERT_EQ(OK, stream->Init()); 176 ASSERT_EQ(OK, stream->InitSync());
131 EXPECT_FALSE(stream->IsInMemory()); 177 EXPECT_FALSE(stream->IsInMemory());
132 ASSERT_TRUE(stream.get()); 178 ASSERT_TRUE(stream.get());
133 EXPECT_EQ(kFakeSize, stream->size()); 179 EXPECT_EQ(kFakeSize, stream->size());
134 EXPECT_EQ(0U, stream->position()); 180 EXPECT_EQ(0U, stream->position());
135 EXPECT_FALSE(stream->IsEOF()); 181 EXPECT_FALSE(stream->IsEOF());
136 uint64 read_counter = 0; 182 uint64 read_counter = 0;
137 scoped_refptr<IOBuffer> buf = new IOBuffer(kTestBufferSize); 183 scoped_refptr<IOBuffer> buf = new IOBuffer(kTestBufferSize);
138 while (!stream->IsEOF()) { 184 while (!stream->IsEOF()) {
139 int bytes_read = stream->Read(buf, kTestBufferSize); 185 int bytes_read = stream->Read(buf, kTestBufferSize);
140 ASSERT_LE(0, bytes_read); // Not an error. 186 ASSERT_LE(0, bytes_read); // Not an error.
(...skipping 16 matching lines...) Expand all
157 203
158 const uint64 kFileRangeOffset = 1; 204 const uint64 kFileRangeOffset = 1;
159 const uint64 kFileRangeLength = 4; 205 const uint64 kFileRangeLength = 4;
160 upload_data_->AppendFileRange( 206 upload_data_->AppendFileRange(
161 temp_file_path, kFileRangeOffset, kFileRangeLength, base::Time()); 207 temp_file_path, kFileRangeOffset, kFileRangeLength, base::Time());
162 208
163 upload_data_->AppendBytes(kTestData, kTestDataSize); 209 upload_data_->AppendBytes(kTestData, kTestDataSize);
164 210
165 const uint64 kStreamSize = kTestDataSize + kFileRangeLength; 211 const uint64 kStreamSize = kTestDataSize + kFileRangeLength;
166 scoped_ptr<UploadDataStream> stream(new UploadDataStream(upload_data_)); 212 scoped_ptr<UploadDataStream> stream(new UploadDataStream(upload_data_));
167 ASSERT_EQ(OK, stream->Init()); 213 ASSERT_EQ(OK, stream->InitSync());
168 EXPECT_FALSE(stream->IsInMemory()); 214 EXPECT_FALSE(stream->IsInMemory());
169 ASSERT_TRUE(stream.get()); 215 ASSERT_TRUE(stream.get());
170 EXPECT_EQ(kStreamSize, stream->size()); 216 EXPECT_EQ(kStreamSize, stream->size());
171 EXPECT_EQ(0U, stream->position()); 217 EXPECT_EQ(0U, stream->position());
172 EXPECT_FALSE(stream->IsEOF()); 218 EXPECT_FALSE(stream->IsEOF());
173 scoped_refptr<IOBuffer> buf = new IOBuffer(kTestBufferSize); 219 scoped_refptr<IOBuffer> buf = new IOBuffer(kTestBufferSize);
174 while (!stream->IsEOF()) { 220 while (!stream->IsEOF()) {
175 int bytes_read = stream->Read(buf, kTestBufferSize); 221 int bytes_read = stream->Read(buf, kTestBufferSize);
176 ASSERT_LE(0, bytes_read); // Not an error. 222 ASSERT_LE(0, bytes_read); // Not an error.
177 } 223 }
178 EXPECT_EQ(kStreamSize, stream->position()); 224 EXPECT_EQ(kStreamSize, stream->position());
179 ASSERT_TRUE(stream->IsEOF()); 225 ASSERT_TRUE(stream->IsEOF());
180 226
181 file_util::Delete(temp_file_path, false); 227 file_util::Delete(temp_file_path, false);
182 } 228 }
183 229
184 TEST_F(UploadDataStreamTest, Chunk) { 230 TEST_F(UploadDataStreamTest, Chunk) {
185 upload_data_->set_is_chunked(true); 231 upload_data_->set_is_chunked(true);
186 upload_data_->AppendChunk(kTestData, kTestDataSize, false); 232 upload_data_->AppendChunk(kTestData, kTestDataSize, false);
187 upload_data_->AppendChunk(kTestData, kTestDataSize, true); 233 upload_data_->AppendChunk(kTestData, kTestDataSize, true);
188 234
189 const uint64 kStreamSize = kTestDataSize*2; 235 const uint64 kStreamSize = kTestDataSize*2;
190 scoped_ptr<UploadDataStream> stream(new UploadDataStream(upload_data_)); 236 scoped_ptr<UploadDataStream> stream(new UploadDataStream(upload_data_));
191 ASSERT_EQ(OK, stream->Init()); 237 ASSERT_EQ(OK, stream->InitSync());
192 EXPECT_FALSE(stream->IsInMemory()); 238 EXPECT_FALSE(stream->IsInMemory());
193 ASSERT_TRUE(stream.get()); 239 ASSERT_TRUE(stream.get());
194 EXPECT_EQ(0U, stream->size()); // Content-Length is 0 for chunked data. 240 EXPECT_EQ(0U, stream->size()); // Content-Length is 0 for chunked data.
195 EXPECT_EQ(0U, stream->position()); 241 EXPECT_EQ(0U, stream->position());
196 EXPECT_FALSE(stream->IsEOF()); 242 EXPECT_FALSE(stream->IsEOF());
197 scoped_refptr<IOBuffer> buf = new IOBuffer(kTestBufferSize); 243 scoped_refptr<IOBuffer> buf = new IOBuffer(kTestBufferSize);
198 while (!stream->IsEOF()) { 244 while (!stream->IsEOF()) {
199 int bytes_read = stream->Read(buf, kTestBufferSize); 245 int bytes_read = stream->Read(buf, kTestBufferSize);
200 ASSERT_LE(0, bytes_read); // Not an error. 246 ASSERT_LE(0, bytes_read); // Not an error.
201 } 247 }
202 EXPECT_EQ(kStreamSize, stream->position()); 248 EXPECT_EQ(kStreamSize, stream->position());
203 ASSERT_TRUE(stream->IsEOF()); 249 ASSERT_TRUE(stream->IsEOF());
204 } 250 }
205 251
252 // Init() with on-memory and not-on-memory readers.
253 TEST_F(UploadDataStreamTest, InitAsync) {
254 // Create stream without element readers.
255 UploadDataStream stream(upload_data_);
256
257 // Set mock readers to the stream.
258 MockUploadElementReader* reader = NULL;
259
260 reader = new MockUploadElementReader;
261 EXPECT_CALL(*reader, Init(_)).WillOnce(Return(OK));
262 EXPECT_CALL(*reader, GetContentLength()).WillRepeatedly(Return(0));
263 EXPECT_CALL(*reader, IsInMemory()).WillRepeatedly(Return(true));
264 stream.element_readers_.push_back(reader);
265
266 reader = new MockUploadElementReader;
267 EXPECT_CALL(*reader, Init(_)).WillOnce(Return(OK));
268 EXPECT_CALL(*reader, GetContentLength()).WillRepeatedly(Return(0));
269 EXPECT_CALL(*reader, IsInMemory()).WillRepeatedly(Return(true));
270 stream.element_readers_.push_back(reader);
271
272 reader = new MockUploadElementReader;
273 reader->SetAsyncInitExpectation(OK);
274 EXPECT_CALL(*reader, GetContentLength()).WillRepeatedly(Return(0));
275 EXPECT_CALL(*reader, IsInMemory()).WillRepeatedly(Return(false));
276 stream.element_readers_.push_back(reader);
277
278 reader = new MockUploadElementReader;
279 reader->SetAsyncInitExpectation(OK);
280 EXPECT_CALL(*reader, GetContentLength()).WillRepeatedly(Return(0));
281 EXPECT_CALL(*reader, IsInMemory()).WillRepeatedly(Return(false));
282 stream.element_readers_.push_back(reader);
283
284 reader = new MockUploadElementReader;
285 EXPECT_CALL(*reader, Init(_)).WillOnce(Return(OK));
286 EXPECT_CALL(*reader, GetContentLength()).WillRepeatedly(Return(0));
287 EXPECT_CALL(*reader, IsInMemory()).WillRepeatedly(Return(true));
288 stream.element_readers_.push_back(reader);
289
290 // Run Init().
291 MockCompletionCallback mock_callback;
292 EXPECT_CALL(mock_callback, Run(OK)).Times(1);
293 EXPECT_EQ(stream.Init(mock_callback.CreateCallback()), ERR_IO_PENDING);
294 MessageLoop::current()->RunAllPending();
295 }
296
297 // Init() of a reader fails asynchronously.
298 TEST_F(UploadDataStreamTest, InitAsyncFailureAsync) {
299 // Create stream without element readers.
300 UploadDataStream stream(upload_data_);
301
302 // Set a mock reader to the stream.
303 MockUploadElementReader* reader = NULL;
304
305 reader = new MockUploadElementReader;
306 reader->SetAsyncInitExpectation(ERR_FAILED);
307 EXPECT_CALL(*reader, IsInMemory()).WillRepeatedly(Return(false));
308 stream.element_readers_.push_back(reader);
309
310 // Run Init().
311 MockCompletionCallback mock_callback;
312 EXPECT_CALL(mock_callback, Run(ERR_FAILED)).Times(1);
313 EXPECT_EQ(stream.Init(mock_callback.CreateCallback()), ERR_IO_PENDING);
314 MessageLoop::current()->RunAllPending();
315 }
316
317 // Init() of a reader fails synchronously.
318 TEST_F(UploadDataStreamTest, InitAsyncFailureSync) {
319 // Create stream without element readers.
320 UploadDataStream stream(upload_data_);
321
322 // Set mock readers to the stream.
323 MockUploadElementReader* reader = NULL;
324
325 reader = new MockUploadElementReader;
326 reader->SetAsyncInitExpectation(OK);
327 EXPECT_CALL(*reader, IsInMemory()).WillRepeatedly(Return(false));
328 stream.element_readers_.push_back(reader);
329
330 reader = new MockUploadElementReader;
331 EXPECT_CALL(*reader, Init(_)).WillOnce(Return(ERR_FAILED));
332 EXPECT_CALL(*reader, IsInMemory()).WillRepeatedly(Return(true));
333 stream.element_readers_.push_back(reader);
334
335 // Run Init().
336 MockCompletionCallback mock_callback;
337 EXPECT_CALL(mock_callback, Run(ERR_FAILED)).Times(1);
338 EXPECT_EQ(stream.Init(mock_callback.CreateCallback()), ERR_IO_PENDING);
339 MessageLoop::current()->RunAllPending();
340 }
341
206 void UploadDataStreamTest::FileChangedHelper(const FilePath& file_path, 342 void UploadDataStreamTest::FileChangedHelper(const FilePath& file_path,
207 const base::Time& time, 343 const base::Time& time,
208 bool error_expected) { 344 bool error_expected) {
209 std::vector<UploadElement> elements; 345 std::vector<UploadElement> elements;
210 UploadElement element; 346 UploadElement element;
211 element.SetToFilePathRange(file_path, 1, 2, time); 347 element.SetToFilePathRange(file_path, 1, 2, time);
212 elements.push_back(element); 348 elements.push_back(element);
213 // Don't use upload_data_ here, as this function is called twice, and 349 // Don't use upload_data_ here, as this function is called twice, and
214 // reusing upload_data_ is wrong. 350 // reusing upload_data_ is wrong.
215 scoped_refptr<UploadData> upload_data(new UploadData); 351 scoped_refptr<UploadData> upload_data(new UploadData);
216 upload_data->SetElements(elements); 352 upload_data->SetElements(elements);
217 353
218 scoped_ptr<UploadDataStream> stream(new UploadDataStream(upload_data)); 354 scoped_ptr<UploadDataStream> stream(new UploadDataStream(upload_data));
219 int error_code = stream->Init(); 355 int error_code = stream->InitSync();
220 if (error_expected) 356 if (error_expected)
221 ASSERT_EQ(ERR_UPLOAD_FILE_CHANGED, error_code); 357 ASSERT_EQ(ERR_UPLOAD_FILE_CHANGED, error_code);
222 else 358 else
223 ASSERT_EQ(OK, error_code); 359 ASSERT_EQ(OK, error_code);
224 } 360 }
225 361
226 TEST_F(UploadDataStreamTest, FileChanged) { 362 TEST_F(UploadDataStreamTest, FileChanged) {
227 FilePath temp_file_path; 363 FilePath temp_file_path;
228 ASSERT_TRUE(file_util::CreateTemporaryFile(&temp_file_path)); 364 ASSERT_TRUE(file_util::CreateTemporaryFile(&temp_file_path));
229 ASSERT_EQ(static_cast<int>(kTestDataSize), 365 ASSERT_EQ(static_cast<int>(kTestDataSize),
(...skipping 22 matching lines...) Expand all
252 // Prepare |upload_data_| that contains a file. 388 // Prepare |upload_data_| that contains a file.
253 std::vector<UploadElement> elements; 389 std::vector<UploadElement> elements;
254 UploadElement element; 390 UploadElement element;
255 element.SetToFilePath(temp_file_path); 391 element.SetToFilePath(temp_file_path);
256 elements.push_back(element); 392 elements.push_back(element);
257 upload_data_->SetElements(elements); 393 upload_data_->SetElements(elements);
258 394
259 // Confirm that the file is read properly. 395 // Confirm that the file is read properly.
260 { 396 {
261 UploadDataStream stream(upload_data_); 397 UploadDataStream stream(upload_data_);
262 ASSERT_EQ(OK, stream.Init()); 398 ASSERT_EQ(OK, stream.InitSync());
263 EXPECT_EQ(kTestDataSize, stream.size()); 399 EXPECT_EQ(kTestDataSize, stream.size());
264 EXPECT_EQ(kTestData, ReadFromUploadDataStream(&stream)); 400 EXPECT_EQ(kTestData, ReadFromUploadDataStream(&stream));
265 } 401 }
266 402
267 // Reuse |upload_data_| for another UploadDataStream, and confirm that the 403 // Reuse |upload_data_| for another UploadDataStream, and confirm that the
268 // file is read properly. 404 // file is read properly.
269 { 405 {
270 UploadDataStream stream(upload_data_); 406 UploadDataStream stream(upload_data_);
271 ASSERT_EQ(OK, stream.Init()); 407 ASSERT_EQ(OK, stream.InitSync());
272 EXPECT_EQ(kTestDataSize, stream.size()); 408 EXPECT_EQ(kTestDataSize, stream.size());
273 EXPECT_EQ(kTestData, ReadFromUploadDataStream(&stream)); 409 EXPECT_EQ(kTestData, ReadFromUploadDataStream(&stream));
274 } 410 }
275 411
276 file_util::Delete(temp_file_path, false); 412 file_util::Delete(temp_file_path, false);
277 } 413 }
278 414
279 } // namespace net 415 } // namespace net
OLDNEW
« no previous file with comments | « net/base/upload_data_stream.cc ('k') | net/base/upload_element_reader.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698