| Index: base/message_pump_libevent_unittest.cc
|
| diff --git a/base/message_pump_libevent_unittest.cc b/base/message_pump_libevent_unittest.cc
|
| deleted file mode 100644
|
| index cd423afef1b822c8e50149a270b07b1092cf6664..0000000000000000000000000000000000000000
|
| --- a/base/message_pump_libevent_unittest.cc
|
| +++ /dev/null
|
| @@ -1,162 +0,0 @@
|
| -// Copyright (c) 2012 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 "base/message_pump_libevent.h"
|
| -
|
| -#include <unistd.h>
|
| -
|
| -#include "base/message_loop.h"
|
| -#include "base/posix/eintr_wrapper.h"
|
| -#include "base/threading/thread.h"
|
| -#include "testing/gtest/include/gtest/gtest.h"
|
| -#include "third_party/libevent/event.h"
|
| -
|
| -namespace base {
|
| -
|
| -class MessagePumpLibeventTest : public testing::Test {
|
| - protected:
|
| - MessagePumpLibeventTest()
|
| - : ui_loop_(MessageLoop::TYPE_UI),
|
| - io_thread_("MessagePumpLibeventTestIOThread") {}
|
| - virtual ~MessagePumpLibeventTest() {}
|
| -
|
| - virtual void SetUp() OVERRIDE {
|
| - Thread::Options options(MessageLoop::TYPE_IO, 0);
|
| - ASSERT_TRUE(io_thread_.StartWithOptions(options));
|
| - ASSERT_EQ(MessageLoop::TYPE_IO, io_thread_.message_loop()->type());
|
| - int ret = pipe(pipefds_);
|
| - ASSERT_EQ(0, ret);
|
| - }
|
| -
|
| - virtual void TearDown() OVERRIDE {
|
| - if (HANDLE_EINTR(close(pipefds_[0])) < 0)
|
| - PLOG(ERROR) << "close";
|
| - if (HANDLE_EINTR(close(pipefds_[1])) < 0)
|
| - PLOG(ERROR) << "close";
|
| - }
|
| -
|
| - MessageLoop* ui_loop() { return &ui_loop_; }
|
| - MessageLoopForIO* io_loop() const {
|
| - return static_cast<MessageLoopForIO*>(io_thread_.message_loop());
|
| - }
|
| -
|
| - void OnLibeventNotification(
|
| - MessagePumpLibevent* pump,
|
| - MessagePumpLibevent::FileDescriptorWatcher* controller) {
|
| - pump->OnLibeventNotification(0, EV_WRITE | EV_READ, controller);
|
| - }
|
| -
|
| - int pipefds_[2];
|
| -
|
| - private:
|
| - MessageLoop ui_loop_;
|
| - Thread io_thread_;
|
| -};
|
| -
|
| -namespace {
|
| -
|
| -// Concrete implementation of MessagePumpLibevent::Watcher that does
|
| -// nothing useful.
|
| -class StupidWatcher : public MessagePumpLibevent::Watcher {
|
| - public:
|
| - virtual ~StupidWatcher() {}
|
| -
|
| - // base:MessagePumpLibevent::Watcher interface
|
| - virtual void OnFileCanReadWithoutBlocking(int fd) OVERRIDE {}
|
| - virtual void OnFileCanWriteWithoutBlocking(int fd) OVERRIDE {}
|
| -};
|
| -
|
| -#if GTEST_HAS_DEATH_TEST && !defined(NDEBUG)
|
| -
|
| -// Test to make sure that we catch calling WatchFileDescriptor off of the
|
| -// wrong thread.
|
| -TEST_F(MessagePumpLibeventTest, TestWatchingFromBadThread) {
|
| - MessagePumpLibevent::FileDescriptorWatcher watcher;
|
| - StupidWatcher delegate;
|
| -
|
| - ASSERT_DEATH(io_loop()->WatchFileDescriptor(
|
| - STDOUT_FILENO, false, MessageLoopForIO::WATCH_READ, &watcher, &delegate),
|
| - "Check failed: "
|
| - "watch_file_descriptor_caller_checker_.CalledOnValidThread()");
|
| -}
|
| -
|
| -#endif // GTEST_HAS_DEATH_TEST && !defined(NDEBUG)
|
| -
|
| -class BaseWatcher : public MessagePumpLibevent::Watcher {
|
| - public:
|
| - explicit BaseWatcher(MessagePumpLibevent::FileDescriptorWatcher* controller)
|
| - : controller_(controller) {
|
| - DCHECK(controller_);
|
| - }
|
| - virtual ~BaseWatcher() {}
|
| -
|
| - // base:MessagePumpLibevent::Watcher interface
|
| - virtual void OnFileCanReadWithoutBlocking(int /* fd */) OVERRIDE {
|
| - NOTREACHED();
|
| - }
|
| -
|
| - virtual void OnFileCanWriteWithoutBlocking(int /* fd */) OVERRIDE {
|
| - NOTREACHED();
|
| - }
|
| -
|
| - protected:
|
| - MessagePumpLibevent::FileDescriptorWatcher* controller_;
|
| -};
|
| -
|
| -class DeleteWatcher : public BaseWatcher {
|
| - public:
|
| - explicit DeleteWatcher(
|
| - MessagePumpLibevent::FileDescriptorWatcher* controller)
|
| - : BaseWatcher(controller) {}
|
| -
|
| - virtual ~DeleteWatcher() {
|
| - DCHECK(!controller_);
|
| - }
|
| -
|
| - virtual void OnFileCanWriteWithoutBlocking(int /* fd */) OVERRIDE {
|
| - DCHECK(controller_);
|
| - delete controller_;
|
| - controller_ = NULL;
|
| - }
|
| -};
|
| -
|
| -TEST_F(MessagePumpLibeventTest, DeleteWatcher) {
|
| - scoped_refptr<MessagePumpLibevent> pump(new MessagePumpLibevent);
|
| - MessagePumpLibevent::FileDescriptorWatcher* watcher =
|
| - new MessagePumpLibevent::FileDescriptorWatcher;
|
| - DeleteWatcher delegate(watcher);
|
| - pump->WatchFileDescriptor(pipefds_[1],
|
| - false, MessagePumpLibevent::WATCH_READ_WRITE, watcher, &delegate);
|
| -
|
| - // Spoof a libevent notification.
|
| - OnLibeventNotification(pump.get(), watcher);
|
| -}
|
| -
|
| -class StopWatcher : public BaseWatcher {
|
| - public:
|
| - explicit StopWatcher(
|
| - MessagePumpLibevent::FileDescriptorWatcher* controller)
|
| - : BaseWatcher(controller) {}
|
| -
|
| - virtual ~StopWatcher() {}
|
| -
|
| - virtual void OnFileCanWriteWithoutBlocking(int /* fd */) OVERRIDE {
|
| - controller_->StopWatchingFileDescriptor();
|
| - }
|
| -};
|
| -
|
| -TEST_F(MessagePumpLibeventTest, StopWatcher) {
|
| - scoped_refptr<MessagePumpLibevent> pump(new MessagePumpLibevent);
|
| - MessagePumpLibevent::FileDescriptorWatcher watcher;
|
| - StopWatcher delegate(&watcher);
|
| - pump->WatchFileDescriptor(pipefds_[1],
|
| - false, MessagePumpLibevent::WATCH_READ_WRITE, &watcher, &delegate);
|
| -
|
| - // Spoof a libevent notification.
|
| - OnLibeventNotification(pump.get(), &watcher);
|
| -}
|
| -
|
| -} // namespace
|
| -
|
| -} // namespace base
|
|
|