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

Side by Side Diff: net/url_request/url_fetcher_impl_unittest.cc

Issue 14578004: Support range uploading of a file. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Fix compile error on Win, Mac and Android. Created 7 years, 7 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/url_request/url_fetcher_impl.cc ('k') | no next file » | 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/url_request/url_fetcher_impl.h" 5 #include "net/url_request/url_fetcher_impl.h"
6 6
7 #include <algorithm>
7 #include <string> 8 #include <string>
8 9
9 #include "base/bind.h" 10 #include "base/bind.h"
10 #include "base/file_util.h" 11 #include "base/file_util.h"
11 #include "base/files/scoped_temp_dir.h" 12 #include "base/files/scoped_temp_dir.h"
12 #include "base/message_loop_proxy.h" 13 #include "base/message_loop_proxy.h"
13 #include "base/stringprintf.h" 14 #include "base/stringprintf.h"
14 #include "base/synchronization/waitable_event.h" 15 #include "base/synchronization/waitable_event.h"
15 #include "base/threading/thread.h" 16 #include "base/threading/thread.h"
16 #include "build/build_config.h" 17 #include "build/build_config.h"
(...skipping 219 matching lines...) Expand 10 before | Expand all | Expand 10 after
236 // URLFetcherDelegate: 237 // URLFetcherDelegate:
237 virtual void OnURLFetchComplete(const URLFetcher* source) OVERRIDE; 238 virtual void OnURLFetchComplete(const URLFetcher* source) OVERRIDE;
238 }; 239 };
239 240
240 // Version of URLFetcherTest that does a POST of a file using 241 // Version of URLFetcherTest that does a POST of a file using
241 // SetUploadDataStream 242 // SetUploadDataStream
242 class URLFetcherPostFileTest : public URLFetcherTest { 243 class URLFetcherPostFileTest : public URLFetcherTest {
243 public: 244 public:
244 URLFetcherPostFileTest(); 245 URLFetcherPostFileTest();
245 246
247 void SetUploadRange(uint64 range_offset, uint64 range_length) {
248 range_offset_ = range_offset;
249 range_length_ = range_length;
250 }
251
246 // URLFetcherTest: 252 // URLFetcherTest:
247 virtual void CreateFetcher(const GURL& url) OVERRIDE; 253 virtual void CreateFetcher(const GURL& url) OVERRIDE;
248 254
249 // URLFetcherDelegate: 255 // URLFetcherDelegate:
250 virtual void OnURLFetchComplete(const URLFetcher* source) OVERRIDE; 256 virtual void OnURLFetchComplete(const URLFetcher* source) OVERRIDE;
251 257
252 private: 258 private:
253 base::FilePath path_; 259 base::FilePath path_;
260 uint64 range_offset_;
261 uint64 range_length_;
254 }; 262 };
255 263
256 // Version of URLFetcherTest that does a POST instead with empty upload body 264 // Version of URLFetcherTest that does a POST instead with empty upload body
257 class URLFetcherEmptyPostTest : public URLFetcherTest { 265 class URLFetcherEmptyPostTest : public URLFetcherTest {
258 public: 266 public:
259 // URLFetcherTest: 267 // URLFetcherTest:
260 virtual void CreateFetcher(const GURL& url) OVERRIDE; 268 virtual void CreateFetcher(const GURL& url) OVERRIDE;
261 269
262 // URLFetcherDelegate: 270 // URLFetcherDelegate:
263 virtual void OnURLFetchComplete(const URLFetcher* source) OVERRIDE; 271 virtual void OnURLFetchComplete(const URLFetcher* source) OVERRIDE;
(...skipping 253 matching lines...) Expand 10 before | Expand all | Expand 10 after
517 fetcher_->Start(); 525 fetcher_->Start();
518 } 526 }
519 527
520 void URLFetcherPostTest::OnURLFetchComplete(const URLFetcher* source) { 528 void URLFetcherPostTest::OnURLFetchComplete(const URLFetcher* source) {
521 std::string data; 529 std::string data;
522 EXPECT_TRUE(source->GetResponseAsString(&data)); 530 EXPECT_TRUE(source->GetResponseAsString(&data));
523 EXPECT_EQ(std::string("bobsyeruncle"), data); 531 EXPECT_EQ(std::string("bobsyeruncle"), data);
524 URLFetcherTest::OnURLFetchComplete(source); 532 URLFetcherTest::OnURLFetchComplete(source);
525 } 533 }
526 534
527 URLFetcherPostFileTest::URLFetcherPostFileTest() { 535 URLFetcherPostFileTest::URLFetcherPostFileTest()
536 : range_offset_(0),
537 range_length_(kuint64max) {
528 PathService::Get(base::DIR_SOURCE_ROOT, &path_); 538 PathService::Get(base::DIR_SOURCE_ROOT, &path_);
529 path_ = path_.Append(FILE_PATH_LITERAL("net")); 539 path_ = path_.Append(FILE_PATH_LITERAL("net"));
530 path_ = path_.Append(FILE_PATH_LITERAL("data")); 540 path_ = path_.Append(FILE_PATH_LITERAL("data"));
531 path_ = path_.Append(FILE_PATH_LITERAL("url_request_unittest")); 541 path_ = path_.Append(FILE_PATH_LITERAL("url_request_unittest"));
532 path_ = path_.Append(FILE_PATH_LITERAL("BullRunSpeech.txt")); 542 path_ = path_.Append(FILE_PATH_LITERAL("BullRunSpeech.txt"));
533 } 543 }
534 544
535 void URLFetcherPostFileTest::CreateFetcher(const GURL& url) { 545 void URLFetcherPostFileTest::CreateFetcher(const GURL& url) {
536 fetcher_ = new URLFetcherImpl(url, URLFetcher::POST, this); 546 fetcher_ = new URLFetcherImpl(url, URLFetcher::POST, this);
537 fetcher_->SetRequestContext(new ThrottlingTestURLRequestContextGetter( 547 fetcher_->SetRequestContext(new ThrottlingTestURLRequestContextGetter(
538 io_message_loop_proxy(), request_context())); 548 io_message_loop_proxy(), request_context()));
539 fetcher_->SetUploadFilePath("application/x-www-form-urlencoded", 549 fetcher_->SetUploadFilePath("application/x-www-form-urlencoded",
540 path_, 550 path_,
551 range_offset_,
552 range_length_,
541 base::MessageLoopProxy::current()); 553 base::MessageLoopProxy::current());
542 fetcher_->Start(); 554 fetcher_->Start();
543 } 555 }
544 556
545 void URLFetcherPostFileTest::OnURLFetchComplete(const URLFetcher* source) { 557 void URLFetcherPostFileTest::OnURLFetchComplete(const URLFetcher* source) {
546 int64 size = 0; 558 std::string expected;
547 ASSERT_EQ(true, file_util::GetFileSize(path_, &size)); 559 ASSERT_TRUE(file_util::ReadFileToString(path_, &expected));
548 scoped_ptr<char[]> expected(new char[size]); 560 ASSERT_LE(range_offset_, expected.size());
549 ASSERT_EQ(size, file_util::ReadFile(path_, expected.get(), size)); 561 uint64 expected_size =
562 std::min(range_length_, expected.size() - range_offset_);
550 563
551 std::string data; 564 std::string data;
552 EXPECT_TRUE(source->GetResponseAsString(&data)); 565 EXPECT_TRUE(source->GetResponseAsString(&data));
553 EXPECT_EQ(std::string(&expected[0], size), data); 566 EXPECT_EQ(expected.substr(range_offset_, expected_size), data);
554 URLFetcherTest::OnURLFetchComplete(source); 567 URLFetcherTest::OnURLFetchComplete(source);
555 } 568 }
556 569
557 void URLFetcherEmptyPostTest::CreateFetcher(const GURL& url) { 570 void URLFetcherEmptyPostTest::CreateFetcher(const GURL& url) {
558 fetcher_ = new URLFetcherImpl(url, URLFetcher::POST, this); 571 fetcher_ = new URLFetcherImpl(url, URLFetcher::POST, this);
559 fetcher_->SetRequestContext(new TestURLRequestContextGetter( 572 fetcher_->SetRequestContext(new TestURLRequestContextGetter(
560 io_message_loop_proxy())); 573 io_message_loop_proxy()));
561 fetcher_->SetUploadData("text/plain", std::string()); 574 fetcher_->SetUploadData("text/plain", std::string());
562 fetcher_->Start(); 575 fetcher_->Start();
563 } 576 }
(...skipping 492 matching lines...) Expand 10 before | Expand all | Expand 10 after
1056 TEST_F(URLFetcherPostFileTest, Basic) { 1069 TEST_F(URLFetcherPostFileTest, Basic) {
1057 TestServer test_server(TestServer::TYPE_HTTP, 1070 TestServer test_server(TestServer::TYPE_HTTP,
1058 TestServer::kLocalhost, 1071 TestServer::kLocalhost,
1059 base::FilePath(kDocRoot)); 1072 base::FilePath(kDocRoot));
1060 ASSERT_TRUE(test_server.Start()); 1073 ASSERT_TRUE(test_server.Start());
1061 1074
1062 CreateFetcher(test_server.GetURL("echo")); 1075 CreateFetcher(test_server.GetURL("echo"));
1063 MessageLoop::current()->Run(); 1076 MessageLoop::current()->Run();
1064 } 1077 }
1065 1078
1079 TEST_F(URLFetcherPostFileTest, Range) {
1080 TestServer test_server(TestServer::TYPE_HTTP,
1081 TestServer::kLocalhost,
1082 base::FilePath(kDocRoot));
1083 ASSERT_TRUE(test_server.Start());
1084
1085 SetUploadRange(30, 100);
1086
1087 CreateFetcher(test_server.GetURL("echo"));
1088 MessageLoop::current()->Run();
1089 }
1090
1066 TEST_F(URLFetcherEmptyPostTest, Basic) { 1091 TEST_F(URLFetcherEmptyPostTest, Basic) {
1067 TestServer test_server(TestServer::TYPE_HTTP, 1092 TestServer test_server(TestServer::TYPE_HTTP,
1068 TestServer::kLocalhost, 1093 TestServer::kLocalhost,
1069 base::FilePath(kDocRoot)); 1094 base::FilePath(kDocRoot));
1070 ASSERT_TRUE(test_server.Start()); 1095 ASSERT_TRUE(test_server.Start());
1071 1096
1072 CreateFetcher(test_server.GetURL("echo")); 1097 CreateFetcher(test_server.GetURL("echo"));
1073 MessageLoop::current()->Run(); 1098 MessageLoop::current()->Run();
1074 } 1099 }
1075 1100
(...skipping 420 matching lines...) Expand 10 before | Expand all | Expand 10 after
1496 MessageLoop::current()->Run(); // OnURLFetchComplete() will Quit(). 1521 MessageLoop::current()->Run(); // OnURLFetchComplete() will Quit().
1497 1522
1498 MessageLoop::current()->RunUntilIdle(); 1523 MessageLoop::current()->RunUntilIdle();
1499 ASSERT_FALSE(file_util::PathExists(file_path_)) 1524 ASSERT_FALSE(file_util::PathExists(file_path_))
1500 << file_path_.value() << " not removed."; 1525 << file_path_.value() << " not removed.";
1501 } 1526 }
1502 1527
1503 } // namespace 1528 } // namespace
1504 1529
1505 } // namespace net 1530 } // namespace net
OLDNEW
« no previous file with comments | « net/url_request/url_fetcher_impl.cc ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698