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

Unified Diff: http_fetcher_unittest.cc

Issue 3010009: AU: When server dies, don't retry forever (Closed) Base URL: ssh://git@chromiumos-git/update_engine.git
Patch Set: fixes for review, cleanup some LOG messages Created 10 years, 5 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 side-by-side diff with in-line comments
Download patch
« no previous file with comments | « no previous file | libcurl_http_fetcher.h » ('j') | libcurl_http_fetcher.cc » ('J')
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: http_fetcher_unittest.cc
diff --git a/http_fetcher_unittest.cc b/http_fetcher_unittest.cc
index 4cabd1c331ff3d345178b8c743cc859a5a9eb45d..a579ea35a7a86cd48aae0e81b890539809ea5090 100644
--- a/http_fetcher_unittest.cc
+++ b/http_fetcher_unittest.cc
@@ -106,7 +106,7 @@ class PythonHttpServer {
// request that the server exit itself
LOG(INFO) << "running wget to exit";
int rc = system((string("wget -t 1 --output-document=/dev/null ") +
- LocalServerUrlForPath("/quitquitquit")).c_str());
+ LocalServerUrlForPath("/quitquitquit")).c_str());
LOG(INFO) << "done running wget to exit";
if (validate_quit_)
EXPECT_EQ(0, rc);
@@ -174,7 +174,7 @@ gboolean StartTransfer(gpointer data) {
} // namespace {}
TYPED_TEST(HttpFetcherTest, SimpleTest) {
- GMainLoop *loop = g_main_loop_new(g_main_context_default(), FALSE);
+ GMainLoop* loop = g_main_loop_new(g_main_context_default(), FALSE);
{
HttpFetcherTestDelegate delegate;
delegate.loop_ = loop;
@@ -193,7 +193,7 @@ TYPED_TEST(HttpFetcherTest, SimpleTest) {
}
TYPED_TEST(HttpFetcherTest, SimpleBigTest) {
- GMainLoop *loop = g_main_loop_new(g_main_context_default(), FALSE);
+ GMainLoop* loop = g_main_loop_new(g_main_context_default(), FALSE);
{
HttpFetcherTestDelegate delegate;
delegate.loop_ = loop;
@@ -246,7 +246,7 @@ gboolean UnpausingTimeoutCallback(gpointer data) {
} // namespace {}
TYPED_TEST(HttpFetcherTest, PauseTest) {
- GMainLoop *loop = g_main_loop_new(g_main_context_default(), FALSE);
+ GMainLoop* loop = g_main_loop_new(g_main_context_default(), FALSE);
{
PausingHttpFetcherTestDelegate delegate;
scoped_ptr<HttpFetcher> fetcher(this->NewLargeFetcher());
@@ -306,7 +306,7 @@ gboolean AbortingTimeoutCallback(gpointer data) {
} // namespace {}
TYPED_TEST(HttpFetcherTest, AbortTest) {
- GMainLoop *loop = g_main_loop_new(g_main_context_default(), FALSE);
+ GMainLoop* loop = g_main_loop_new(g_main_context_default(), FALSE);
{
AbortingHttpFetcherTestDelegate delegate;
scoped_ptr<HttpFetcher> fetcher(this->NewLargeFetcher());
@@ -349,7 +349,7 @@ class FlakyHttpFetcherTestDelegate : public HttpFetcherDelegate {
TYPED_TEST(HttpFetcherTest, FlakyTest) {
if (this->IsMock())
return;
- GMainLoop *loop = g_main_loop_new(g_main_context_default(), FALSE);
+ GMainLoop* loop = g_main_loop_new(g_main_context_default(), FALSE);
{
FlakyHttpFetcherTestDelegate delegate;
delegate.loop_ = loop;
@@ -377,4 +377,74 @@ TYPED_TEST(HttpFetcherTest, FlakyTest) {
g_main_loop_unref(loop);
}
+namespace {
+class FailureHttpFetcherTestDelegate : public HttpFetcherDelegate {
+ public:
+ FailureHttpFetcherTestDelegate() : loop_(NULL), server_(NULL) {}
+ virtual void ReceivedBytes(HttpFetcher* fetcher,
+ const char* bytes, int length) {
+ if (server_) {
+ LOG(INFO) << "Stopping server";
+ delete server_;
+ LOG(INFO) << "server stopped";
+ server_ = NULL;
+ }
+ }
+ virtual void TransferComplete(HttpFetcher* fetcher, bool successful) {
+ EXPECT_FALSE(successful);
+ g_main_loop_quit(loop_);
+ }
+ GMainLoop* loop_;
+ PythonHttpServer* server_;
+};
+} // namespace {}
+
+
+TYPED_TEST(HttpFetcherTest, FailureTest) {
+ if (this->IsMock())
+ return;
+ GMainLoop* loop = g_main_loop_new(g_main_context_default(), FALSE);
+ {
+ FailureHttpFetcherTestDelegate delegate;
+ delegate.loop_ = loop;
+ scoped_ptr<HttpFetcher> fetcher(this->NewSmallFetcher());
+ fetcher->set_delegate(&delegate);
+
+ StartTransferArgs start_xfer_args = {
+ fetcher.get(),
+ LocalServerUrlForPath(this->SmallUrl())
+ };
+
+ g_timeout_add(0, StartTransfer, &start_xfer_args);
+ g_main_loop_run(loop);
+
+ // Exiting and testing happens in the delegate
+ }
+ g_main_loop_unref(loop);
+}
+
+TYPED_TEST(HttpFetcherTest, ServerDiesTest) {
+ if (this->IsMock())
+ return;
+ GMainLoop* loop = g_main_loop_new(g_main_context_default(), FALSE);
+ {
+ FailureHttpFetcherTestDelegate delegate;
+ delegate.loop_ = loop;
+ delegate.server_ = new PythonHttpServer;
+ scoped_ptr<HttpFetcher> fetcher(this->NewSmallFetcher());
+ fetcher->set_delegate(&delegate);
+
+ StartTransferArgs start_xfer_args = {
+ fetcher.get(),
+ LocalServerUrlForPath("/flaky")
+ };
+
+ g_timeout_add(0, StartTransfer, &start_xfer_args);
+ g_main_loop_run(loop);
+
+ // Exiting and testing happens in the delegate
+ }
+ g_main_loop_unref(loop);
+}
+
} // namespace chromeos_update_engine
« no previous file with comments | « no previous file | libcurl_http_fetcher.h » ('j') | libcurl_http_fetcher.cc » ('J')

Powered by Google App Engine
This is Rietveld 408576698