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

Unified Diff: mojo/system/message_pipe_dispatcher_unittest.cc

Issue 281893002: Mojo: Base our epsilon timeouts off of TestTimeouts::tiny_timeout(). (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Created 6 years, 7 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 | « no previous file | mojo/system/simple_dispatcher_unittest.cc » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: mojo/system/message_pipe_dispatcher_unittest.cc
diff --git a/mojo/system/message_pipe_dispatcher_unittest.cc b/mojo/system/message_pipe_dispatcher_unittest.cc
index 3ef26bf18d0ff4625f5e27093edc7d7ae9652ddf..999d20c60370be09c56fd4016569be040498abbc 100644
--- a/mojo/system/message_pipe_dispatcher_unittest.cc
+++ b/mojo/system/message_pipe_dispatcher_unittest.cc
@@ -3,8 +3,9 @@
// found in the LICENSE file.
// NOTE(vtl): Some of these tests are inherently flaky (e.g., if run on a
-// heavily-loaded system). Sorry. |kEpsilonMicros| may be increased to increase
-// tolerance and reduce observed flakiness.
+// heavily-loaded system). Sorry. |test::EpsilonTimeout()| may be increased to
+// increase tolerance and reduce observed flakiness (though doing so reduces the
+// meaningfulness of the test).
#include "mojo/system/message_pipe_dispatcher.h"
@@ -28,15 +29,11 @@ namespace mojo {
namespace system {
namespace {
-const int64_t kMicrosPerMs = 1000;
-const int64_t kEpsilonMicros = 30 * kMicrosPerMs; // 30 ms.
-
TEST(MessagePipeDispatcherTest, Basic) {
test::Stopwatch stopwatch;
int32_t buffer[1];
const uint32_t kBufferSize = static_cast<uint32_t>(sizeof(buffer));
uint32_t buffer_size;
- int64_t elapsed_micros;
// Run this test both with |d0| as port 0, |d1| as port 1 and vice versa.
for (unsigned i = 0; i < 2; i++) {
@@ -67,8 +64,7 @@ TEST(MessagePipeDispatcherTest, Basic) {
MOJO_WRITE_MESSAGE_FLAG_NONE));
stopwatch.Start();
EXPECT_EQ(1, w.Wait(MOJO_DEADLINE_INDEFINITE));
- elapsed_micros = stopwatch.Elapsed();
- EXPECT_LT(elapsed_micros, kEpsilonMicros);
+ EXPECT_LT(stopwatch.Elapsed(), test::EpsilonTimeout());
d0->RemoveWaiter(&w);
// Try adding a readable waiter when already readable (from above).
@@ -93,8 +89,7 @@ TEST(MessagePipeDispatcherTest, Basic) {
d0->AddWaiter(&w, MOJO_WAIT_FLAG_READABLE, 3));
stopwatch.Start();
EXPECT_EQ(MOJO_RESULT_DEADLINE_EXCEEDED, w.Wait(0));
- elapsed_micros = stopwatch.Elapsed();
- EXPECT_LT(elapsed_micros, kEpsilonMicros);
+ EXPECT_LT(stopwatch.Elapsed(), test::EpsilonTimeout());
d0->RemoveWaiter(&w);
// Wait for non-zero, finite time for readability on |d0| (will time out).
@@ -102,10 +97,11 @@ TEST(MessagePipeDispatcherTest, Basic) {
EXPECT_EQ(MOJO_RESULT_OK,
d0->AddWaiter(&w, MOJO_WAIT_FLAG_READABLE, 3));
stopwatch.Start();
- EXPECT_EQ(MOJO_RESULT_DEADLINE_EXCEEDED, w.Wait(2 * kEpsilonMicros));
- elapsed_micros = stopwatch.Elapsed();
- EXPECT_GT(elapsed_micros, (2-1) * kEpsilonMicros);
- EXPECT_LT(elapsed_micros, (2+1) * kEpsilonMicros);
+ EXPECT_EQ(MOJO_RESULT_DEADLINE_EXCEEDED,
+ w.Wait(2 * test::EpsilonTimeout().InMicroseconds()));
+ base::TimeDelta elapsed = stopwatch.Elapsed();
+ EXPECT_GT(elapsed, (2-1) * test::EpsilonTimeout());
+ EXPECT_LT(elapsed, (2+1) * test::EpsilonTimeout());
d0->RemoveWaiter(&w);
EXPECT_EQ(MOJO_RESULT_OK, d0->Close());
@@ -258,9 +254,9 @@ TEST(MessagePipeDispatcherTest, BasicThreaded) {
int32_t buffer[1];
const uint32_t kBufferSize = static_cast<uint32_t>(sizeof(buffer));
uint32_t buffer_size;
+ base::TimeDelta elapsed;
bool did_wait;
MojoResult result;
- int64_t elapsed_micros;
// Run this test both with |d0| as port 0, |d1| as port 1 and vice versa.
for (unsigned i = 0; i < 2; i++) {
@@ -281,8 +277,7 @@ TEST(MessagePipeDispatcherTest, BasicThreaded) {
&did_wait, &result);
stopwatch.Start();
thread.Start();
- base::PlatformThread::Sleep(
- base::TimeDelta::FromMicroseconds(2 * kEpsilonMicros));
+ base::PlatformThread::Sleep(2 * test::EpsilonTimeout());
// Wake it up by writing to |d0|.
buffer[0] = 123456789;
EXPECT_EQ(MOJO_RESULT_OK,
@@ -290,11 +285,11 @@ TEST(MessagePipeDispatcherTest, BasicThreaded) {
NULL,
MOJO_WRITE_MESSAGE_FLAG_NONE));
} // Joins the thread.
- elapsed_micros = stopwatch.Elapsed();
+ elapsed = stopwatch.Elapsed();
+ EXPECT_GT(elapsed, (2-1) * test::EpsilonTimeout());
+ EXPECT_LT(elapsed, (2+1) * test::EpsilonTimeout());
EXPECT_TRUE(did_wait);
EXPECT_EQ(0, result);
- EXPECT_GT(elapsed_micros, (2-1) * kEpsilonMicros);
- EXPECT_LT(elapsed_micros, (2+1) * kEpsilonMicros);
// Now |d1| is already readable. Try waiting for it again.
{
@@ -306,10 +301,9 @@ TEST(MessagePipeDispatcherTest, BasicThreaded) {
stopwatch.Start();
thread.Start();
} // Joins the thread.
- elapsed_micros = stopwatch.Elapsed();
+ EXPECT_LT(stopwatch.Elapsed(), test::EpsilonTimeout());
EXPECT_FALSE(did_wait);
EXPECT_EQ(MOJO_RESULT_ALREADY_EXISTS, result);
- EXPECT_LT(elapsed_micros, kEpsilonMicros);
// Consume what we wrote to |d0|.
buffer[0] = 0;
@@ -331,15 +325,14 @@ TEST(MessagePipeDispatcherTest, BasicThreaded) {
&did_wait, &result);
stopwatch.Start();
thread.Start();
- base::PlatformThread::Sleep(
- base::TimeDelta::FromMicroseconds(2 * kEpsilonMicros));
+ base::PlatformThread::Sleep(2 * test::EpsilonTimeout());
EXPECT_EQ(MOJO_RESULT_OK, d0->Close());
} // Joins the thread.
- elapsed_micros = stopwatch.Elapsed();
+ elapsed = stopwatch.Elapsed();
+ EXPECT_GT(elapsed, (2-1) * test::EpsilonTimeout());
+ EXPECT_LT(elapsed, (2+1) * test::EpsilonTimeout());
EXPECT_TRUE(did_wait);
EXPECT_EQ(MOJO_RESULT_FAILED_PRECONDITION, result);
- EXPECT_GT(elapsed_micros, (2-1) * kEpsilonMicros);
- EXPECT_LT(elapsed_micros, (2+1) * kEpsilonMicros);
EXPECT_EQ(MOJO_RESULT_OK, d1->Close());
}
@@ -363,15 +356,14 @@ TEST(MessagePipeDispatcherTest, BasicThreaded) {
&did_wait, &result);
stopwatch.Start();
thread.Start();
- base::PlatformThread::Sleep(
- base::TimeDelta::FromMicroseconds(2 * kEpsilonMicros));
+ base::PlatformThread::Sleep(2 * test::EpsilonTimeout());
EXPECT_EQ(MOJO_RESULT_OK, d1->Close());
} // Joins the thread.
- elapsed_micros = stopwatch.Elapsed();
+ elapsed = stopwatch.Elapsed();
+ EXPECT_GT(elapsed, (2-1) * test::EpsilonTimeout());
+ EXPECT_LT(elapsed, (2+1) * test::EpsilonTimeout());
EXPECT_TRUE(did_wait);
EXPECT_EQ(MOJO_RESULT_CANCELLED, result);
- EXPECT_GT(elapsed_micros, (2-1) * kEpsilonMicros);
- EXPECT_LT(elapsed_micros, (2+1) * kEpsilonMicros);
EXPECT_EQ(MOJO_RESULT_OK, d0->Close());
}
« no previous file with comments | « no previous file | mojo/system/simple_dispatcher_unittest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698