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

Unified Diff: components/update_client/ping_manager_unittest.cc

Issue 2835803002: Refactor the UpdateEngine and its actions in the component updater. (Closed)
Patch Set: feedback up to #6 Created 3 years, 8 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 | « components/update_client/ping_manager.cc ('k') | components/update_client/request_sender_unittest.cc » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: components/update_client/ping_manager_unittest.cc
diff --git a/components/update_client/ping_manager_unittest.cc b/components/update_client/ping_manager_unittest.cc
index 9795d6762e050c5e49678888183dbc05794bbcb7..2c85259e440d95580d1798d5c83179c7efd7631f 100644
--- a/components/update_client/ping_manager_unittest.cc
+++ b/components/update_client/ping_manager_unittest.cc
@@ -6,13 +6,16 @@
#include <memory>
#include <string>
+#include <vector>
+#include "base/memory/ptr_util.h"
#include "base/memory/ref_counted.h"
#include "base/run_loop.h"
#include "base/threading/thread_task_runner_handle.h"
#include "base/version.h"
-#include "components/update_client/crx_update_item.h"
+#include "components/update_client/component.h"
#include "components/update_client/test_configurator.h"
+#include "components/update_client/update_engine.h"
#include "components/update_client/url_request_post_interceptor.h"
#include "net/url_request/url_request_test_util.h"
#include "testing/gtest/include/gtest/gtest.h"
@@ -21,13 +24,15 @@ using std::string;
namespace update_client {
-class ComponentUpdaterPingManagerTest : public testing::Test {
+class PingManagerTest : public testing::Test {
public:
- ComponentUpdaterPingManagerTest();
- ~ComponentUpdaterPingManagerTest() override {}
+ PingManagerTest();
+ ~PingManagerTest() override {}
void RunThreadsUntilIdle();
+ std::unique_ptr<UpdateContext> MakeFakeUpdateContext() const;
+
// Overrides from testing::Test.
void SetUp() override;
void TearDown() override;
@@ -40,25 +45,31 @@ class ComponentUpdaterPingManagerTest : public testing::Test {
base::MessageLoopForIO loop_;
};
-ComponentUpdaterPingManagerTest::ComponentUpdaterPingManagerTest() {
-}
+PingManagerTest::PingManagerTest() {}
-void ComponentUpdaterPingManagerTest::SetUp() {
+void PingManagerTest::SetUp() {
config_ = new TestConfigurator(base::ThreadTaskRunnerHandle::Get(),
base::ThreadTaskRunnerHandle::Get());
ping_manager_.reset(new PingManager(config_));
}
-void ComponentUpdaterPingManagerTest::TearDown() {
+void PingManagerTest::TearDown() {
ping_manager_.reset();
config_ = nullptr;
}
-void ComponentUpdaterPingManagerTest::RunThreadsUntilIdle() {
+void PingManagerTest::RunThreadsUntilIdle() {
base::RunLoop().RunUntilIdle();
}
-TEST_F(ComponentUpdaterPingManagerTest, PingManagerTest) {
+std::unique_ptr<UpdateContext> PingManagerTest::MakeFakeUpdateContext() const {
+ return base::MakeUnique<UpdateContext>(
+ config_, false, std::vector<std::string>(),
+ UpdateClient::CrxDataCallback(), UpdateEngine::NotifyObserversCallback(),
+ UpdateEngine::Callback(), nullptr);
+}
+
+TEST_F(PingManagerTest, SendPing) {
std::unique_ptr<InterceptorFactory> interceptor_factory(
new InterceptorFactory(base::ThreadTaskRunnerHandle::Get()));
URLRequestPostInterceptor* interceptor =
@@ -66,115 +77,123 @@ TEST_F(ComponentUpdaterPingManagerTest, PingManagerTest) {
EXPECT_TRUE(interceptor);
// Test eventresult="1" is sent for successful updates.
- CrxUpdateItem item;
- item.id = "abc";
- item.state = CrxUpdateItem::State::kUpdated;
- item.previous_version = base::Version("1.0");
- item.next_version = base::Version("2.0");
+ const auto update_context = MakeFakeUpdateContext();
- ping_manager_->SendPing(&item);
- base::RunLoop().RunUntilIdle();
-
- EXPECT_EQ(1, interceptor->GetCount()) << interceptor->GetRequestsAsString();
- EXPECT_NE(string::npos,
- interceptor->GetRequests()[0].find(
- "<app appid=\"abc\" version=\"1.0\" nextversion=\"2.0\">"
- "<event eventtype=\"3\" eventresult=\"1\"/></app>"))
- << interceptor->GetRequestsAsString();
- interceptor->Reset();
-
- // Test eventresult="0" is sent for failed updates.
- item = CrxUpdateItem();
- item.id = "abc";
- item.state = CrxUpdateItem::State::kNoUpdate;
- item.previous_version = base::Version("1.0");
- item.next_version = base::Version("2.0");
-
- ping_manager_->SendPing(&item);
- base::RunLoop().RunUntilIdle();
+ {
+ Component component(*update_context, "abc");
+
+ component.state_ = base::MakeUnique<Component::StateUpdated>(&component);
+ component.previous_version_ = base::Version("1.0");
+ component.next_version_ = base::Version("2.0");
+
+ ping_manager_->SendPing(component);
+ base::RunLoop().RunUntilIdle();
+
+ EXPECT_EQ(1, interceptor->GetCount()) << interceptor->GetRequestsAsString();
+ EXPECT_NE(string::npos,
+ interceptor->GetRequests()[0].find(
+ "<app appid=\"abc\" version=\"1.0\" nextversion=\"2.0\">"
+ "<event eventtype=\"3\" eventresult=\"1\"/></app>"))
+ << interceptor->GetRequestsAsString();
+ interceptor->Reset();
+ }
- EXPECT_EQ(1, interceptor->GetCount()) << interceptor->GetRequestsAsString();
- EXPECT_NE(string::npos,
- interceptor->GetRequests()[0].find(
- "<app appid=\"abc\" version=\"1.0\" nextversion=\"2.0\">"
- "<event eventtype=\"3\" eventresult=\"0\"/></app>"))
- << interceptor->GetRequestsAsString();
- interceptor->Reset();
-
- // Test the error values and the fingerprints.
- item = CrxUpdateItem();
- item.id = "abc";
- item.state = CrxUpdateItem::State::kNoUpdate;
- item.previous_version = base::Version("1.0");
- item.next_version = base::Version("2.0");
- item.previous_fp = "prev fp";
- item.next_fp = "next fp";
- item.error_category = 1;
- item.error_code = 2;
- item.extra_code1 = -1;
- item.diff_error_category = 10;
- item.diff_error_code = 20;
- item.diff_extra_code1 = -10;
- item.diff_update_failed = true;
- item.crx_diffurls.push_back(GURL("http://host/path"));
-
- ping_manager_->SendPing(&item);
- base::RunLoop().RunUntilIdle();
+ {
+ // Test eventresult="0" is sent for failed updates.
+ Component component(*update_context, "abc");
+ component.state_ =
+ base::MakeUnique<Component::StateUpdateError>(&component);
+ component.previous_version_ = base::Version("1.0");
+ component.next_version_ = base::Version("2.0");
+
+ ping_manager_->SendPing(component);
+ base::RunLoop().RunUntilIdle();
+
+ EXPECT_EQ(1, interceptor->GetCount()) << interceptor->GetRequestsAsString();
+ EXPECT_NE(string::npos,
+ interceptor->GetRequests()[0].find(
+ "<app appid=\"abc\" version=\"1.0\" nextversion=\"2.0\">"
+ "<event eventtype=\"3\" eventresult=\"0\"/></app>"))
+ << interceptor->GetRequestsAsString();
+ interceptor->Reset();
+ }
- EXPECT_EQ(1, interceptor->GetCount()) << interceptor->GetRequestsAsString();
- EXPECT_NE(string::npos,
- interceptor->GetRequests()[0].find(
- "<app appid=\"abc\" version=\"1.0\" nextversion=\"2.0\">"
- "<event eventtype=\"3\" eventresult=\"0\" errorcat=\"1\" "
- "errorcode=\"2\" extracode1=\"-1\" diffresult=\"0\" "
- "differrorcat=\"10\" "
- "differrorcode=\"20\" diffextracode1=\"-10\" "
- "previousfp=\"prev fp\" nextfp=\"next fp\"/></app>"))
- << interceptor->GetRequestsAsString();
- interceptor->Reset();
-
- // Test the download metrics.
- item = CrxUpdateItem();
- item.id = "abc";
- item.state = CrxUpdateItem::State::kUpdated;
- item.previous_version = base::Version("1.0");
- item.next_version = base::Version("2.0");
-
- CrxDownloader::DownloadMetrics download_metrics;
- download_metrics.url = GURL("http://host1/path1");
- download_metrics.downloader = CrxDownloader::DownloadMetrics::kUrlFetcher;
- download_metrics.error = -1;
- download_metrics.downloaded_bytes = 123;
- download_metrics.total_bytes = 456;
- download_metrics.download_time_ms = 987;
- item.download_metrics.push_back(download_metrics);
-
- download_metrics = CrxDownloader::DownloadMetrics();
- download_metrics.url = GURL("http://host2/path2");
- download_metrics.downloader = CrxDownloader::DownloadMetrics::kBits;
- download_metrics.error = 0;
- download_metrics.downloaded_bytes = 1230;
- download_metrics.total_bytes = 4560;
- download_metrics.download_time_ms = 9870;
- item.download_metrics.push_back(download_metrics);
-
- ping_manager_->SendPing(&item);
- base::RunLoop().RunUntilIdle();
+ {
+ // Test the error values and the fingerprints.
+ Component component(*update_context, "abc");
+ component.state_ =
+ base::MakeUnique<Component::StateUpdateError>(&component);
+ component.previous_version_ = base::Version("1.0");
+ component.next_version_ = base::Version("2.0");
+ component.previous_fp_ = "prev fp";
+ component.next_fp_ = "next fp";
+ component.error_category_ = 1;
+ component.error_code_ = 2;
+ component.extra_code1_ = -1;
+ component.diff_error_category_ = 10;
+ component.diff_error_code_ = 20;
+ component.diff_extra_code1_ = -10;
+ component.crx_diffurls_.push_back(GURL("http://host/path"));
+
+ ping_manager_->SendPing(component);
+ base::RunLoop().RunUntilIdle();
+
+ EXPECT_EQ(1, interceptor->GetCount()) << interceptor->GetRequestsAsString();
+ EXPECT_NE(string::npos,
+ interceptor->GetRequests()[0].find(
+ "<app appid=\"abc\" version=\"1.0\" nextversion=\"2.0\">"
+ "<event eventtype=\"3\" eventresult=\"0\" errorcat=\"1\" "
+ "errorcode=\"2\" extracode1=\"-1\" diffresult=\"0\" "
+ "differrorcat=\"10\" "
+ "differrorcode=\"20\" diffextracode1=\"-10\" "
+ "previousfp=\"prev fp\" nextfp=\"next fp\"/></app>"))
+ << interceptor->GetRequestsAsString();
+ interceptor->Reset();
+ }
- EXPECT_EQ(1, interceptor->GetCount()) << interceptor->GetRequestsAsString();
- EXPECT_NE(
- string::npos,
- interceptor->GetRequests()[0].find(
- "<app appid=\"abc\" version=\"1.0\" nextversion=\"2.0\">"
- "<event eventtype=\"3\" eventresult=\"1\"/>"
- "<event eventtype=\"14\" eventresult=\"0\" downloader=\"direct\" "
- "errorcode=\"-1\" url=\"http://host1/path1\" downloaded=\"123\" "
- "total=\"456\" download_time_ms=\"987\"/>"
- "<event eventtype=\"14\" eventresult=\"1\" downloader=\"bits\" "
- "url=\"http://host2/path2\" downloaded=\"1230\" total=\"4560\" "
- "download_time_ms=\"9870\"/></app>"))
- << interceptor->GetRequestsAsString();
- interceptor->Reset();
+ {
+ // Test the download metrics.
+ Component component(*update_context, "abc");
+ component.state_ = base::MakeUnique<Component::StateUpdated>(&component);
+ component.previous_version_ = base::Version("1.0");
+ component.next_version_ = base::Version("2.0");
+
+ CrxDownloader::DownloadMetrics download_metrics;
+ download_metrics.url = GURL("http://host1/path1");
+ download_metrics.downloader = CrxDownloader::DownloadMetrics::kUrlFetcher;
+ download_metrics.error = -1;
+ download_metrics.downloaded_bytes = 123;
+ download_metrics.total_bytes = 456;
+ download_metrics.download_time_ms = 987;
+ component.download_metrics_.push_back(download_metrics);
+
+ download_metrics = CrxDownloader::DownloadMetrics();
+ download_metrics.url = GURL("http://host2/path2");
+ download_metrics.downloader = CrxDownloader::DownloadMetrics::kBits;
+ download_metrics.error = 0;
+ download_metrics.downloaded_bytes = 1230;
+ download_metrics.total_bytes = 4560;
+ download_metrics.download_time_ms = 9870;
+ component.download_metrics_.push_back(download_metrics);
+
+ ping_manager_->SendPing(component);
+ base::RunLoop().RunUntilIdle();
+
+ EXPECT_EQ(1, interceptor->GetCount()) << interceptor->GetRequestsAsString();
+ EXPECT_NE(
+ string::npos,
+ interceptor->GetRequests()[0].find(
+ "<app appid=\"abc\" version=\"1.0\" nextversion=\"2.0\">"
+ "<event eventtype=\"3\" eventresult=\"1\"/>"
+ "<event eventtype=\"14\" eventresult=\"0\" downloader=\"direct\" "
+ "errorcode=\"-1\" url=\"http://host1/path1\" downloaded=\"123\" "
+ "total=\"456\" download_time_ms=\"987\"/>"
+ "<event eventtype=\"14\" eventresult=\"1\" downloader=\"bits\" "
+ "url=\"http://host2/path2\" downloaded=\"1230\" total=\"4560\" "
+ "download_time_ms=\"9870\"/></app>"))
+ << interceptor->GetRequestsAsString();
+ interceptor->Reset();
+ }
interceptor_factory.reset();
base::RunLoop().RunUntilIdle();
@@ -182,20 +201,22 @@ TEST_F(ComponentUpdaterPingManagerTest, PingManagerTest) {
// Tests that sending the ping fails when the component requires encryption but
// the ping URL is unsecure.
-TEST_F(ComponentUpdaterPingManagerTest, PingManagerRequiresEncryptionTest) {
+TEST_F(PingManagerTest, RequiresEncryption) {
config_->SetPingUrl(GURL("http:\\foo\bar"));
+ const auto update_context = MakeFakeUpdateContext();
+
{
- CrxUpdateItem item;
- item.component.requires_network_encryption = true;
+ Component component(*update_context, "abc");
+ component.crx_component_.requires_network_encryption = true;
- EXPECT_FALSE(ping_manager_->SendPing(&item));
+ EXPECT_FALSE(ping_manager_->SendPing(component));
}
{
// Tests that the default for |requires_network_encryption| is true.
- CrxUpdateItem item;
- EXPECT_FALSE(ping_manager_->SendPing(&item));
+ Component component(*update_context, "abc");
+ EXPECT_FALSE(ping_manager_->SendPing(component));
}
}
« no previous file with comments | « components/update_client/ping_manager.cc ('k') | components/update_client/request_sender_unittest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698