From: James Sedgwick Date: Thu, 20 Nov 2014 18:02:13 +0000 (-0800) Subject: merge event base tests X-Git-Tag: v0.22.0~154 X-Git-Url: http://demsky.eecs.uci.edu/git/?a=commitdiff_plain;h=1fbc25221b896733093e7603558a2865497040fd;p=folly.git merge event base tests Summary: someone made another event base test while the big set still lived in thrift. merge it now that the old tests have been moved. Test Plan: fbconfig folly/io/async/test && fbmake runtests --extended-tests Reviewed By: davejwatson@fb.com Subscribers: njormrod, folly-diffs@ FB internal diff: D1690764 Signature: t1:1690764:1416413748:f3ae64d509432844bb2e1b689a75d66825269d15 --- diff --git a/folly/io/async/test/EventBaseTest.cpp b/folly/io/async/test/EventBaseTest.cpp index c20a9fe6..59b89dba 100644 --- a/folly/io/async/test/EventBaseTest.cpp +++ b/folly/io/async/test/EventBaseTest.cpp @@ -1558,3 +1558,36 @@ TEST(EventBaseTest, RunBeforeLoopWait) { // Check that we only ran once, and did not loop multiple times. ASSERT_EQ(cb.getCount(), 0); } + +class PipeHandler : public EventHandler { +public: + PipeHandler(EventBase* eventBase, int fd) + : EventHandler(eventBase, fd) {} + + void handlerReady(uint16_t events) noexcept { + abort(); + } +}; + +TEST(EventBaseTest, StopBeforeLoop) { + EventBase evb; + + // Give the evb something to do. + int p[2]; + ASSERT_EQ(0, pipe(p)); + PipeHandler handler(&evb, p[0]); + handler.registerHandler(EventHandler::READ); + + // It's definitely not running yet + evb.terminateLoopSoon(); + + // let it run, it should exit quickly. + std::thread t([&] { evb.loop(); }); + t.join(); + + handler.unregisterHandler(); + close(p[0]); + close(p[1]); + + SUCCEED(); +} diff --git a/folly/io/test/EventBaseTest.cpp b/folly/io/test/EventBaseTest.cpp deleted file mode 100644 index b7020c88..00000000 --- a/folly/io/test/EventBaseTest.cpp +++ /dev/null @@ -1,58 +0,0 @@ -/* - * Copyright 2014 Facebook, Inc. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -#include -#include - -#include - -#include -#include - -using namespace folly; - -class PipeHandler : public EventHandler { -public: - PipeHandler(EventBase* eventBase, int fd) - : EventHandler(eventBase, fd) {} - - void handlerReady(uint16_t events) noexcept { - abort(); - } -}; - -TEST(EventBase, StopBeforeLoop) { - EventBase evb; - - // Give the evb something to do. - int p[2]; - ASSERT_EQ(0, pipe(p)); - PipeHandler handler(&evb, p[0]); - handler.registerHandler(EventHandler::READ); - - // It's definitely not running yet - evb.terminateLoopSoon(); - - // let it run, it should exit quickly. - std::thread t([&] { evb.loop(); }); - t.join(); - - handler.unregisterHandler(); - close(p[0]); - close(p[1]); - - SUCCEED(); -}