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

Side by Side Diff: http_fetcher_unittest.cc

Issue 5205002: AU: Manual proxy support (Closed) Base URL: http://git.chromium.org/git/update_engine.git@master
Patch Set: missed one fix for review Created 10 years, 1 month 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 | « http_fetcher.cc ('k') | libcurl_http_fetcher.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) 2009 The Chromium OS Authors. All rights reserved. 1 // Copyright (c) 2009 The Chromium OS 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 <unistd.h> 5 #include <unistd.h>
6 6
7 #include <string> 7 #include <string>
8 #include <utility> 8 #include <utility>
9 #include <vector> 9 #include <vector>
10 10
11 #include "base/logging.h" 11 #include <base/logging.h>
12 #include "base/scoped_ptr.h" 12 #include <base/scoped_ptr.h>
13 #include "base/string_util.h" 13 #include <base/string_util.h>
14 #include "glib.h" 14 #include <glib.h>
15 #include "gtest/gtest.h" 15 #include <gtest/gtest.h>
16
16 #include "update_engine/libcurl_http_fetcher.h" 17 #include "update_engine/libcurl_http_fetcher.h"
17 #include "update_engine/mock_http_fetcher.h" 18 #include "update_engine/mock_http_fetcher.h"
18 #include "update_engine/multi_http_fetcher.h" 19 #include "update_engine/multi_http_fetcher.h"
20 #include "update_engine/proxy_resolver.h"
19 21
20 using std::make_pair; 22 using std::make_pair;
21 using std::string; 23 using std::string;
22 using std::vector; 24 using std::vector;
23 25
24 namespace chromeos_update_engine { 26 namespace chromeos_update_engine {
25 27
26 namespace { 28 namespace {
27 // WARNING, if you update these, you must also update test_http_server.cc. 29 // WARNING, if you update these, you must also update test_http_server.cc.
28 const char* const kServerPort = "8088"; 30 const char* const kServerPort = "8088";
(...skipping 20 matching lines...) Expand all
49 ~NullHttpServer() {} 51 ~NullHttpServer() {}
50 bool started_; 52 bool started_;
51 }; 53 };
52 54
53 55
54 template <> 56 template <>
55 class HttpFetcherTest<MockHttpFetcher> : public ::testing::Test { 57 class HttpFetcherTest<MockHttpFetcher> : public ::testing::Test {
56 public: 58 public:
57 HttpFetcher* NewLargeFetcher() { 59 HttpFetcher* NewLargeFetcher() {
58 vector<char> big_data(1000000); 60 vector<char> big_data(1000000);
59 return new MockHttpFetcher(big_data.data(), big_data.size()); 61 return new MockHttpFetcher(
62 big_data.data(),
63 big_data.size(),
64 reinterpret_cast<ProxyResolver*>(&proxy_resolver_));
60 } 65 }
61 HttpFetcher* NewSmallFetcher() { 66 HttpFetcher* NewSmallFetcher() {
62 return new MockHttpFetcher("x", 1); 67 return new MockHttpFetcher(
68 "x",
69 1,
70 reinterpret_cast<ProxyResolver*>(&proxy_resolver_));
63 } 71 }
64 string BigUrl() const { 72 string BigUrl() const {
65 return "unused://unused"; 73 return "unused://unused";
66 } 74 }
67 string SmallUrl() const { 75 string SmallUrl() const {
68 return "unused://unused"; 76 return "unused://unused";
69 } 77 }
70 bool IsMock() const { return true; } 78 bool IsMock() const { return true; }
71 bool IsMulti() const { return false; } 79 bool IsMulti() const { return false; }
72 typedef NullHttpServer HttpServer; 80 typedef NullHttpServer HttpServer;
73 void IgnoreServerAborting(HttpServer* server) const {} 81 void IgnoreServerAborting(HttpServer* server) const {}
82
83 DirectProxyResolver proxy_resolver_;
74 }; 84 };
75 85
76 class PythonHttpServer { 86 class PythonHttpServer {
77 public: 87 public:
78 PythonHttpServer() { 88 PythonHttpServer() {
79 char *argv[2] = {strdup("./test_http_server"), NULL}; 89 char *argv[2] = {strdup("./test_http_server"), NULL};
80 GError *err; 90 GError *err;
81 started_ = false; 91 started_ = false;
82 validate_quit_ = true; 92 validate_quit_ = true;
83 if (!g_spawn_async(NULL, 93 if (!g_spawn_async(NULL,
(...skipping 40 matching lines...) Expand 10 before | Expand all | Expand 10 after
124 } 134 }
125 GPid pid_; 135 GPid pid_;
126 bool started_; 136 bool started_;
127 bool validate_quit_; 137 bool validate_quit_;
128 }; 138 };
129 139
130 template <> 140 template <>
131 class HttpFetcherTest<LibcurlHttpFetcher> : public ::testing::Test { 141 class HttpFetcherTest<LibcurlHttpFetcher> : public ::testing::Test {
132 public: 142 public:
133 virtual HttpFetcher* NewLargeFetcher() { 143 virtual HttpFetcher* NewLargeFetcher() {
134 LibcurlHttpFetcher *ret = new LibcurlHttpFetcher; 144 LibcurlHttpFetcher *ret = new
145 LibcurlHttpFetcher(reinterpret_cast<ProxyResolver*>(&proxy_resolver_));
135 // Speed up test execution. 146 // Speed up test execution.
136 ret->set_idle_seconds(1); 147 ret->set_idle_seconds(1);
137 ret->set_retry_seconds(1); 148 ret->set_retry_seconds(1);
138 ret->SetConnectionAsExpensive(false); 149 ret->SetConnectionAsExpensive(false);
139 ret->SetBuildType(false); 150 ret->SetBuildType(false);
140 return ret; 151 return ret;
141 } 152 }
142 HttpFetcher* NewSmallFetcher() { 153 HttpFetcher* NewSmallFetcher() {
143 return NewLargeFetcher(); 154 return NewLargeFetcher();
144 } 155 }
145 string BigUrl() const { 156 string BigUrl() const {
146 return LocalServerUrlForPath("/big"); 157 return LocalServerUrlForPath("/big");
147 } 158 }
148 string SmallUrl() const { 159 string SmallUrl() const {
149 return LocalServerUrlForPath("/foo"); 160 return LocalServerUrlForPath("/foo");
150 } 161 }
151 bool IsMock() const { return false; } 162 bool IsMock() const { return false; }
152 bool IsMulti() const { return false; } 163 bool IsMulti() const { return false; }
153 typedef PythonHttpServer HttpServer; 164 typedef PythonHttpServer HttpServer;
154 void IgnoreServerAborting(HttpServer* server) const { 165 void IgnoreServerAborting(HttpServer* server) const {
155 PythonHttpServer *pyserver = reinterpret_cast<PythonHttpServer*>(server); 166 PythonHttpServer *pyserver = reinterpret_cast<PythonHttpServer*>(server);
156 pyserver->validate_quit_ = false; 167 pyserver->validate_quit_ = false;
157 } 168 }
169 DirectProxyResolver proxy_resolver_;
158 }; 170 };
159 171
160 template <> 172 template <>
161 class HttpFetcherTest<MultiHttpFetcher<LibcurlHttpFetcher> > 173 class HttpFetcherTest<MultiHttpFetcher<LibcurlHttpFetcher> >
162 : public HttpFetcherTest<LibcurlHttpFetcher> { 174 : public HttpFetcherTest<LibcurlHttpFetcher> {
163 public: 175 public:
164 HttpFetcher* NewLargeFetcher() { 176 HttpFetcher* NewLargeFetcher() {
165 MultiHttpFetcher<LibcurlHttpFetcher> *ret = 177 MultiHttpFetcher<LibcurlHttpFetcher> *ret =
166 new MultiHttpFetcher<LibcurlHttpFetcher>; 178 new MultiHttpFetcher<LibcurlHttpFetcher>(
179 reinterpret_cast<ProxyResolver*>(&proxy_resolver_));
167 MultiHttpFetcher<LibcurlHttpFetcher>::RangesVect 180 MultiHttpFetcher<LibcurlHttpFetcher>::RangesVect
168 ranges(1, make_pair(0, -1)); 181 ranges(1, make_pair(0, -1));
169 ret->set_ranges(ranges); 182 ret->set_ranges(ranges);
170 // Speed up test execution. 183 // Speed up test execution.
171 ret->set_idle_seconds(1); 184 ret->set_idle_seconds(1);
172 ret->set_retry_seconds(1); 185 ret->set_retry_seconds(1);
173 ret->SetConnectionAsExpensive(false); 186 ret->SetConnectionAsExpensive(false);
174 ret->SetBuildType(false); 187 ret->SetBuildType(false);
175 return ret; 188 return ret;
176 } 189 }
177 bool IsMulti() const { return true; } 190 bool IsMulti() const { return true; }
191 DirectProxyResolver proxy_resolver_;
178 }; 192 };
179 193
180 typedef ::testing::Types<LibcurlHttpFetcher, 194 typedef ::testing::Types<LibcurlHttpFetcher,
181 MockHttpFetcher, 195 MockHttpFetcher,
182 MultiHttpFetcher<LibcurlHttpFetcher> > 196 MultiHttpFetcher<LibcurlHttpFetcher> >
183 HttpFetcherTestTypes; 197 HttpFetcherTestTypes;
184 TYPED_TEST_CASE(HttpFetcherTest, HttpFetcherTestTypes); 198 TYPED_TEST_CASE(HttpFetcherTest, HttpFetcherTestTypes);
185 199
186 namespace { 200 namespace {
187 class HttpFetcherTestDelegate : public HttpFetcherDelegate { 201 class HttpFetcherTestDelegate : public HttpFetcherDelegate {
(...skipping 594 matching lines...) Expand 10 before | Expand all | Expand 10 after
782 StartTransferArgs start_xfer_args = 796 StartTransferArgs start_xfer_args =
783 { fetcher.get(), LocalServerUrlForPath(this->SmallUrl()) }; 797 { fetcher.get(), LocalServerUrlForPath(this->SmallUrl()) };
784 798
785 g_timeout_add(0, StartTransfer, &start_xfer_args); 799 g_timeout_add(0, StartTransfer, &start_xfer_args);
786 g_main_loop_run(loop); 800 g_main_loop_run(loop);
787 g_main_loop_unref(loop); 801 g_main_loop_unref(loop);
788 } 802 }
789 } 803 }
790 804
791 } // namespace chromeos_update_engine 805 } // namespace chromeos_update_engine
OLDNEW
« no previous file with comments | « http_fetcher.cc ('k') | libcurl_http_fetcher.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698