36 #include <gtest/gtest.h> 43 #include <boost/shared_array.hpp> 44 #include <boost/bind.hpp> 45 #include <boost/thread.hpp> 58 ASSERT_FALSE(queue.
full());
62 ASSERT_TRUE(queue.
full());
66 ASSERT_FALSE(queue.
full());
70 ASSERT_TRUE(queue.
full());
72 ASSERT_TRUE(queue.
ready());
76 ASSERT_TRUE(queue.
full());
81 ASSERT_EQ(helper->calls_, 2u);
91 ASSERT_FALSE(queue.
full());
96 ASSERT_FALSE(queue.
full());
98 for (
int i = 0; i < 10000; ++i)
103 ASSERT_FALSE(queue.
full());
105 for (
int i = 0; i < 10000; ++i)
112 ASSERT_EQ(helper->calls_, 10001u);
177 boost::barrier barrier(2);
199 boost::barrier bar(2);
203 boost::thread t1(
callThread, boost::ref(queue));
204 boost::thread t2(
callThread, boost::ref(queue));
208 ASSERT_EQ(helper->calls_, 2u);
225 boost::thread t1(
callThread, boost::ref(queue));
226 boost::thread t2(
callThread, boost::ref(queue));
230 ASSERT_EQ(helper->calls_, 1u);
232 ASSERT_EQ(helper->calls_, 2u);
235 int main(
int argc,
char** argv)
237 testing::InitGoogleTest(&argc, argv);
239 return RUN_ALL_TESTS();
ROSCPP_DECL void init(int &argc, char **argv, const std::string &name, uint32_t options=0)
void waitForBarrier(boost::barrier *bar)
int main(int argc, char **argv)
virtual CallbackInterface::CallResult call()
void push(const SubscriptionCallbackHelperPtr &helper, const MessageDeserializerPtr &deserializer, bool has_tracked_object, const VoidConstWPtr &tracked_object, bool nonconst_need_copy, ros::Time receipt_time=ros::Time(), bool *was_full=0)
boost::weak_ptr< void const > VoidConstWPtr
void callThread(SubscriptionQueue &queue)
void clearInCallbackCallback(SubscriptionQueue &queue)
void clearWhileThreadIsBlockingCallback(bool *done, boost::barrier *barrier)
TEST(SubscriptionQueue, queueSize)