| OLD | NEW |
| 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 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 | 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
| 4 | 4 |
| 5 #include "net/tools/quic/quic_epoll_connection_helper.h" | 5 #include "net/tools/quic/quic_epoll_connection_helper.h" |
| 6 | 6 |
| 7 #include "net/quic/crypto/quic_random.h" | 7 #include "net/quic/crypto/quic_random.h" |
| 8 #include "net/tools/quic/test_tools/mock_epoll_server.h" | 8 #include "net/tools/quic/test_tools/mock_epoll_server.h" |
| 9 #include "testing/gtest/include/gtest/gtest.h" | 9 #include "testing/gtest/include/gtest/gtest.h" |
| 10 | 10 |
| (...skipping 35 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 46 epoll_server_.AdvanceBy(delta.ToMicroseconds()); | 46 epoll_server_.AdvanceBy(delta.ToMicroseconds()); |
| 47 | 47 |
| 48 EXPECT_EQ(start.Add(delta), clock->Now()); | 48 EXPECT_EQ(start.Add(delta), clock->Now()); |
| 49 } | 49 } |
| 50 | 50 |
| 51 TEST_F(QuicEpollConnectionHelperTest, GetRandomGenerator) { | 51 TEST_F(QuicEpollConnectionHelperTest, GetRandomGenerator) { |
| 52 QuicRandom* random = helper_.GetRandomGenerator(); | 52 QuicRandom* random = helper_.GetRandomGenerator(); |
| 53 EXPECT_EQ(QuicRandom::GetInstance(), random); | 53 EXPECT_EQ(QuicRandom::GetInstance(), random); |
| 54 } | 54 } |
| 55 | 55 |
| 56 TEST_F(QuicEpollConnectionHelperTest, CreateAlarm) { | 56 // The boolean parameter denotes whether or not to use an arena. |
| 57 TestDelegate* delegate = new TestDelegate(); | 57 class QuicEpollConnectionHelperAlarmTest |
| 58 scoped_ptr<QuicAlarm> alarm(helper_.CreateAlarm(delegate)); | 58 : public QuicEpollConnectionHelperTest, |
| 59 public ::testing::WithParamInterface<bool> { |
| 60 protected: |
| 61 QuicConnectionArena* GetArenaParam() { |
| 62 return GetParam() ? &arena_ : nullptr; |
| 63 } |
| 64 |
| 65 private: |
| 66 QuicConnectionArena arena_; |
| 67 }; |
| 68 |
| 69 INSTANTIATE_TEST_CASE_P(QuicEpollConnectionHelperAlarmTest, |
| 70 QuicEpollConnectionHelperAlarmTest, |
| 71 ::testing::Bool()); |
| 72 |
| 73 TEST_P(QuicEpollConnectionHelperAlarmTest, CreateAlarm) { |
| 74 QuicArenaScopedPtr<TestDelegate> delegate = |
| 75 QuicArenaScopedPtr<TestDelegate>(new TestDelegate()); |
| 76 QuicArenaScopedPtr<QuicAlarm> alarm( |
| 77 helper_.CreateAlarm(std::move(delegate), GetArenaParam())); |
| 59 | 78 |
| 60 const QuicClock* clock = helper_.GetClock(); | 79 const QuicClock* clock = helper_.GetClock(); |
| 61 QuicTime start = clock->Now(); | 80 QuicTime start = clock->Now(); |
| 62 QuicTime::Delta delta = QuicTime::Delta::FromMicroseconds(1); | 81 QuicTime::Delta delta = QuicTime::Delta::FromMicroseconds(1); |
| 63 alarm->Set(start.Add(delta)); | 82 alarm->Set(start.Add(delta)); |
| 64 | 83 |
| 65 epoll_server_.AdvanceByAndWaitForEventsAndExecuteCallbacks( | 84 epoll_server_.AdvanceByAndWaitForEventsAndExecuteCallbacks( |
| 66 delta.ToMicroseconds()); | 85 delta.ToMicroseconds()); |
| 67 EXPECT_EQ(start.Add(delta), clock->Now()); | 86 EXPECT_EQ(start.Add(delta), clock->Now()); |
| 68 } | 87 } |
| 69 | 88 |
| 70 TEST_F(QuicEpollConnectionHelperTest, CreateAlarmAndCancel) { | 89 TEST_P(QuicEpollConnectionHelperAlarmTest, CreateAlarmAndCancel) { |
| 71 TestDelegate* delegate = new TestDelegate(); | 90 QuicArenaScopedPtr<TestDelegate> delegate = |
| 72 scoped_ptr<QuicAlarm> alarm(helper_.CreateAlarm(delegate)); | 91 QuicArenaScopedPtr<TestDelegate>(new TestDelegate()); |
| 92 TestDelegate* unowned_delegate = delegate.get(); |
| 93 QuicArenaScopedPtr<QuicAlarm> alarm( |
| 94 helper_.CreateAlarm(std::move(delegate), GetArenaParam())); |
| 73 | 95 |
| 74 const QuicClock* clock = helper_.GetClock(); | 96 const QuicClock* clock = helper_.GetClock(); |
| 75 QuicTime start = clock->Now(); | 97 QuicTime start = clock->Now(); |
| 76 QuicTime::Delta delta = QuicTime::Delta::FromMicroseconds(1); | 98 QuicTime::Delta delta = QuicTime::Delta::FromMicroseconds(1); |
| 77 alarm->Set(start.Add(delta)); | 99 alarm->Set(start.Add(delta)); |
| 78 alarm->Cancel(); | 100 alarm->Cancel(); |
| 79 | 101 |
| 80 epoll_server_.AdvanceByExactlyAndCallCallbacks(delta.ToMicroseconds()); | 102 epoll_server_.AdvanceByExactlyAndCallCallbacks(delta.ToMicroseconds()); |
| 81 EXPECT_EQ(start.Add(delta), clock->Now()); | 103 EXPECT_EQ(start.Add(delta), clock->Now()); |
| 82 EXPECT_FALSE(delegate->fired()); | 104 EXPECT_FALSE(unowned_delegate->fired()); |
| 83 } | 105 } |
| 84 | 106 |
| 85 TEST_F(QuicEpollConnectionHelperTest, CreateAlarmAndReset) { | 107 TEST_P(QuicEpollConnectionHelperAlarmTest, CreateAlarmAndReset) { |
| 86 TestDelegate* delegate = new TestDelegate(); | 108 QuicArenaScopedPtr<TestDelegate> delegate = |
| 87 scoped_ptr<QuicAlarm> alarm(helper_.CreateAlarm(delegate)); | 109 QuicArenaScopedPtr<TestDelegate>(new TestDelegate()); |
| 110 TestDelegate* unowned_delegate = delegate.get(); |
| 111 QuicArenaScopedPtr<QuicAlarm> alarm( |
| 112 helper_.CreateAlarm(std::move(delegate), GetArenaParam())); |
| 88 | 113 |
| 89 const QuicClock* clock = helper_.GetClock(); | 114 const QuicClock* clock = helper_.GetClock(); |
| 90 QuicTime start = clock->Now(); | 115 QuicTime start = clock->Now(); |
| 91 QuicTime::Delta delta = QuicTime::Delta::FromMicroseconds(1); | 116 QuicTime::Delta delta = QuicTime::Delta::FromMicroseconds(1); |
| 92 alarm->Set(clock->Now().Add(delta)); | 117 alarm->Set(clock->Now().Add(delta)); |
| 93 alarm->Cancel(); | 118 alarm->Cancel(); |
| 94 QuicTime::Delta new_delta = QuicTime::Delta::FromMicroseconds(3); | 119 QuicTime::Delta new_delta = QuicTime::Delta::FromMicroseconds(3); |
| 95 alarm->Set(clock->Now().Add(new_delta)); | 120 alarm->Set(clock->Now().Add(new_delta)); |
| 96 | 121 |
| 97 epoll_server_.AdvanceByExactlyAndCallCallbacks(delta.ToMicroseconds()); | 122 epoll_server_.AdvanceByExactlyAndCallCallbacks(delta.ToMicroseconds()); |
| 98 EXPECT_EQ(start.Add(delta), clock->Now()); | 123 EXPECT_EQ(start.Add(delta), clock->Now()); |
| 99 EXPECT_FALSE(delegate->fired()); | 124 EXPECT_FALSE(unowned_delegate->fired()); |
| 100 | 125 |
| 101 epoll_server_.AdvanceByExactlyAndCallCallbacks( | 126 epoll_server_.AdvanceByExactlyAndCallCallbacks( |
| 102 new_delta.Subtract(delta).ToMicroseconds()); | 127 new_delta.Subtract(delta).ToMicroseconds()); |
| 103 EXPECT_EQ(start.Add(new_delta), clock->Now()); | 128 EXPECT_EQ(start.Add(new_delta), clock->Now()); |
| 104 EXPECT_TRUE(delegate->fired()); | 129 EXPECT_TRUE(unowned_delegate->fired()); |
| 105 } | 130 } |
| 106 | 131 |
| 107 TEST_F(QuicEpollConnectionHelperTest, CreateAlarmAndUpdate) { | 132 TEST_P(QuicEpollConnectionHelperAlarmTest, CreateAlarmAndUpdate) { |
| 108 TestDelegate* delegate = new TestDelegate(); | 133 QuicArenaScopedPtr<TestDelegate> delegate = |
| 109 scoped_ptr<QuicAlarm> alarm(helper_.CreateAlarm(delegate)); | 134 QuicArenaScopedPtr<TestDelegate>(new TestDelegate()); |
| 135 TestDelegate* unowned_delegate = delegate.get(); |
| 136 QuicArenaScopedPtr<QuicAlarm> alarm( |
| 137 helper_.CreateAlarm(std::move(delegate), GetArenaParam())); |
| 110 | 138 |
| 111 const QuicClock* clock = helper_.GetClock(); | 139 const QuicClock* clock = helper_.GetClock(); |
| 112 QuicTime start = clock->Now(); | 140 QuicTime start = clock->Now(); |
| 113 QuicTime::Delta delta = QuicTime::Delta::FromMicroseconds(1); | 141 QuicTime::Delta delta = QuicTime::Delta::FromMicroseconds(1); |
| 114 alarm->Set(clock->Now().Add(delta)); | 142 alarm->Set(clock->Now().Add(delta)); |
| 115 QuicTime::Delta new_delta = QuicTime::Delta::FromMicroseconds(3); | 143 QuicTime::Delta new_delta = QuicTime::Delta::FromMicroseconds(3); |
| 116 alarm->Update(clock->Now().Add(new_delta), | 144 alarm->Update(clock->Now().Add(new_delta), |
| 117 QuicTime::Delta::FromMicroseconds(1)); | 145 QuicTime::Delta::FromMicroseconds(1)); |
| 118 | 146 |
| 119 epoll_server_.AdvanceByExactlyAndCallCallbacks(delta.ToMicroseconds()); | 147 epoll_server_.AdvanceByExactlyAndCallCallbacks(delta.ToMicroseconds()); |
| 120 EXPECT_EQ(start.Add(delta), clock->Now()); | 148 EXPECT_EQ(start.Add(delta), clock->Now()); |
| 121 EXPECT_FALSE(delegate->fired()); | 149 EXPECT_FALSE(unowned_delegate->fired()); |
| 122 | 150 |
| 123 // Move the alarm forward 1us and ensure it doesn't move forward. | 151 // Move the alarm forward 1us and ensure it doesn't move forward. |
| 124 alarm->Update(clock->Now().Add(new_delta), | 152 alarm->Update(clock->Now().Add(new_delta), |
| 125 QuicTime::Delta::FromMicroseconds(2)); | 153 QuicTime::Delta::FromMicroseconds(2)); |
| 126 | 154 |
| 127 epoll_server_.AdvanceByExactlyAndCallCallbacks( | 155 epoll_server_.AdvanceByExactlyAndCallCallbacks( |
| 128 new_delta.Subtract(delta).ToMicroseconds()); | 156 new_delta.Subtract(delta).ToMicroseconds()); |
| 129 EXPECT_EQ(start.Add(new_delta), clock->Now()); | 157 EXPECT_EQ(start.Add(new_delta), clock->Now()); |
| 130 EXPECT_TRUE(delegate->fired()); | 158 EXPECT_TRUE(unowned_delegate->fired()); |
| 131 | 159 |
| 132 // Set the alarm via an update call. | 160 // Set the alarm via an update call. |
| 133 new_delta = QuicTime::Delta::FromMicroseconds(5); | 161 new_delta = QuicTime::Delta::FromMicroseconds(5); |
| 134 alarm->Update(clock->Now().Add(new_delta), | 162 alarm->Update(clock->Now().Add(new_delta), |
| 135 QuicTime::Delta::FromMicroseconds(1)); | 163 QuicTime::Delta::FromMicroseconds(1)); |
| 136 EXPECT_TRUE(alarm->IsSet()); | 164 EXPECT_TRUE(alarm->IsSet()); |
| 137 | 165 |
| 138 // Update it with an uninitialized time and ensure it's cancelled. | 166 // Update it with an uninitialized time and ensure it's cancelled. |
| 139 alarm->Update(QuicTime::Zero(), QuicTime::Delta::FromMicroseconds(1)); | 167 alarm->Update(QuicTime::Zero(), QuicTime::Delta::FromMicroseconds(1)); |
| 140 EXPECT_FALSE(alarm->IsSet()); | 168 EXPECT_FALSE(alarm->IsSet()); |
| 141 } | 169 } |
| 142 | 170 |
| 143 } // namespace | 171 } // namespace |
| 144 } // namespace test | 172 } // namespace test |
| 145 } // namespace tools | 173 } // namespace tools |
| 146 } // namespace net | 174 } // namespace net |
| OLD | NEW |