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

Unified Diff: net/dns/serial_worker_unittest.cc

Issue 992733002: Remove //net (except for Android test stuff) and sdch (Closed) Base URL: git@github.com:domokit/mojo.git@master
Patch Set: Created 5 years, 9 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 | « net/dns/serial_worker.cc ('k') | net/dns/single_request_host_resolver.h » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: net/dns/serial_worker_unittest.cc
diff --git a/net/dns/serial_worker_unittest.cc b/net/dns/serial_worker_unittest.cc
deleted file mode 100644
index 18b546450d12940bac41410535223c37419530e5..0000000000000000000000000000000000000000
--- a/net/dns/serial_worker_unittest.cc
+++ /dev/null
@@ -1,163 +0,0 @@
-// Copyright (c) 2011 The Chromium Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-#include "net/dns/serial_worker.h"
-
-#include "base/bind.h"
-#include "base/message_loop/message_loop.h"
-#include "base/synchronization/lock.h"
-#include "base/synchronization/waitable_event.h"
-#include "testing/gtest/include/gtest/gtest.h"
-
-namespace net {
-
-namespace {
-
-class SerialWorkerTest : public testing::Test {
- public:
- // The class under test
- class TestSerialWorker : public SerialWorker {
- public:
- explicit TestSerialWorker(SerialWorkerTest* t)
- : test_(t) {}
- void DoWork() override {
- ASSERT_TRUE(test_);
- test_->OnWork();
- }
- void OnWorkFinished() override {
- ASSERT_TRUE(test_);
- test_->OnWorkFinished();
- }
- private:
- ~TestSerialWorker() override {}
- SerialWorkerTest* test_;
- };
-
- // Mocks
-
- void OnWork() {
- { // Check that OnWork is executed serially.
- base::AutoLock lock(work_lock_);
- EXPECT_FALSE(work_running_) << "DoRead is not called serially!";
- work_running_ = true;
- }
- BreakNow("OnWork");
- work_allowed_.Wait();
- // Calling from WorkerPool, but protected by work_allowed_/work_called_.
- output_value_ = input_value_;
-
- { // This lock might be destroyed after work_called_ is signalled.
- base::AutoLock lock(work_lock_);
- work_running_ = false;
- }
- work_called_.Signal();
- }
-
- void OnWorkFinished() {
- EXPECT_TRUE(message_loop_ == base::MessageLoop::current());
- EXPECT_EQ(output_value_, input_value_);
- BreakNow("OnWorkFinished");
- }
-
- protected:
- void BreakCallback(std::string breakpoint) {
- breakpoint_ = breakpoint;
- base::MessageLoop::current()->QuitNow();
- }
-
- void BreakNow(std::string b) {
- message_loop_->PostTask(FROM_HERE,
- base::Bind(&SerialWorkerTest::BreakCallback,
- base::Unretained(this), b));
- }
-
- void RunUntilBreak(std::string b) {
- message_loop_->Run();
- ASSERT_EQ(breakpoint_, b);
- }
-
- SerialWorkerTest()
- : input_value_(0),
- output_value_(-1),
- work_allowed_(false, false),
- work_called_(false, false),
- work_running_(false) {
- }
-
- // Helpers for tests.
-
- // Lets OnWork run and waits for it to complete. Can only return if OnWork is
- // executed on a concurrent thread.
- void WaitForWork() {
- RunUntilBreak("OnWork");
- work_allowed_.Signal();
- work_called_.Wait();
- }
-
- // test::Test methods
- void SetUp() override {
- message_loop_ = base::MessageLoop::current();
- worker_ = new TestSerialWorker(this);
- }
-
- void TearDown() override {
- // Cancel the worker to catch if it makes a late DoWork call.
- worker_->Cancel();
- // Check if OnWork is stalled.
- EXPECT_FALSE(work_running_) << "OnWork should be done by TearDown";
- // Release it for cleanliness.
- if (work_running_) {
- WaitForWork();
- }
- }
-
- // Input value read on WorkerPool.
- int input_value_;
- // Output value written on WorkerPool.
- int output_value_;
-
- // read is called on WorkerPool so we need to synchronize with it.
- base::WaitableEvent work_allowed_;
- base::WaitableEvent work_called_;
-
- // Protected by read_lock_. Used to verify that read calls are serialized.
- bool work_running_;
- base::Lock work_lock_;
-
- // Loop for this thread.
- base::MessageLoop* message_loop_;
-
- // WatcherDelegate under test.
- scoped_refptr<TestSerialWorker> worker_;
-
- std::string breakpoint_;
-};
-
-TEST_F(SerialWorkerTest, ExecuteAndSerializeReads) {
- for (int i = 0; i < 3; ++i) {
- ++input_value_;
- worker_->WorkNow();
- WaitForWork();
- RunUntilBreak("OnWorkFinished");
-
- EXPECT_TRUE(message_loop_->IsIdleForTesting());
- }
-
- // Schedule two calls. OnWork checks if it is called serially.
- ++input_value_;
- worker_->WorkNow();
- // read is blocked, so this will have to induce re-work
- worker_->WorkNow();
- WaitForWork();
- WaitForWork();
- RunUntilBreak("OnWorkFinished");
-
- // No more tasks should remain.
- EXPECT_TRUE(message_loop_->IsIdleForTesting());
-}
-
-} // namespace
-
-} // namespace net
-
« no previous file with comments | « net/dns/serial_worker.cc ('k') | net/dns/single_request_host_resolver.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698