• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
4 
5 #include "net/tools/quic/quic_epoll_clock.h"
6 
7 #include "net/tools/quic/test_tools/mock_epoll_server.h"
8 #include "testing/gmock/include/gmock/gmock.h"
9 
10 namespace net {
11 namespace tools {
12 namespace test {
13 
TEST(QuicEpollClockTest,ApproximateNowInUsec)14 TEST(QuicEpollClockTest, ApproximateNowInUsec) {
15   MockEpollServer epoll_server;
16   QuicEpollClock clock(&epoll_server);
17 
18   epoll_server.set_now_in_usec(1000000);
19   EXPECT_EQ(1000000,
20             clock.ApproximateNow().Subtract(QuicTime::Zero()).ToMicroseconds());
21 
22   epoll_server.AdvanceBy(5);
23   EXPECT_EQ(1000005,
24             clock.ApproximateNow().Subtract(QuicTime::Zero()).ToMicroseconds());
25 }
26 
TEST(QuicEpollClockTest,NowInUsec)27 TEST(QuicEpollClockTest, NowInUsec) {
28   MockEpollServer epoll_server;
29   QuicEpollClock clock(&epoll_server);
30 
31   epoll_server.set_now_in_usec(1000000);
32   EXPECT_EQ(1000000,
33             clock.Now().Subtract(QuicTime::Zero()).ToMicroseconds());
34 
35   epoll_server.AdvanceBy(5);
36   EXPECT_EQ(1000005,
37             clock.Now().Subtract(QuicTime::Zero()).ToMicroseconds());
38 }
39 
TEST(QuicEpollClockTest,WallNow)40 TEST(QuicEpollClockTest, WallNow) {
41   MockEpollServer epoll_server;
42   QuicEpollClock clock(&epoll_server);
43 
44   base::Time start = base::Time::Now();
45   QuicWallTime now = clock.WallNow();
46   base::Time end = base::Time::Now();
47 
48   // If end > start, then we can check now is between start and end.
49   if (end > start) {
50     EXPECT_LE(static_cast<uint64>(start.ToTimeT()), now.ToUNIXSeconds());
51     EXPECT_LE(now.ToUNIXSeconds(), static_cast<uint64>(end.ToTimeT()));
52   }
53 }
54 
55 }  // namespace test
56 }  // namespace tools
57 }  // namespace net
58