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

Unified Diff: sync/internal_api/syncapi_server_connection_manager_unittest.cc

Issue 1553433002: [Sync] Sync should run canary cycle after any network related error (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Fix android test Created 4 years, 11 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 | « sync/internal_api/syncapi_server_connection_manager.cc ('k') | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: sync/internal_api/syncapi_server_connection_manager_unittest.cc
diff --git a/sync/internal_api/syncapi_server_connection_manager_unittest.cc b/sync/internal_api/syncapi_server_connection_manager_unittest.cc
index 208b3a2d763c118221a77d1a20de9b6989bd1255..9e67be8df9c71f7c11165ae82d5f06b433cb3239 100644
--- a/sync/internal_api/syncapi_server_connection_manager_unittest.cc
+++ b/sync/internal_api/syncapi_server_connection_manager_unittest.cc
@@ -120,4 +120,70 @@ TEST(SyncAPIServerConnectionManagerTest, AbortPost) {
abort_thread.Stop();
}
+namespace {
+
+class FailingHttpPost : public HttpPostProviderInterface {
+ public:
+ explicit FailingHttpPost(int error_code) : error_code_(error_code) {}
+ ~FailingHttpPost() override {}
+
+ void SetExtraRequestHeaders(const char* headers) override {}
+ void SetURL(const char* url, int port) override {}
+ void SetPostPayload(const char* content_type,
+ int content_length,
+ const char* content) override {}
+ bool MakeSynchronousPost(int* error_code, int* response_code) override {
+ *error_code = error_code_;
+ return false;
+ }
+ int GetResponseContentLength() const override { return 0; }
+ const char* GetResponseContent() const override { return ""; }
+ const std::string GetResponseHeaderValue(
+ const std::string& name) const override {
+ return std::string();
+ }
+ void Abort() override {}
+
+ private:
+ int error_code_;
+};
+
+class FailingHttpPostFactory : public HttpPostProviderFactory {
+ public:
+ explicit FailingHttpPostFactory(int error_code) : error_code_(error_code) {}
+ ~FailingHttpPostFactory() override {}
+ void Init(const std::string& user_agent,
+ const BindToTrackerCallback& bind_to_tracker_callback) override {}
+
+ HttpPostProviderInterface* Create() override {
+ return new FailingHttpPost(error_code_);
+ }
+ void Destroy(HttpPostProviderInterface* http) override {
+ delete static_cast<FailingHttpPost*>(http);
+ }
+
+ private:
+ int error_code_;
+};
+
+} // namespace
+
+// Fail request with TIMED_OUT error. Make sure server status is
+// CONNECTION_UNAVAILABLE and therefore request will be retried after network
+// change.
+TEST(SyncAPIServerConnectionManagerTest, FailPostWithTimedOut) {
+ CancelationSignal signal;
+ SyncAPIServerConnectionManager server(
+ "server", 0, true, new FailingHttpPostFactory(net::ERR_TIMED_OUT),
+ &signal);
+
+ ServerConnectionManager::PostBufferParams params;
+
+ bool result = server.PostBufferToPath(&params, "/testpath", "testauth");
+
+ EXPECT_FALSE(result);
+ EXPECT_EQ(HttpResponse::CONNECTION_UNAVAILABLE,
+ params.response.server_status);
+}
+
} // namespace syncer
« no previous file with comments | « sync/internal_api/syncapi_server_connection_manager.cc ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698