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

Unified Diff: chromeos/printing/ppd_provider_unittest.cc

Issue 2939373003: Convert PpdCache and PpdProvider to TaskScheduler. (Closed)
Patch Set: find can skip dir creation Created 3 years, 6 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 | « chromeos/printing/ppd_provider.cc ('k') | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: chromeos/printing/ppd_provider_unittest.cc
diff --git a/chromeos/printing/ppd_provider_unittest.cc b/chromeos/printing/ppd_provider_unittest.cc
index ea57417e75da8570c7a3ca65571ca5deabdad58b..1019fa1a20c08de589692f9ec8e9b4fe46e9eed8 100644
--- a/chromeos/printing/ppd_provider_unittest.cc
+++ b/chromeos/printing/ppd_provider_unittest.cc
@@ -14,6 +14,7 @@
#include "base/run_loop.h"
#include "base/single_thread_task_runner.h"
#include "base/strings/stringprintf.h"
+#include "base/test/scoped_task_environment.h"
#include "base/test/test_message_loop.h"
#include "base/threading/sequenced_task_runner_handle.h"
#include "base/threading/thread_task_runner_handle.h"
@@ -59,9 +60,10 @@ More random contents that we don't care about.
class PpdProviderTest : public ::testing::Test {
public:
PpdProviderTest()
- : loop_(base::MessageLoop::TYPE_IO),
+ : scoped_task_environment_(
+ base::test::ScopedTaskEnvironment::MainThreadType::IO),
request_context_getter_(new net::TestURLRequestContextGetter(
- base::MessageLoop::current()->task_runner())) {}
+ scoped_task_environment_.GetMainThreadTaskRunner())) {}
void SetUp() override {
ASSERT_TRUE(ppd_cache_temp_dir_.CreateUniqueTempDir());
@@ -74,19 +76,17 @@ class PpdProviderTest : public ::testing::Test {
auto provider_options = PpdProvider::Options();
provider_options.ppd_server_root = std::string("https://") + kPpdServer;
- return PpdProvider::Create(
- locale, request_context_getter_.get(),
- PpdCache::Create(ppd_cache_temp_dir_.GetPath(),
- base::MessageLoop::current()->task_runner()),
- loop_.task_runner().get(), provider_options);
+ return PpdProvider::Create(locale, request_context_getter_.get(),
+ PpdCache::Create(ppd_cache_temp_dir_.GetPath()),
+ provider_options);
}
// Create an interceptor that serves a small fileset of ppd server files.
void StartFakePpdServer() {
ASSERT_TRUE(interceptor_temp_dir_.CreateUniqueTempDir());
interceptor_ = base::MakeUnique<net::TestURLRequestInterceptor>(
- "https", kPpdServer, base::ThreadTaskRunnerHandle::Get(),
- base::ThreadTaskRunnerHandle::Get());
+ "https", kPpdServer, scoped_task_environment_.GetMainThreadTaskRunner(),
+ scoped_task_environment_.GetMainThreadTaskRunner());
// Use brace initialization to express the desired server contents as "url",
// "contents" pairs.
std::vector<std::pair<std::string, std::string>> server_contents = {
@@ -157,7 +157,7 @@ class PpdProviderTest : public ::testing::Test {
// Note this is harmless to call if we haven't started a fake ppd server.
void StopFakePpdServer() {
interceptor_.reset();
- base::RunLoop().RunUntilIdle();
+ scoped_task_environment_.RunUntilIdle();
}
// Capture the result of a ResolveManufacturers() call.
@@ -202,7 +202,7 @@ class PpdProviderTest : public ::testing::Test {
auto provider = CreateProvider(browser_locale);
provider->ResolveManufacturers(base::Bind(
&PpdProviderTest::CaptureResolveManufacturers, base::Unretained(this)));
- base::RunLoop().RunUntilIdle();
+ scoped_task_environment_.RunUntilIdle();
provider = nullptr;
ASSERT_EQ(captured_resolve_manufacturers_.size(), 1UL);
EXPECT_EQ(captured_resolve_manufacturers_[0].first, PpdProvider::SUCCESS);
@@ -216,20 +216,8 @@ class PpdProviderTest : public ::testing::Test {
result_vec.end());
}
- // Drain tasks both on the loop we use for network/disk activity and the
- // top-level loop that we're using in the test itself. Unfortunately, even
- // thought the TestURLRequestContextGetter tells the url fetcher to run on the
- // current message loop, some deep backend processes can get put into other
- // loops, which means we can't just trust RunLoop::RunUntilIdle() to drain
- // outstanding work.
- void Drain(const PpdProvider& provider) {
- do {
- base::RunLoop().RunUntilIdle();
- } while (!provider.Idle());
- }
-
- // Message loop that runs on the current thread.
- base::TestMessageLoop loop_;
+ // Environment for task schedulers.
+ base::test::ScopedTaskEnvironment scoped_task_environment_;
std::vector<
std::pair<PpdProvider::CallbackResultCode, std::vector<std::string>>>
@@ -271,7 +259,7 @@ TEST_F(PpdProviderTest, ManufacturersFetch) {
&PpdProviderTest::CaptureResolveManufacturers, base::Unretained(this)));
provider->ResolveManufacturers(base::Bind(
&PpdProviderTest::CaptureResolveManufacturers, base::Unretained(this)));
- Drain(*provider);
+ scoped_task_environment_.RunUntilIdle();
ASSERT_EQ(2UL, captured_resolve_manufacturers_.size());
std::vector<std::string> expected_result(
{"manufacturer_a_en", "manufacturer_b_en"});
@@ -291,7 +279,7 @@ TEST_F(PpdProviderTest, ManufacturersFetchNoServer) {
&PpdProviderTest::CaptureResolveManufacturers, base::Unretained(this)));
provider->ResolveManufacturers(base::Bind(
&PpdProviderTest::CaptureResolveManufacturers, base::Unretained(this)));
- Drain(*provider);
+ scoped_task_environment_.RunUntilIdle();
ASSERT_EQ(2UL, captured_resolve_manufacturers_.size());
EXPECT_EQ(PpdProvider::SERVER_ERROR,
captured_resolve_manufacturers_[0].first);
@@ -337,7 +325,7 @@ TEST_F(PpdProviderTest, UsbResolution) {
provider->ResolveUsbIds(1234, 1782,
base::Bind(&PpdProviderTest::CaptureResolveUsbIds,
base::Unretained(this)));
- Drain(*provider);
+ scoped_task_environment_.RunUntilIdle();
ASSERT_EQ(captured_resolve_usb_ids_.size(), static_cast<size_t>(4));
EXPECT_EQ(captured_resolve_usb_ids_[0].first, PpdProvider::SUCCESS);
@@ -365,7 +353,7 @@ TEST_F(PpdProviderTest, ResolvePrinters) {
// should be in it and we check that elsewhere. We just need to run the
// resolve to populate the internal PpdProvider structures.
provider->ResolveManufacturers(base::Bind(&ResolveManufacturersNop));
- Drain(*provider);
+ scoped_task_environment_.RunUntilIdle();
provider->ResolvePrinters("manufacturer_a_en",
base::Bind(&PpdProviderTest::CaptureResolvePrinters,
@@ -373,7 +361,7 @@ TEST_F(PpdProviderTest, ResolvePrinters) {
provider->ResolvePrinters("manufacturer_b_en",
base::Bind(&PpdProviderTest::CaptureResolvePrinters,
base::Unretained(this)));
- Drain(*provider);
+ scoped_task_environment_.RunUntilIdle();
ASSERT_EQ(2UL, captured_resolve_printers_.size());
EXPECT_EQ(PpdProvider::SUCCESS, captured_resolve_printers_[0].first);
EXPECT_EQ(PpdProvider::SUCCESS, captured_resolve_printers_[1].first);
@@ -396,12 +384,12 @@ TEST_F(PpdProviderTest, ResolvePrintersBadReference) {
StartFakePpdServer();
auto provider = CreateProvider("en");
provider->ResolveManufacturers(base::Bind(&ResolveManufacturersNop));
- Drain(*provider);
+ scoped_task_environment_.RunUntilIdle();
provider->ResolvePrinters("bogus_doesnt_exist",
base::Bind(&PpdProviderTest::CaptureResolvePrinters,
base::Unretained(this)));
- Drain(*provider);
+ scoped_task_environment_.RunUntilIdle();
ASSERT_EQ(1UL, captured_resolve_printers_.size());
EXPECT_EQ(PpdProvider::INTERNAL_ERROR, captured_resolve_printers_[0].first);
}
@@ -411,7 +399,7 @@ TEST_F(PpdProviderTest, ResolvePrintersNoServer) {
StartFakePpdServer();
auto provider = CreateProvider("en");
provider->ResolveManufacturers(base::Bind(&ResolveManufacturersNop));
- Drain(*provider);
+ scoped_task_environment_.RunUntilIdle();
StopFakePpdServer();
@@ -421,7 +409,7 @@ TEST_F(PpdProviderTest, ResolvePrintersNoServer) {
provider->ResolvePrinters("manufacturer_b_en",
base::Bind(&PpdProviderTest::CaptureResolvePrinters,
base::Unretained(this)));
- Drain(*provider);
+ scoped_task_environment_.RunUntilIdle();
ASSERT_EQ(2UL, captured_resolve_printers_.size());
EXPECT_EQ(PpdProvider::SERVER_ERROR, captured_resolve_printers_[0].first);
EXPECT_EQ(PpdProvider::SERVER_ERROR, captured_resolve_printers_[1].first);
@@ -438,7 +426,7 @@ TEST_F(PpdProviderTest, ResolveServerKeyPpd) {
ref.effective_make_and_model = "printer_c_ref";
provider->ResolvePpd(ref, base::Bind(&PpdProviderTest::CaptureResolvePpd,
base::Unretained(this)));
- Drain(*provider);
+ scoped_task_environment_.RunUntilIdle();
ASSERT_EQ(2UL, captured_resolve_ppd_.size());
EXPECT_EQ(PpdProvider::SUCCESS, captured_resolve_ppd_[0].code);
@@ -460,7 +448,7 @@ TEST_F(PpdProviderTest, ResolveUserSuppliedUrlPpdFromNetworkFails) {
"https://%s/user_supplied_ppd_directory/user_supplied.ppd", kPpdServer);
provider->ResolvePpd(ref, base::Bind(&PpdProviderTest::CaptureResolvePpd,
base::Unretained(this)));
- Drain(*provider);
+ scoped_task_environment_.RunUntilIdle();
ASSERT_EQ(1UL, captured_resolve_ppd_.size());
EXPECT_EQ(PpdProvider::INTERNAL_ERROR, captured_resolve_ppd_[0].code);
@@ -487,7 +475,7 @@ TEST_F(PpdProviderTest, ResolveUserSuppliedUrlPpdFromFile) {
base::StringPrintf("file://%s", filename.MaybeAsASCII().c_str());
provider->ResolvePpd(ref, base::Bind(&PpdProviderTest::CaptureResolvePpd,
base::Unretained(this)));
- Drain(*provider);
+ scoped_task_environment_.RunUntilIdle();
ASSERT_EQ(1UL, captured_resolve_ppd_.size());
EXPECT_EQ(PpdProvider::SUCCESS, captured_resolve_ppd_[0].code);
@@ -513,7 +501,7 @@ TEST_F(PpdProviderTest, ResolvedPpdsGetCached) {
base::StringPrintf("file://%s", filename.MaybeAsASCII().c_str());
provider->ResolvePpd(ref, base::Bind(&PpdProviderTest::CaptureResolvePpd,
base::Unretained(this)));
- Drain(*provider);
+ scoped_task_environment_.RunUntilIdle();
ASSERT_EQ(1UL, captured_resolve_ppd_.size());
EXPECT_EQ(PpdProvider::SUCCESS, captured_resolve_ppd_[0].code);
@@ -532,7 +520,7 @@ TEST_F(PpdProviderTest, ResolvedPpdsGetCached) {
// Re-resolve.
provider->ResolvePpd(ref, base::Bind(&PpdProviderTest::CaptureResolvePpd,
base::Unretained(this)));
- Drain(*provider);
+ scoped_task_environment_.RunUntilIdle();
ASSERT_EQ(1UL, captured_resolve_ppd_.size());
EXPECT_EQ(PpdProvider::SUCCESS, captured_resolve_ppd_[0].code);
@@ -551,7 +539,7 @@ TEST_F(PpdProviderTest, ExtractPpdFilters) {
ref.effective_make_and_model = "printer_b_ref";
provider->ResolvePpd(ref, base::Bind(&PpdProviderTest::CaptureResolvePpd,
base::Unretained(this)));
- Drain(*provider);
+ scoped_task_environment_.RunUntilIdle();
ASSERT_EQ(2UL, captured_resolve_ppd_.size());
EXPECT_EQ(PpdProvider::SUCCESS, captured_resolve_ppd_[0].code);
« no previous file with comments | « chromeos/printing/ppd_provider.cc ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698