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

Unified Diff: chrome/browser/component_updater/test/component_updater_service_unittest.cc

Issue 74893002: Changed the update protocol for component updater from v2 to v3. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Addressed feedback from cdn@ Created 7 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 side-by-side diff with in-line comments
Download patch
Index: chrome/browser/component_updater/test/component_updater_service_unittest.cc
diff --git a/chrome/browser/component_updater/test/component_updater_service_unittest.cc b/chrome/browser/component_updater/test/component_updater_service_unittest.cc
index 693e3e50d783b22614848589be0a162eb47623bf..de1adf409d6221122634b1fd390770beefbb332f 100644
--- a/chrome/browser/component_updater/test/component_updater_service_unittest.cc
+++ b/chrome/browser/component_updater/test/component_updater_service_unittest.cc
@@ -12,7 +12,6 @@
#include "chrome/browser/component_updater/test/test_installer.h"
#include "chrome/common/chrome_paths.h"
#include "content/public/browser/browser_thread.h"
-#include "content/test/net/url_request_prepackaged_interceptor.h"
#include "libxml/globals.h"
#include "net/base/upload_bytes_element_reader.h"
#include "net/url_request/url_fetcher.h"
@@ -26,6 +25,10 @@ using ::testing::Mock;
namespace component_updater {
+#define POST_INTERCEPT_SCHEME "http"
+#define POST_INTERCEPT_HOSTNAME "localhost2"
+#define POST_INTERCEPT_PATH "/update2"
+
MockComponentObserver::MockComponentObserver() {
}
@@ -75,11 +78,12 @@ int TestConfigurator::OnDemandDelay() {
}
GURL TestConfigurator::UpdateUrl() {
- return GURL("http://localhost/upd");
+ return GURL(POST_INTERCEPT_SCHEME "://"
+ POST_INTERCEPT_HOSTNAME POST_INTERCEPT_PATH);
}
GURL TestConfigurator::PingUrl() {
- return GURL("http://localhost2/update2");
+ return UpdateUrl();
}
const char* TestConfigurator::ExtraRequestParams() { return "extra=foo"; }
@@ -122,12 +126,14 @@ void TestConfigurator::SetQuitClosure(const base::Closure& quit_closure) {
InterceptorFactory::InterceptorFactory()
- : URLRequestPostInterceptorFactory("http", "localhost2") {}
+ : URLRequestPostInterceptorFactory(POST_INTERCEPT_SCHEME,
+ POST_INTERCEPT_HOSTNAME) {}
InterceptorFactory::~InterceptorFactory() {}
URLRequestPostInterceptor* InterceptorFactory::CreateInterceptor() {
- return URLRequestPostInterceptorFactory::CreateInterceptor("/update2");
+ return URLRequestPostInterceptorFactory::CreateInterceptor(
+ base::FilePath::FromUTF8Unsafe(POST_INTERCEPT_PATH));
}
class PartialMatch : public URLRequestPostInterceptor::RequestMatcher {
@@ -163,11 +169,15 @@ ComponentUpdaterTest::~ComponentUpdaterTest() {
}
void ComponentUpdaterTest::SetUp() {
+ get_interceptor_.reset(new GetInterceptor);
interceptor_factory_.reset(new InterceptorFactory);
+ post_interceptor_ = interceptor_factory_->CreateInterceptor();
+ EXPECT_TRUE(post_interceptor_);
}
void ComponentUpdaterTest::TearDown() {
interceptor_factory_.reset();
+ get_interceptor_.reset();
xmlCleanupGlobals();
}
@@ -208,6 +218,12 @@ void ComponentUpdaterTest::RunThreads() {
base::RunLoop runloop;
test_configurator()->SetQuitClosure(runloop.QuitClosure());
runloop.Run();
+
+ // Since some tests need to drain currently enqueued tasks such as network
+ // intercepts on the IO thread, run the threads until they are
+ // idle. The component updater service won't loop again until the loop count
+ // is set and the service is started.
+ RunThreadsUntilIdle();
}
void ComponentUpdaterTest::RunThreadsUntilIdle() {
@@ -237,15 +253,22 @@ TEST_F(ComponentUpdaterTest, StartStop) {
// the COMPONENT_UPDATER_STARTED and COMPONENT_UPDATER_SLEEPING notifications
// are generated. No pings are sent.
TEST_F(ComponentUpdaterTest, CheckCrxSleep) {
- URLRequestPostInterceptor* post_interceptor(
- interceptor_factory_->CreateInterceptor());
- EXPECT_TRUE(post_interceptor != NULL);
- EXPECT_TRUE(post_interceptor->ExpectRequest(new PartialMatch(
- "event eventtype")));
+ MockComponentObserver observer;
- content::URLLocalHostRequestPrepackagedInterceptor interceptor;
+ EXPECT_CALL(observer,
+ OnEvent(ComponentObserver::COMPONENT_UPDATER_STARTED, 0))
+ .Times(1);
+ EXPECT_CALL(observer,
+ OnEvent(ComponentObserver::COMPONENT_UPDATER_SLEEPING, 0))
+ .Times(2);
+ EXPECT_CALL(observer,
+ OnEvent(ComponentObserver::COMPONENT_NOT_UPDATED, 0))
+ .Times(2);
- MockComponentObserver observer;
+ EXPECT_TRUE(post_interceptor_->ExpectRequest(new PartialMatch(
+ "updatecheck"), test_file("updatecheck_reply_1.xml")));
+ EXPECT_TRUE(post_interceptor_->ExpectRequest(new PartialMatch(
+ "updatecheck"), test_file("updatecheck_reply_1.xml")));
TestInstaller installer;
CrxComponent com;
@@ -256,68 +279,69 @@ TEST_F(ComponentUpdaterTest, CheckCrxSleep) {
Version("1.1"),
&installer));
- const GURL expected_update_url(
- "http://localhost/upd?extra=foo"
- "&x=id%3Dabagagagagagagagagagagagagagagag%26v%3D1.1%26fp%3D%26uc");
-
- interceptor.SetResponse(expected_update_url,
- test_file("updatecheck_reply_1.xml"));
-
// We loop twice, but there are no updates so we expect two sleep messages.
test_configurator()->SetLoopCount(2);
-
- EXPECT_CALL(observer,
- OnEvent(ComponentObserver::COMPONENT_UPDATER_STARTED, 0))
- .Times(1);
component_updater()->Start();
-
- EXPECT_CALL(observer,
- OnEvent(ComponentObserver::COMPONENT_UPDATER_SLEEPING, 0))
- .Times(2);
-
- EXPECT_CALL(observer,
- OnEvent(ComponentObserver::COMPONENT_NOT_UPDATED, 0))
- .Times(2);
RunThreads();
- EXPECT_EQ(2, interceptor.GetHitCount());
-
EXPECT_EQ(0, static_cast<TestInstaller*>(com.installer)->error());
EXPECT_EQ(0, static_cast<TestInstaller*>(com.installer)->install_count());
+ // Expect to see the two update check requests and no other requests,
+ // including pings.
+ EXPECT_EQ(2, post_interceptor_->GetHitCount())
+ << post_interceptor_->GetRequestsAsString();
+ EXPECT_EQ(2, post_interceptor_->GetCount())
+ << post_interceptor_->GetRequestsAsString();
+ EXPECT_NE(string::npos, post_interceptor_->GetRequests()[0].find(
+ "<app appid=\"abagagagagagagagagagagagagagagag\" version=\"1.1\">"
+ "<updatecheck /></app>"))
+ << post_interceptor_->GetRequestsAsString();
+ EXPECT_NE(string::npos, post_interceptor_->GetRequests()[1].find(
+ "<app appid=\"abagagagagagagagagagagagagagagag\" version=\"1.1\">"
+ "<updatecheck /></app>"))
+ << post_interceptor_->GetRequestsAsString();
+
component_updater()->Stop();
// Loop twice again but this case we simulate a server error by returning
- // an empty file.
-
- interceptor.SetResponse(expected_update_url,
- test_file("updatecheck_reply_empty"));
-
- test_configurator()->SetLoopCount(2);
-
+ // an empty file. Expect the behavior of the service to be the same as before.
EXPECT_CALL(observer,
OnEvent(ComponentObserver::COMPONENT_UPDATER_STARTED, 0))
.Times(1);
- component_updater()->Start();
-
EXPECT_CALL(observer,
OnEvent(ComponentObserver::COMPONENT_UPDATER_SLEEPING, 0))
.Times(2);
EXPECT_CALL(observer,
OnEvent(ComponentObserver::COMPONENT_NOT_UPDATED, 0))
.Times(2);
- RunThreads();
- EXPECT_EQ(0, post_interceptor->GetHitCount())
- << post_interceptor->GetRequestsAsString();
- EXPECT_EQ(0, post_interceptor->GetMissCount())
- << post_interceptor->GetRequestsAsString();
+ post_interceptor_->Reset();
+ EXPECT_TRUE(post_interceptor_->ExpectRequest(new PartialMatch(
+ "updatecheck"), test_file("updatecheck_reply_empty")));
+ EXPECT_TRUE(post_interceptor_->ExpectRequest(new PartialMatch(
+ "updatecheck"), test_file("updatecheck_reply_empty")));
- EXPECT_EQ(4, interceptor.GetHitCount());
+ test_configurator()->SetLoopCount(2);
+ component_updater()->Start();
+ RunThreads();
EXPECT_EQ(0, static_cast<TestInstaller*>(com.installer)->error());
EXPECT_EQ(0, static_cast<TestInstaller*>(com.installer)->install_count());
+ EXPECT_EQ(2, post_interceptor_->GetHitCount())
+ << post_interceptor_->GetRequestsAsString();
+ EXPECT_EQ(2, post_interceptor_->GetCount())
+ << post_interceptor_->GetRequestsAsString();
+ EXPECT_NE(string::npos, post_interceptor_->GetRequests()[0].find(
+ "<app appid=\"abagagagagagagagagagagagagagagag\" version=\"1.1\">"
+ "<updatecheck /></app>"))
+ << post_interceptor_->GetRequestsAsString();
+ EXPECT_NE(string::npos, post_interceptor_->GetRequests()[1].find(
+ "<app appid=\"abagagagagagagagagagagagagagagag\" version=\"1.1\">"
+ "<updatecheck /></app>"))
+ << post_interceptor_->GetRequestsAsString();
+
component_updater()->Stop();
}
@@ -325,22 +349,12 @@ TEST_F(ComponentUpdaterTest, CheckCrxSleep) {
// the notifications above COMPONENT_UPDATE_FOUND and COMPONENT_UPDATE_READY
// should have been fired. We do two loops so the second time around there
// should be nothing left to do.
-// We also check that only 3 non-ping network requests are issued:
+// We also check that the following network requests are issued:
// 1- manifest check
// 2- download crx
-// 3- second manifest check.
-// Only one ping is sent.
+// 3- ping
+// 4- second manifest check.
TEST_F(ComponentUpdaterTest, InstallCrx) {
- URLRequestPostInterceptor* post_interceptor(
- interceptor_factory_->CreateInterceptor());
- EXPECT_TRUE(post_interceptor != NULL);
- EXPECT_TRUE(post_interceptor->ExpectRequest(new PartialMatch(
- "<o:app appid=\"jebgalgnebhfojomionfpkfelancnnkf\" version=\"1.0\">"
- "<o:event eventtype=\"3\" eventresult=\"1\" "
- "previousversion=\"0.9\" nextversion=\"1.0\"/></o:app>")));
-
- content::URLLocalHostRequestPrepackagedInterceptor interceptor;
-
MockComponentObserver observer1;
{
InSequence seq;
@@ -387,6 +401,16 @@ TEST_F(ComponentUpdaterTest, InstallCrx) {
.Times(1);
}
+ EXPECT_TRUE(post_interceptor_->ExpectRequest(new PartialMatch(
+ "updatecheck"), test_file("updatecheck_reply_1.xml")));
+ EXPECT_TRUE(post_interceptor_->ExpectRequest(new PartialMatch("event")));
+ EXPECT_TRUE(post_interceptor_->ExpectRequest(new PartialMatch(
+ "updatecheck"), test_file("updatecheck_reply_1.xml")));
+
+ get_interceptor_->SetResponse(
+ GURL(expected_crx_url),
+ test_file("jebgalgnebhfojomionfpkfelancnnkf.crx"));
+
TestInstaller installer1;
CrxComponent com1;
com1.observer = &observer1;
@@ -396,25 +420,7 @@ TEST_F(ComponentUpdaterTest, InstallCrx) {
com2.observer = &observer2;
RegisterComponent(&com2, kTestComponent_abag, Version("2.2"), &installer2);
- const GURL expected_update_url_1(
- "http://localhost/upd?extra=foo"
- "&x=id%3Djebgalgnebhfojomionfpkfelancnnkf%26v%3D0.9%26fp%3D%26uc"
- "&x=id%3Dabagagagagagagagagagagagagagagag%26v%3D2.2%26fp%3D%26uc");
-
- const GURL expected_update_url_2(
- "http://localhost/upd?extra=foo"
- "&x=id%3Dabagagagagagagagagagagagagagagag%26v%3D2.2%26fp%3D%26uc"
- "&x=id%3Djebgalgnebhfojomionfpkfelancnnkf%26v%3D1.0%26fp%3D%26uc");
-
- interceptor.SetResponse(expected_update_url_1,
- test_file("updatecheck_reply_1.xml"));
- interceptor.SetResponse(expected_update_url_2,
- test_file("updatecheck_reply_1.xml"));
- interceptor.SetResponse(GURL(expected_crx_url),
- test_file("jebgalgnebhfojomionfpkfelancnnkf.crx"));
-
test_configurator()->SetLoopCount(2);
-
component_updater()->Start();
RunThreads();
@@ -423,12 +429,37 @@ TEST_F(ComponentUpdaterTest, InstallCrx) {
EXPECT_EQ(0, static_cast<TestInstaller*>(com2.installer)->error());
EXPECT_EQ(0, static_cast<TestInstaller*>(com2.installer)->install_count());
- EXPECT_EQ(3, interceptor.GetHitCount());
-
- EXPECT_EQ(1, post_interceptor->GetHitCount())
- << post_interceptor->GetRequestsAsString();
- EXPECT_EQ(0, post_interceptor->GetMissCount())
- << post_interceptor->GetRequestsAsString();
+ // Expect three request in total: two update checks and one ping.
+ EXPECT_EQ(3, post_interceptor_->GetHitCount())
+ << post_interceptor_->GetRequestsAsString();
+ EXPECT_EQ(3, post_interceptor_->GetCount())
+ << post_interceptor_->GetRequestsAsString();
+
+ // Expect one component download.
+ EXPECT_EQ(1, get_interceptor_->GetHitCount());
+
+ EXPECT_NE(string::npos, post_interceptor_->GetRequests()[0].find(
+ "<app appid=\"jebgalgnebhfojomionfpkfelancnnkf\" version=\"0.9\">"
+ "<updatecheck /></app>"))
+ << post_interceptor_->GetRequestsAsString();
+ EXPECT_NE(string::npos, post_interceptor_->GetRequests()[0].find(
+ "<app appid=\"abagagagagagagagagagagagagagagag\" version=\"2.2\">"
+ "<updatecheck /></app>"))
+ << post_interceptor_->GetRequestsAsString();
+
+ EXPECT_NE(string::npos, post_interceptor_->GetRequests()[1].find(
+ "<app appid=\"jebgalgnebhfojomionfpkfelancnnkf\" "
+ "version=\"0.9\" nextversion=\"1.0\">"
+ "<event eventtype=\"3\" eventresult=\"1\"/></app>"))
+ << post_interceptor_->GetRequestsAsString();
+
+ EXPECT_NE(string::npos, post_interceptor_->GetRequests()[2].find(
+ "<app appid=\"jebgalgnebhfojomionfpkfelancnnkf\" version=\"1.0\">"
+ "<updatecheck /></app>"));
+ EXPECT_NE(string::npos, post_interceptor_->GetRequests()[2].find(
+ "<app appid=\"abagagagagagagagagagagagagagagag\" version=\"2.2\">"
+ "<updatecheck /></app>"))
+ << post_interceptor_->GetRequestsAsString();
component_updater()->Stop();
}
@@ -437,34 +468,29 @@ TEST_F(ComponentUpdaterTest, InstallCrx) {
// particular there should not be an install because the minimum product
// version is much higher than of chrome.
TEST_F(ComponentUpdaterTest, ProdVersionCheck) {
- URLRequestPostInterceptor* post_interceptor(
- interceptor_factory_->CreateInterceptor());
- EXPECT_TRUE(post_interceptor != NULL);
- EXPECT_TRUE(post_interceptor->ExpectRequest(new PartialMatch(
- "event eventtype")));
+ EXPECT_TRUE(post_interceptor_->ExpectRequest(new PartialMatch(
+ "updatecheck"), test_file("updatecheck_reply_2.xml")));
- content::URLLocalHostRequestPrepackagedInterceptor interceptor;
+ get_interceptor_->SetResponse(
+ GURL(expected_crx_url),
+ test_file("jebgalgnebhfojomionfpkfelancnnkf.crx"));
TestInstaller installer;
CrxComponent com;
RegisterComponent(&com, kTestComponent_jebg, Version("0.9"), &installer);
- const GURL expected_update_url(
- "http://localhost/upd?extra=foo&x=id%3D"
- "jebgalgnebhfojomionfpkfelancnnkf%26v%3D0.9%26fp%3D%26uc");
-
- interceptor.SetResponse(expected_update_url,
- test_file("updatecheck_reply_2.xml"));
- interceptor.SetResponse(GURL(expected_crx_url),
- test_file("jebgalgnebhfojomionfpkfelancnnkf.crx"));
-
test_configurator()->SetLoopCount(1);
component_updater()->Start();
RunThreads();
- EXPECT_EQ(0, post_interceptor->GetHitCount())
- << post_interceptor->GetRequestsAsString();
- EXPECT_EQ(1, interceptor.GetHitCount());
+ // Expect one update check and no ping.
+ EXPECT_EQ(1, post_interceptor_->GetHitCount())
+ << post_interceptor_->GetRequestsAsString();
+ EXPECT_EQ(1, post_interceptor_->GetCount())
+ << post_interceptor_->GetRequestsAsString();
+
+ // Expect no download to occur.
+ EXPECT_EQ(0, get_interceptor_->GetHitCount());
EXPECT_EQ(0, static_cast<TestInstaller*>(com.installer)->error());
EXPECT_EQ(0, static_cast<TestInstaller*>(com.installer)->install_count());
@@ -479,16 +505,6 @@ TEST_F(ComponentUpdaterTest, ProdVersionCheck) {
// - We make an on demand call.
// - This triggers a second loop, which has a reply that triggers an install.
TEST_F(ComponentUpdaterTest, OnDemandUpdate) {
- URLRequestPostInterceptor* post_interceptor(
- interceptor_factory_->CreateInterceptor());
- EXPECT_TRUE(post_interceptor != NULL);
- EXPECT_TRUE(post_interceptor->ExpectRequest(new PartialMatch(
- "<o:app appid=\"jebgalgnebhfojomionfpkfelancnnkf\" version=\"1.0\">"
- "<o:event eventtype=\"3\" eventresult=\"1\" "
- "previousversion=\"0.9\" nextversion=\"1.0\"/></o:app>")));
-
- content::URLLocalHostRequestPrepackagedInterceptor interceptor;
-
MockComponentObserver observer1;
{
InSequence seq;
@@ -541,6 +557,13 @@ TEST_F(ComponentUpdaterTest, OnDemandUpdate) {
.Times(1);
}
+ EXPECT_TRUE(post_interceptor_->ExpectRequest(new PartialMatch(
+ "updatecheck"), test_file("updatecheck_reply_empty")));
+
+ get_interceptor_->SetResponse(
+ GURL(expected_crx_url),
+ test_file("jebgalgnebhfojomionfpkfelancnnkf.crx"));
+
TestInstaller installer1;
CrxComponent com1;
com1.observer = &observer1;
@@ -550,30 +573,25 @@ TEST_F(ComponentUpdaterTest, OnDemandUpdate) {
com2.observer = &observer2;
RegisterComponent(&com2, kTestComponent_jebg, Version("0.9"), &installer2);
- const GURL expected_update_url_1(
- "http://localhost/upd?extra=foo"
- "&x=id%3Dabagagagagagagagagagagagagagagag%26v%3D2.2%26fp%3D%26uc"
- "&x=id%3Djebgalgnebhfojomionfpkfelancnnkf%26v%3D0.9%26fp%3D%26uc");
-
- const GURL expected_update_url_2(
- "http://localhost/upd?extra=foo"
- "&x=id%3Djebgalgnebhfojomionfpkfelancnnkf%26v%3D0.9%26fp%3D%26uc"
- "%26installsource%3Dondemand"
- "&x=id%3Dabagagagagagagagagagagagagagagag%26v%3D2.2%26fp%3D%26uc");
-
- interceptor.SetResponse(expected_update_url_1,
- test_file("updatecheck_reply_empty"));
- interceptor.SetResponse(expected_update_url_2,
- test_file("updatecheck_reply_1.xml"));
- interceptor.SetResponse(GURL(expected_crx_url),
- test_file("jebgalgnebhfojomionfpkfelancnnkf.crx"));
// No update normally.
test_configurator()->SetLoopCount(1);
component_updater()->Start();
RunThreads();
component_updater()->Stop();
+ EXPECT_EQ(1, post_interceptor_->GetHitCount())
+ << post_interceptor_->GetRequestsAsString();
+ EXPECT_EQ(1, post_interceptor_->GetCount())
+ << post_interceptor_->GetRequestsAsString();
+
+ EXPECT_EQ(0, get_interceptor_->GetHitCount());
+
// Update after an on-demand check is issued.
+ post_interceptor_->Reset();
+ EXPECT_TRUE(post_interceptor_->ExpectRequest(new PartialMatch(
+ "updatecheck"), test_file("updatecheck_reply_1.xml")));
+ EXPECT_TRUE(post_interceptor_->ExpectRequest(new PartialMatch("event")));
+
EXPECT_EQ(ComponentUpdateService::kOk,
OnDemandTester::OnDemand(component_updater(),
GetCrxComponentID(com2)));
@@ -586,7 +604,28 @@ TEST_F(ComponentUpdaterTest, OnDemandUpdate) {
EXPECT_EQ(0, static_cast<TestInstaller*>(com2.installer)->error());
EXPECT_EQ(1, static_cast<TestInstaller*>(com2.installer)->install_count());
- EXPECT_EQ(3, interceptor.GetHitCount());
+ EXPECT_EQ(2, post_interceptor_->GetHitCount())
+ << post_interceptor_->GetRequestsAsString();
+ EXPECT_EQ(2, post_interceptor_->GetCount())
+ << post_interceptor_->GetRequestsAsString();
+
+ EXPECT_EQ(1, get_interceptor_->GetHitCount());
+
+ // Expect the update check to contain an "ondemand" request for the
+ // second component (com2) and a normal request for the other component.
+ EXPECT_NE(string::npos, post_interceptor_->GetRequests()[0].find(
+ "<app appid=\"abagagagagagagagagagagagagagagag\" "
+ "version=\"2.2\"><updatecheck /></app>"))
+ << post_interceptor_->GetRequestsAsString();
+ EXPECT_NE(string::npos, post_interceptor_->GetRequests()[0].find(
+ "<app appid=\"jebgalgnebhfojomionfpkfelancnnkf\" "
+ "version=\"0.9\" installsource=\"ondemand\"><updatecheck /></app>"))
+ << post_interceptor_->GetRequestsAsString();
+ EXPECT_NE(string::npos, post_interceptor_->GetRequests()[1].find(
+ "<app appid=\"jebgalgnebhfojomionfpkfelancnnkf\" "
+ "version=\"0.9\" nextversion=\"1.0\">"
+ "<event eventtype=\"3\" eventresult=\"1\"/></app>"))
+ << post_interceptor_->GetRequestsAsString();
// Also check what happens if previous check too soon.
test_configurator()->SetOnDemandTime(60 * 60);
@@ -626,24 +665,24 @@ TEST_F(ComponentUpdaterTest, OnDemandUpdate) {
.Times(1);
}
- const GURL expected_update_url_3(
- "http://localhost/upd?extra=foo"
- "&x=id%3Djebgalgnebhfojomionfpkfelancnnkf%26v%3D1.0%26fp%3D%26uc"
- "&x=id%3Dabagagagagagagagagagagagagagagag%26v%3D2.2%26fp%3D%26uc");
-
// No update: error from no server response
- interceptor.SetResponse(expected_update_url_3,
- test_file("updatecheck_reply_empty"));
+ post_interceptor_->Reset();
+ EXPECT_TRUE(post_interceptor_->ExpectRequest(new PartialMatch(
+ "updatecheck"), test_file("updatecheck_reply_empty")));
+
test_configurator()->SetLoopCount(1);
component_updater()->Start();
EXPECT_EQ(ComponentUpdateService::kOk,
OnDemandTester::OnDemand(component_updater(),
GetCrxComponentID(com2)));
-
RunThreads();
-
component_updater()->Stop();
+ EXPECT_EQ(1, post_interceptor_->GetHitCount())
+ << post_interceptor_->GetRequestsAsString();
+ EXPECT_EQ(1, post_interceptor_->GetCount())
+ << post_interceptor_->GetRequestsAsString();
+
// No update: already updated to 1.0 so nothing new
EXPECT_TRUE(Mock::VerifyAndClearExpectations(&observer1));
{
@@ -672,20 +711,21 @@ TEST_F(ComponentUpdaterTest, OnDemandUpdate) {
.Times(1);
}
- interceptor.SetResponse(expected_update_url_3,
- test_file("updatecheck_reply_1.xml"));
+ post_interceptor_->Reset();
+ EXPECT_TRUE(post_interceptor_->ExpectRequest(new PartialMatch(
+ "updatecheck"), test_file("updatecheck_reply_1.xml")));
+
test_configurator()->SetLoopCount(1);
component_updater()->Start();
EXPECT_EQ(ComponentUpdateService::kOk,
OnDemandTester::OnDemand(component_updater(),
GetCrxComponentID(com2)));
-
RunThreads();
- EXPECT_EQ(1, post_interceptor->GetHitCount())
- << post_interceptor->GetRequestsAsString();
- EXPECT_EQ(0, post_interceptor->GetMissCount())
- << post_interceptor->GetRequestsAsString();
+ EXPECT_EQ(1, post_interceptor_->GetHitCount())
+ << post_interceptor_->GetRequestsAsString();
+ EXPECT_EQ(1, post_interceptor_->GetCount())
+ << post_interceptor_->GetRequestsAsString();
component_updater()->Stop();
}
@@ -693,16 +733,6 @@ TEST_F(ComponentUpdaterTest, OnDemandUpdate) {
// Verify that a previously registered component can get re-registered
// with a different version.
TEST_F(ComponentUpdaterTest, CheckReRegistration) {
- URLRequestPostInterceptor* post_interceptor(
- interceptor_factory_->CreateInterceptor());
- EXPECT_TRUE(post_interceptor != NULL);
- EXPECT_TRUE(post_interceptor->ExpectRequest(new PartialMatch(
- "<o:app appid=\"jebgalgnebhfojomionfpkfelancnnkf\" version=\"1.0\">"
- "<o:event eventtype=\"3\" eventresult=\"1\" "
- "previousversion=\"0.9\" nextversion=\"1.0\"/></o:app>")));
-
- content::URLLocalHostRequestPrepackagedInterceptor interceptor;
-
MockComponentObserver observer1;
{
InSequence seq;
@@ -749,6 +779,16 @@ TEST_F(ComponentUpdaterTest, CheckReRegistration) {
.Times(1);
}
+ EXPECT_TRUE(post_interceptor_->ExpectRequest(new PartialMatch(
+ "updatecheck"), test_file("updatecheck_reply_1.xml")));
+ EXPECT_TRUE(post_interceptor_->ExpectRequest(new PartialMatch("event")));
+ EXPECT_TRUE(post_interceptor_->ExpectRequest(new PartialMatch(
+ "updatecheck"), test_file("updatecheck_reply_1.xml")));
+
+ get_interceptor_->SetResponse(
+ GURL(expected_crx_url),
+ test_file("jebgalgnebhfojomionfpkfelancnnkf.crx"));
+
TestInstaller installer1;
CrxComponent com1;
com1.observer = &observer1;
@@ -758,28 +798,9 @@ TEST_F(ComponentUpdaterTest, CheckReRegistration) {
com2.observer = &observer2;
RegisterComponent(&com2, kTestComponent_abag, Version("2.2"), &installer2);
- // Start with 0.9, and update to 1.0
- const GURL expected_update_url_1(
- "http://localhost/upd?extra=foo"
- "&x=id%3Djebgalgnebhfojomionfpkfelancnnkf%26v%3D0.9%26fp%3D%26uc"
- "&x=id%3Dabagagagagagagagagagagagagagagag%26v%3D2.2%26fp%3D%26uc");
-
- const GURL expected_update_url_2(
- "http://localhost/upd?extra=foo"
- "&x=id%3Dabagagagagagagagagagagagagagagag%26v%3D2.2%26fp%3D%26uc"
- "&x=id%3Djebgalgnebhfojomionfpkfelancnnkf%26v%3D1.0%26fp%3D%26uc");
-
- interceptor.SetResponse(expected_update_url_1,
- test_file("updatecheck_reply_1.xml"));
- interceptor.SetResponse(expected_update_url_2,
- test_file("updatecheck_reply_1.xml"));
- interceptor.SetResponse(GURL(expected_crx_url),
- test_file("jebgalgnebhfojomionfpkfelancnnkf.crx"));
-
- // Loop twice to issue two checks: (1) with original 0.9 version
- // and (2) with the updated 1.0 version.
+ // Loop twice to issue two checks: (1) with original 0.9 version, update to
+ // 1.0, and do the second check (2) with the updated 1.0 version.
test_configurator()->SetLoopCount(2);
-
component_updater()->Start();
RunThreads();
@@ -788,12 +809,23 @@ TEST_F(ComponentUpdaterTest, CheckReRegistration) {
EXPECT_EQ(0, static_cast<TestInstaller*>(com2.installer)->error());
EXPECT_EQ(0, static_cast<TestInstaller*>(com2.installer)->install_count());
- EXPECT_EQ(1, post_interceptor->GetHitCount())
- << post_interceptor->GetRequestsAsString();
- EXPECT_EQ(0, post_interceptor->GetMissCount())
- << post_interceptor->GetRequestsAsString();
-
- EXPECT_EQ(3, interceptor.GetHitCount());
+ EXPECT_EQ(3, post_interceptor_->GetHitCount())
+ << post_interceptor_->GetRequestsAsString();
+ EXPECT_EQ(1, get_interceptor_->GetHitCount());
+
+ EXPECT_NE(string::npos, post_interceptor_->GetRequests()[0].find(
+ "<app appid=\"jebgalgnebhfojomionfpkfelancnnkf\" version=\"0.9\">"
+ "<updatecheck /></app>"))
+ << post_interceptor_->GetRequestsAsString();
+ EXPECT_NE(string::npos, post_interceptor_->GetRequests()[1].find(
+ "<app appid=\"jebgalgnebhfojomionfpkfelancnnkf\" "
+ "version=\"0.9\" nextversion=\"1.0\">"
+ "<event eventtype=\"3\" eventresult=\"1\"/></app>"))
+ << post_interceptor_->GetRequestsAsString();
+ EXPECT_NE(string::npos, post_interceptor_->GetRequests()[2].find(
+ "<app appid=\"jebgalgnebhfojomionfpkfelancnnkf\" version=\"1.0\">"
+ "<updatecheck /></app>"))
+ << post_interceptor_->GetRequestsAsString();
component_updater()->Stop();
@@ -826,6 +858,10 @@ TEST_F(ComponentUpdaterTest, CheckReRegistration) {
.Times(1);
}
+ post_interceptor_->Reset();
+ EXPECT_TRUE(post_interceptor_->ExpectRequest(new PartialMatch(
+ "updatecheck"), test_file("updatecheck_reply_1.xml")));
+
TestInstaller installer3;
EXPECT_EQ(ComponentUpdateService::kReplaced,
RegisterComponent(&com1,
@@ -833,35 +869,27 @@ TEST_F(ComponentUpdaterTest, CheckReRegistration) {
Version("2.2"),
&installer3));
- // Check that we send out 2.2 as our version.
- // Interceptor's hit count should go up by 1.
- const GURL expected_update_url_3(
- "http://localhost/upd?extra=foo"
- "&x=id%3Djebgalgnebhfojomionfpkfelancnnkf%26v%3D2.2%26fp%3D%26uc"
- "&x=id%3Dabagagagagagagagagagagagagagagag%26v%3D2.2%26fp%3D%26uc");
-
- interceptor.SetResponse(expected_update_url_3,
- test_file("updatecheck_reply_1.xml"));
-
// Loop once just to notice the check happening with the re-register version.
test_configurator()->SetLoopCount(1);
component_updater()->Start();
RunThreads();
- EXPECT_EQ(4, interceptor.GetHitCount());
-
- // No additional pings are expected.
- EXPECT_EQ(1, post_interceptor->GetHitCount())
- << post_interceptor->GetRequestsAsString();
- EXPECT_EQ(0, post_interceptor->GetMissCount())
- << post_interceptor->GetRequestsAsString();
-
// We created a new installer, so the counts go back to 0.
EXPECT_EQ(0, static_cast<TestInstaller*>(com1.installer)->error());
EXPECT_EQ(0, static_cast<TestInstaller*>(com1.installer)->install_count());
EXPECT_EQ(0, static_cast<TestInstaller*>(com2.installer)->error());
EXPECT_EQ(0, static_cast<TestInstaller*>(com2.installer)->install_count());
+ // One update check and no additional pings are expected.
+ EXPECT_EQ(1, post_interceptor_->GetHitCount())
+ << post_interceptor_->GetRequestsAsString();
+ EXPECT_EQ(1, post_interceptor_->GetCount())
+ << post_interceptor_->GetRequestsAsString();
+
+ EXPECT_NE(string::npos, post_interceptor_->GetRequests()[0].find(
+ "<app appid=\"jebgalgnebhfojomionfpkfelancnnkf\" version=\"2.2\">"
+ "<updatecheck /></app>"));
+
component_updater()->Stop();
}
@@ -877,67 +905,63 @@ TEST_F(ComponentUpdaterTest, CheckReRegistration) {
// There should be two pings, one for each update. The second will bear a
// diffresult=1, while the first will not.
TEST_F(ComponentUpdaterTest, DifferentialUpdate) {
- URLRequestPostInterceptor* post_interceptor(
- interceptor_factory_->CreateInterceptor());
- EXPECT_TRUE(post_interceptor != NULL);
- EXPECT_TRUE(post_interceptor->ExpectRequest(new PartialMatch(
- "<o:app appid=\"ihfokbkgjpifnbbojhneepfflplebdkc\" version=\"1.0\">"
- "<o:event eventtype=\"3\" eventresult=\"1\" "
- "previousversion=\"0.0\" nextversion=\"1.0\" nextfp=\"1\"/></o:app>")));
- EXPECT_TRUE(post_interceptor->ExpectRequest(new PartialMatch(
- "<o:app appid=\"ihfokbkgjpifnbbojhneepfflplebdkc\" version=\"2.0\">"
- "<o:event eventtype=\"3\" eventresult=\"1\" "
- "previousversion=\"1.0\" nextversion=\"2.0\" "
- "diffresult=\"1\" previousfp=\"1\" nextfp=\"f22\"/></o:app>")));
-
- content::URLLocalHostRequestPrepackagedInterceptor interceptor;
+ EXPECT_TRUE(post_interceptor_->ExpectRequest(new PartialMatch(
+ "updatecheck"), test_file("updatecheck_diff_reply_1.xml")));
+ EXPECT_TRUE(post_interceptor_->ExpectRequest(new PartialMatch("event")));
+ EXPECT_TRUE(post_interceptor_->ExpectRequest(new PartialMatch(
+ "updatecheck"), test_file("updatecheck_diff_reply_2.xml")));
+ EXPECT_TRUE(post_interceptor_->ExpectRequest(new PartialMatch("event")));
+ EXPECT_TRUE(post_interceptor_->ExpectRequest(new PartialMatch(
+ "updatecheck"), test_file("updatecheck_diff_reply_3.xml")));
+
+ get_interceptor_->SetResponse(
+ GURL("http://localhost/download/ihfokbkgjpifnbbojhneepfflplebdkc_1.crx"),
+ test_file("ihfokbkgjpifnbbojhneepfflplebdkc_1.crx"));
+ get_interceptor_->SetResponse(
+ GURL("http://localhost/download/"
+ "ihfokbkgjpifnbbojhneepfflplebdkc_1to2.crx"),
+ test_file("ihfokbkgjpifnbbojhneepfflplebdkc_1to2.crx"));
VersionedTestInstaller installer;
CrxComponent com;
RegisterComponent(&com, kTestComponent_ihfo, Version("0.0"), &installer);
- const GURL expected_update_url_0(
- "http://localhost/upd?extra=foo"
- "&x=id%3Dihfokbkgjpifnbbojhneepfflplebdkc%26v%3D0.0%26fp%3D%26uc");
- const GURL expected_update_url_1(
- "http://localhost/upd?extra=foo"
- "&x=id%3Dihfokbkgjpifnbbojhneepfflplebdkc%26v%3D1.0%26fp%3D1%26uc");
- const GURL expected_update_url_2(
- "http://localhost/upd?extra=foo"
- "&x=id%3Dihfokbkgjpifnbbojhneepfflplebdkc%26v%3D2.0%26fp%3Df22%26uc");
- const GURL expected_crx_url_1(
- "http://localhost/download/ihfokbkgjpifnbbojhneepfflplebdkc_1.crx");
- const GURL expected_crx_url_1_diff_2(
- "http://localhost/download/ihfokbkgjpifnbbojhneepfflplebdkc_1to2.crx");
-
- interceptor.SetResponse(expected_update_url_0,
- test_file("updatecheck_diff_reply_1.xml"));
- interceptor.SetResponse(expected_update_url_1,
- test_file("updatecheck_diff_reply_2.xml"));
- interceptor.SetResponse(expected_update_url_2,
- test_file("updatecheck_diff_reply_3.xml"));
- interceptor.SetResponse(expected_crx_url_1,
- test_file("ihfokbkgjpifnbbojhneepfflplebdkc_1.crx"));
- interceptor.SetResponse(
- expected_crx_url_1_diff_2,
- test_file("ihfokbkgjpifnbbojhneepfflplebdkc_1to2.crx"));
-
test_configurator()->SetLoopCount(3);
-
component_updater()->Start();
RunThreads();
EXPECT_EQ(0, static_cast<TestInstaller*>(com.installer)->error());
EXPECT_EQ(2, static_cast<TestInstaller*>(com.installer)->install_count());
- // One ping has the diffresult=1, the other does not.
- EXPECT_EQ(2, post_interceptor->GetHitCount())
- << post_interceptor->GetRequestsAsString();
- EXPECT_EQ(0, post_interceptor->GetMissCount())
- << post_interceptor->GetRequestsAsString();
-
- EXPECT_EQ(5, interceptor.GetHitCount());
-
+ EXPECT_EQ(5, post_interceptor_->GetHitCount())
+ << post_interceptor_->GetRequestsAsString();
+ EXPECT_EQ(5, post_interceptor_->GetCount())
+ << post_interceptor_->GetRequestsAsString();
+ EXPECT_EQ(2, get_interceptor_->GetHitCount());
+
+ EXPECT_NE(string::npos, post_interceptor_->GetRequests()[0].find(
+ "<app appid=\"ihfokbkgjpifnbbojhneepfflplebdkc\" version=\"0.0\">"
+ "<updatecheck /></app>"))
+ << post_interceptor_->GetRequestsAsString();
+ EXPECT_NE(string::npos, post_interceptor_->GetRequests()[1].find(
+ "<app appid=\"ihfokbkgjpifnbbojhneepfflplebdkc\" "
+ "version=\"0.0\" nextversion=\"1.0\">"
+ "<event eventtype=\"3\" eventresult=\"1\" nextfp=\"1\"/></app>"))
+ << post_interceptor_->GetRequestsAsString();
+ EXPECT_NE(string::npos, post_interceptor_->GetRequests()[2].find(
+ "<app appid=\"ihfokbkgjpifnbbojhneepfflplebdkc\" version=\"1.0\">"
+ "<updatecheck /><packages><package fp=\"1\"/></packages></app>"))
+ << post_interceptor_->GetRequestsAsString();
+ EXPECT_NE(string::npos, post_interceptor_->GetRequests()[3].find(
+ "<app appid=\"ihfokbkgjpifnbbojhneepfflplebdkc\" "
+ "version=\"1.0\" nextversion=\"2.0\">"
+ "<event eventtype=\"3\" eventresult=\"1\" diffresult=\"1\" "
+ "previousfp=\"1\" nextfp=\"22\"/></app>"))
+ << post_interceptor_->GetRequestsAsString();
+ EXPECT_NE(string::npos, post_interceptor_->GetRequests()[4].find(
+ "<app appid=\"ihfokbkgjpifnbbojhneepfflplebdkc\" version=\"2.0\">"
+ "<updatecheck /><packages><package fp=\"22\"/></packages></app>"))
+ << post_interceptor_->GetRequestsAsString();
component_updater()->Stop();
}
@@ -952,49 +976,28 @@ TEST_F(ComponentUpdaterTest, DifferentialUpdate) {
// 4- update check (loop 2 - no update available)
// There should be one ping for the first attempted update.
TEST_F(ComponentUpdaterTest, DifferentialUpdateFails) {
- URLRequestPostInterceptor* post_interceptor(
- interceptor_factory_->CreateInterceptor());
- EXPECT_TRUE(post_interceptor != NULL);
- EXPECT_TRUE(post_interceptor->ExpectRequest(new PartialMatch(
- "<o:app appid=\"ihfokbkgjpifnbbojhneepfflplebdkc\" version=\"2.0\">"
- "<o:event eventtype=\"3\" eventresult=\"1\" "
- "previousversion=\"1.0\" nextversion=\"2.0\" "
- "diffresult=\"0\" differrorcat=\"2\" differrorcode=\"16\" "
- "nextfp=\"f22\"/></o:app>")));
-
- content::URLLocalHostRequestPrepackagedInterceptor interceptor;
+ EXPECT_TRUE(post_interceptor_->ExpectRequest(new PartialMatch(
+ "updatecheck"), test_file("updatecheck_diff_reply_2.xml")));
+ EXPECT_TRUE(post_interceptor_->ExpectRequest(new PartialMatch("event")));
+ EXPECT_TRUE(post_interceptor_->ExpectRequest(new PartialMatch(
+ "updatecheck"), test_file("updatecheck_diff_reply_3.xml")));
+
+ get_interceptor_->SetResponse(
+ GURL("http://localhost/download/ihfokbkgjpifnbbojhneepfflplebdkc_1.crx"),
+ test_file("ihfokbkgjpifnbbojhneepfflplebdkc_1.crx"));
+ get_interceptor_->SetResponse(
+ GURL("http://localhost/download/"
+ "ihfokbkgjpifnbbojhneepfflplebdkc_1to2.crx"),
+ test_file("ihfokbkgjpifnbbojhneepfflplebdkc_1to2.crx"));
+ get_interceptor_->SetResponse(
+ GURL("http://localhost/download/ihfokbkgjpifnbbojhneepfflplebdkc_2.crx"),
+ test_file("ihfokbkgjpifnbbojhneepfflplebdkc_2.crx"));
TestInstaller installer;
CrxComponent com;
RegisterComponent(&com, kTestComponent_ihfo, Version("1.0"), &installer);
- const GURL expected_update_url_1(
- "http://localhost/upd?extra=foo"
- "&x=id%3Dihfokbkgjpifnbbojhneepfflplebdkc%26v%3D1.0%26fp%3D%26uc");
- const GURL expected_update_url_2(
- "http://localhost/upd?extra=foo"
- "&x=id%3Dihfokbkgjpifnbbojhneepfflplebdkc%26v%3D2.0%26fp%3Df22%26uc");
- const GURL expected_crx_url_1(
- "http://localhost/download/ihfokbkgjpifnbbojhneepfflplebdkc_1.crx");
- const GURL expected_crx_url_1_diff_2(
- "http://localhost/download/ihfokbkgjpifnbbojhneepfflplebdkc_1to2.crx");
- const GURL expected_crx_url_2(
- "http://localhost/download/ihfokbkgjpifnbbojhneepfflplebdkc_2.crx");
-
- interceptor.SetResponse(expected_update_url_1,
- test_file("updatecheck_diff_reply_2.xml"));
- interceptor.SetResponse(expected_update_url_2,
- test_file("updatecheck_diff_reply_3.xml"));
- interceptor.SetResponse(expected_crx_url_1,
- test_file("ihfokbkgjpifnbbojhneepfflplebdkc_1.crx"));
- interceptor.SetResponse(
- expected_crx_url_1_diff_2,
- test_file("ihfokbkgjpifnbbojhneepfflplebdkc_1to2.crx"));
- interceptor.SetResponse(expected_crx_url_2,
- test_file("ihfokbkgjpifnbbojhneepfflplebdkc_2.crx"));
-
test_configurator()->SetLoopCount(2);
-
component_updater()->Start();
RunThreads();
@@ -1002,34 +1005,32 @@ TEST_F(ComponentUpdaterTest, DifferentialUpdateFails) {
EXPECT_EQ(0, static_cast<TestInstaller*>(com.installer)->error());
EXPECT_EQ(1, static_cast<TestInstaller*>(com.installer)->install_count());
- EXPECT_EQ(1, post_interceptor->GetHitCount())
- << post_interceptor->GetRequestsAsString();
- EXPECT_EQ(0, post_interceptor->GetMissCount())
- << post_interceptor->GetRequestsAsString();
-
- EXPECT_EQ(4, interceptor.GetHitCount());
+ EXPECT_EQ(3, post_interceptor_->GetHitCount())
+ << post_interceptor_->GetRequestsAsString();
+ EXPECT_EQ(3, post_interceptor_->GetCount())
+ << post_interceptor_->GetRequestsAsString();
+ EXPECT_EQ(2, get_interceptor_->GetHitCount());
+
+ EXPECT_NE(string::npos, post_interceptor_->GetRequests()[0].find(
+ "<app appid=\"ihfokbkgjpifnbbojhneepfflplebdkc\" version=\"1.0\">"
+ "<updatecheck /></app>"))
+ << post_interceptor_->GetRequestsAsString();
+ EXPECT_NE(string::npos, post_interceptor_->GetRequests()[1].find(
+ "<app appid=\"ihfokbkgjpifnbbojhneepfflplebdkc\" "
+ "version=\"1.0\" nextversion=\"2.0\">"
+ "<event eventtype=\"3\" eventresult=\"1\" diffresult=\"0\" "
+ "differrorcat=\"2\" differrorcode=\"16\" nextfp=\"22\"/></app>"))
+ << post_interceptor_->GetRequestsAsString();
+ EXPECT_NE(string::npos, post_interceptor_->GetRequests()[2].find(
+ "<app appid=\"ihfokbkgjpifnbbojhneepfflplebdkc\" version=\"2.0\">"
+ "<updatecheck /><packages><package fp=\"22\"/></packages></app>"))
+ << post_interceptor_->GetRequestsAsString();
component_updater()->Stop();
}
// Verify that a failed installation causes an install failure ping.
TEST_F(ComponentUpdaterTest, CheckFailedInstallPing) {
- URLRequestPostInterceptor* post_interceptor(
- interceptor_factory_->CreateInterceptor());
- EXPECT_TRUE(post_interceptor != NULL);
- EXPECT_TRUE(post_interceptor->ExpectRequest(new PartialMatch(
- "<o:app appid=\"jebgalgnebhfojomionfpkfelancnnkf\" version=\"0.9\">"
- "<o:event eventtype=\"3\" eventresult=\"0\" "
- "previousversion=\"0.9\" nextversion=\"1.0\" "
- "errorcat=\"3\" errorcode=\"9\"/></o:app>")));
- EXPECT_TRUE(post_interceptor->ExpectRequest(new PartialMatch(
- "<o:app appid=\"jebgalgnebhfojomionfpkfelancnnkf\" version=\"0.9\">"
- "<o:event eventtype=\"3\" eventresult=\"0\" "
- "previousversion=\"0.9\" nextversion=\"1.0\" "
- "errorcat=\"3\" errorcode=\"9\"/></o:app>")));
-
- content::URLLocalHostRequestPrepackagedInterceptor interceptor;
-
// This test installer reports installation failure.
class : public TestInstaller {
virtual bool Install(const base::DictionaryValue& manifest,
@@ -1040,30 +1041,58 @@ TEST_F(ComponentUpdaterTest, CheckFailedInstallPing) {
}
} installer;
+ EXPECT_TRUE(post_interceptor_->ExpectRequest(new PartialMatch(
+ "updatecheck"), test_file("updatecheck_reply_1.xml")));
+ EXPECT_TRUE(post_interceptor_->ExpectRequest(new PartialMatch("event")));
+ EXPECT_TRUE(post_interceptor_->ExpectRequest(new PartialMatch(
+ "updatecheck"), test_file("updatecheck_reply_1.xml")));
+ EXPECT_TRUE(post_interceptor_->ExpectRequest(new PartialMatch("event")));
+ get_interceptor_->SetResponse(
+ GURL(expected_crx_url),
+ test_file("jebgalgnebhfojomionfpkfelancnnkf.crx"));
+
+ // Start with 0.9, and attempt update to 1.0.
+ // Loop twice to issue two checks: (1) with original 0.9 version
+ // and (2), which should retry with 0.9.
CrxComponent com;
RegisterComponent(&com, kTestComponent_jebg, Version("0.9"), &installer);
- // Start with 0.9, and attempt update to 1.0
- const GURL expected_update_url_1(
- "http://localhost/upd?extra=foo"
- "&x=id%3Djebgalgnebhfojomionfpkfelancnnkf%26v%3D0.9%26fp%3D%26uc");
-
- interceptor.SetResponse(expected_update_url_1,
- test_file("updatecheck_reply_1.xml"));
- interceptor.SetResponse(GURL(expected_crx_url),
- test_file("jebgalgnebhfojomionfpkfelancnnkf.crx"));
-
- // Loop twice to issue two checks: (1) with original 0.9 version
- // and (2), which should retry with 0.9.
test_configurator()->SetLoopCount(2);
component_updater()->Start();
RunThreads();
+ EXPECT_EQ(4, post_interceptor_->GetHitCount())
+ << post_interceptor_->GetRequestsAsString();
+ EXPECT_EQ(2, get_interceptor_->GetHitCount());
+
+ EXPECT_NE(string::npos, post_interceptor_->GetRequests()[0].find(
+ "<app appid=\"jebgalgnebhfojomionfpkfelancnnkf\" version=\"0.9\">"
+ "<updatecheck /></app>"))
+ << post_interceptor_->GetRequestsAsString();
+ EXPECT_NE(string::npos, post_interceptor_->GetRequests()[1].find(
+ "<app appid=\"jebgalgnebhfojomionfpkfelancnnkf\" "
+ "version=\"0.9\" nextversion=\"1.0\">"
+ "<event eventtype=\"3\" eventresult=\"0\" "
+ "errorcat=\"3\" errorcode=\"9\"/></app>"))
+ << post_interceptor_->GetRequestsAsString();
+ EXPECT_NE(string::npos, post_interceptor_->GetRequests()[2].find(
+ "<app appid=\"jebgalgnebhfojomionfpkfelancnnkf\" version=\"0.9\">"
+ "<updatecheck /></app>"))
+ << post_interceptor_->GetRequestsAsString();
+ EXPECT_NE(string::npos, post_interceptor_->GetRequests()[3].find(
+ "<app appid=\"jebgalgnebhfojomionfpkfelancnnkf\" "
+ "version=\"0.9\" nextversion=\"1.0\">"
+ "<event eventtype=\"3\" eventresult=\"0\" "
+ "errorcat=\"3\" errorcode=\"9\"/></app>"))
+ << post_interceptor_->GetRequestsAsString();
+
// Loop once more, but expect no ping because a noupdate response is issued.
// This is necessary to clear out the fire-and-forget ping from the previous
// iteration.
- interceptor.SetResponse(expected_update_url_1,
- test_file("updatecheck_reply_noupdate.xml"));
+ post_interceptor_->Reset();
+ EXPECT_TRUE(post_interceptor_->ExpectRequest(new PartialMatch(
+ "updatecheck"), test_file("updatecheck_reply_noupdate.xml")));
+
test_configurator()->SetLoopCount(1);
component_updater()->Start();
RunThreads();
@@ -1071,12 +1100,15 @@ TEST_F(ComponentUpdaterTest, CheckFailedInstallPing) {
EXPECT_EQ(0, static_cast<TestInstaller*>(com.installer)->error());
EXPECT_EQ(2, static_cast<TestInstaller*>(com.installer)->install_count());
- EXPECT_EQ(2, post_interceptor->GetHitCount())
- << post_interceptor->GetRequestsAsString();
- EXPECT_EQ(0, post_interceptor->GetMissCount())
- << post_interceptor->GetRequestsAsString();
+ EXPECT_EQ(1, post_interceptor_->GetHitCount())
+ << post_interceptor_->GetRequestsAsString();
+ EXPECT_EQ(1, post_interceptor_->GetCount())
+ << post_interceptor_->GetRequestsAsString();
- EXPECT_EQ(5, interceptor.GetHitCount());
+ EXPECT_NE(string::npos, post_interceptor_->GetRequests()[0].find(
+ "<app appid=\"jebgalgnebhfojomionfpkfelancnnkf\" version=\"0.9\">"
+ "<updatecheck /></app>"))
+ << post_interceptor_->GetRequestsAsString();
component_updater()->Stop();
}
@@ -1085,74 +1117,73 @@ TEST_F(ComponentUpdaterTest, CheckFailedInstallPing) {
// ihfokbkgjpifnbbojhneepfflplebdkc_1to2_bad.crx contains an incorrect
// patching instruction that should fail.
TEST_F(ComponentUpdaterTest, DifferentialUpdateFailErrorcode) {
- URLRequestPostInterceptor* post_interceptor(
- interceptor_factory_->CreateInterceptor());
- EXPECT_TRUE(post_interceptor != NULL);
- EXPECT_TRUE(post_interceptor->ExpectRequest(new PartialMatch(
- "<o:app appid=\"ihfokbkgjpifnbbojhneepfflplebdkc\" version=\"1.0\">"
- "<o:event eventtype=\"3\" eventresult=\"1\" "
- "previousversion=\"0.0\" nextversion=\"1.0\" nextfp=\"1\"/></o:app>")));
- EXPECT_TRUE(post_interceptor->ExpectRequest(new PartialMatch(
- "<o:app appid=\"ihfokbkgjpifnbbojhneepfflplebdkc\" version=\"2.0\">"
- "<o:event eventtype=\"3\" eventresult=\"1\" "
- "previousversion=\"1.0\" nextversion=\"2.0\" "
- "diffresult=\"0\" differrorcat=\"2\" "
- "differrorcode=\"14\" diffextracode1=\"305\" "
- "previousfp=\"1\" nextfp=\"f22\"/></o:app>")));
-
- content::URLLocalHostRequestPrepackagedInterceptor interceptor;
+ EXPECT_TRUE(post_interceptor_->ExpectRequest(new PartialMatch(
+ "updatecheck"), test_file("updatecheck_diff_reply_1.xml")));
+ EXPECT_TRUE(post_interceptor_->ExpectRequest(new PartialMatch("event")));
+ EXPECT_TRUE(post_interceptor_->ExpectRequest(new PartialMatch(
+ "updatecheck"), test_file("updatecheck_diff_reply_2.xml")));
+ EXPECT_TRUE(post_interceptor_->ExpectRequest(new PartialMatch("event")));
+ EXPECT_TRUE(post_interceptor_->ExpectRequest(new PartialMatch(
+ "updatecheck"), test_file("updatecheck_diff_reply_3.xml")));
+
+ get_interceptor_->SetResponse(
+ GURL("http://localhost/download/ihfokbkgjpifnbbojhneepfflplebdkc_1.crx"),
+ test_file("ihfokbkgjpifnbbojhneepfflplebdkc_1.crx"));
+ // This intercept returns a different file than what is specified in the
+ // update check response and requested in the download. The file that is
+ // actually dowloaded contains a patching error, an therefore, an error
+ // is injected at the time of patching.
+ get_interceptor_->SetResponse(
+ GURL("http://localhost/download/"
+ "ihfokbkgjpifnbbojhneepfflplebdkc_1to2.crx"),
+ test_file("ihfokbkgjpifnbbojhneepfflplebdkc_1to2_bad.crx"));
+ get_interceptor_->SetResponse(
+ GURL("http://localhost/download/ihfokbkgjpifnbbojhneepfflplebdkc_2.crx"),
+ test_file("ihfokbkgjpifnbbojhneepfflplebdkc_2.crx"));
VersionedTestInstaller installer;
CrxComponent com;
RegisterComponent(&com, kTestComponent_ihfo, Version("0.0"), &installer);
- const GURL expected_update_url_0(
- "http://localhost/upd?extra=foo"
- "&x=id%3Dihfokbkgjpifnbbojhneepfflplebdkc%26v%3D0.0%26fp%3D%26uc");
- const GURL expected_update_url_1(
- "http://localhost/upd?extra=foo"
- "&x=id%3Dihfokbkgjpifnbbojhneepfflplebdkc%26v%3D1.0%26fp%3D1%26uc");
- const GURL expected_update_url_2(
- "http://localhost/upd?extra=foo"
- "&x=id%3Dihfokbkgjpifnbbojhneepfflplebdkc%26v%3D2.0%26fp%3Df22%26uc");
- const GURL expected_crx_url_1(
- "http://localhost/download/ihfokbkgjpifnbbojhneepfflplebdkc_1.crx");
- const GURL expected_crx_url_1_diff_2(
- "http://localhost/download/ihfokbkgjpifnbbojhneepfflplebdkc_1to2.crx");
- const GURL expected_crx_url_2(
- "http://localhost/download/ihfokbkgjpifnbbojhneepfflplebdkc_2.crx");
-
- interceptor.SetResponse(expected_update_url_0,
- test_file("updatecheck_diff_reply_1.xml"));
- interceptor.SetResponse(expected_update_url_1,
- test_file("updatecheck_diff_reply_2.xml"));
- interceptor.SetResponse(expected_update_url_2,
- test_file("updatecheck_diff_reply_3.xml"));
- interceptor.SetResponse(expected_crx_url_1,
- test_file("ihfokbkgjpifnbbojhneepfflplebdkc_1.crx"));
- interceptor.SetResponse(
- expected_crx_url_1_diff_2,
- test_file("ihfokbkgjpifnbbojhneepfflplebdkc_1to2_bad.crx"));
- interceptor.SetResponse(expected_crx_url_2,
- test_file("ihfokbkgjpifnbbojhneepfflplebdkc_2.crx"));
-
- test_configurator()->SetLoopCount(2);
-
+ test_configurator()->SetLoopCount(3);
component_updater()->Start();
RunThreads();
component_updater()->Stop();
- // There may still be pings in the queue.
- RunThreadsUntilIdle();
EXPECT_EQ(0, static_cast<TestInstaller*>(com.installer)->error());
EXPECT_EQ(2, static_cast<TestInstaller*>(com.installer)->install_count());
- EXPECT_EQ(2, post_interceptor->GetHitCount())
- << post_interceptor->GetRequestsAsString();
- EXPECT_EQ(0, post_interceptor->GetMissCount())
- << post_interceptor->GetRequestsAsString();
-
- EXPECT_EQ(5, interceptor.GetHitCount());
+ EXPECT_EQ(5, post_interceptor_->GetHitCount())
+ << post_interceptor_->GetRequestsAsString();
+ EXPECT_EQ(5, post_interceptor_->GetCount())
+ << post_interceptor_->GetRequestsAsString();
+ EXPECT_EQ(3, get_interceptor_->GetHitCount());
+
+ EXPECT_NE(string::npos, post_interceptor_->GetRequests()[0].find(
+ "<app appid=\"ihfokbkgjpifnbbojhneepfflplebdkc\" version=\"0.0\">"
+ "<updatecheck /></app>"))
+ << post_interceptor_->GetRequestsAsString();
+ EXPECT_NE(string::npos, post_interceptor_->GetRequests()[1].find(
+ "<app appid=\"ihfokbkgjpifnbbojhneepfflplebdkc\" "
+ "version=\"0.0\" nextversion=\"1.0\">"
+ "<event eventtype=\"3\" eventresult=\"1\" nextfp=\"1\"/></app>"))
+ << post_interceptor_->GetRequestsAsString();
+ EXPECT_NE(string::npos, post_interceptor_->GetRequests()[2].find(
+ "<app appid=\"ihfokbkgjpifnbbojhneepfflplebdkc\" version=\"1.0\">"
+ "<updatecheck /><packages><package fp=\"1\"/></packages></app>"))
+ << post_interceptor_->GetRequestsAsString();
+ EXPECT_NE(string::npos, post_interceptor_->GetRequests()[3].find(
+ "<app appid=\"ihfokbkgjpifnbbojhneepfflplebdkc\" "
+ "version=\"1.0\" nextversion=\"2.0\">"
+ "<event eventtype=\"3\" eventresult=\"1\" "
+ "diffresult=\"0\" differrorcat=\"2\" "
+ "differrorcode=\"14\" diffextracode1=\"305\" "
+ "previousfp=\"1\" nextfp=\"22\"/></app>"))
+ << post_interceptor_->GetRequestsAsString();
+ EXPECT_NE(string::npos, post_interceptor_->GetRequests()[4].find(
+ "<app appid=\"ihfokbkgjpifnbbojhneepfflplebdkc\" version=\"2.0\">"
+ "<updatecheck /><packages><package fp=\"22\"/></packages></app>"))
+ << post_interceptor_->GetRequestsAsString();
}
} // namespace component_updater

Powered by Google App Engine
This is Rietveld 408576698