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

Side by Side Diff: net/quic/quic_epoll_alarm_factory_test.cc

Issue 1901423003: Plumbs new SpdyFramerVisitorInterface method handling through QUIC test utilities, including the te… (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@119562680
Patch Set: Created 4 years, 8 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 unified diff | Download patch
OLDNEW
(Empty)
1 // Copyright 2016 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_alarm_factory.h"
6
7 #include "net/gfe2/test_tools/mock_epoll_server.h"
8 #include "testing/base/public/gmock.h"
9 #include "testing/base/public/gunit.h"
10
11 namespace net {
12 namespace test {
13 namespace {
14
15 // The boolean parameter denotes whether or not to use an arena.
16 class QuicEpollAlarmFactoryTest : public ::testing::TestWithParam<bool> {
17 protected:
18 QuicEpollAlarmFactoryTest()
19 : clock_(&epoll_server_), alarm_factory_(&epoll_server_) {}
20
21 QuicConnectionArena* GetArenaParam() {
22 return GetParam() ? &arena_ : nullptr;
23 }
24
25 const QuicEpollClock clock_;
26 QuicEpollAlarmFactory alarm_factory_;
27 test::MockEpollServer epoll_server_;
28 QuicConnectionArena arena_;
29 };
30
31 TEST_P(QuicEpollAlarmFactoryTest, CreateAlarm) {
32 QuicArenaScopedPtr<TestDelegate> delegate =
33 QuicArenaScopedPtr<TestDelegate>(new TestDelegate());
34 QuicArenaScopedPtr<QuicAlarm> alarm(
35 alarm_factory_.CreateAlarm(std::move(delegate), GetArenaParam()));
36
37 QuicTime start = clock_.Now();
38 QuicTime::Delta delta = QuicTime::Delta::FromMicroseconds(1);
39 alarm->Set(start.Add(delta));
40
41 epoll_server_.AdvanceByAndWaitForEventsAndExecuteCallbacks(
42 delta.ToMicroseconds());
43 EXPECT_EQ(start.Add(delta), clock_.Now());
44 }
45
46 TEST_P(QuicEpollAlarmFactoryTest, CreateAlarmAndCancel) {
47 QuicArenaScopedPtr<TestDelegate> delegate =
48 QuicArenaScopedPtr<TestDelegate>(new TestDelegate());
49 TestDelegate* unowned_delegate = delegate.get();
50 QuicArenaScopedPtr<QuicAlarm> alarm(
51 alarm_factory_.CreateAlarm(std::move(delegate), GetArenaParam()));
52
53 QuicTime start = clock_.Now();
54 QuicTime::Delta delta = QuicTime::Delta::FromMicroseconds(1);
55 alarm->Set(start.Add(delta));
56 alarm->Cancel();
57
58 epoll_server_.AdvanceByExactlyAndCallCallbacks(delta.ToMicroseconds());
59 EXPECT_EQ(start.Add(delta), clock_.Now());
60 EXPECT_FALSE(unowned_delegate->fired());
61 }
62
63 TEST_P(QuicEpollAlarmFactoryTest, CreateAlarmAndReset) {
64 QuicArenaScopedPtr<TestDelegate> delegate =
65 QuicArenaScopedPtr<TestDelegate>(new TestDelegate());
66 TestDelegate* unowned_delegate = delegate.get();
67 QuicArenaScopedPtr<QuicAlarm> alarm(
68 alarm_factory_.CreateAlarm(std::move(delegate), GetArenaParam()));
69
70 QuicTime start = clock_.Now();
71 QuicTime::Delta delta = QuicTime::Delta::FromMicroseconds(1);
72 alarm->Set(clock_.Now().Add(delta));
73 alarm->Cancel();
74 QuicTime::Delta new_delta = QuicTime::Delta::FromMicroseconds(3);
75 alarm->Set(clock_.Now().Add(new_delta));
76
77 epoll_server_.AdvanceByExactlyAndCallCallbacks(delta.ToMicroseconds());
78 EXPECT_EQ(start.Add(delta), clock_.Now());
79 EXPECT_FALSE(unowned_delegate->fired());
80
81 epoll_server_.AdvanceByExactlyAndCallCallbacks(
82 new_delta.Subtract(delta).ToMicroseconds());
83 EXPECT_EQ(start.Add(new_delta), clock_.Now());
84 EXPECT_TRUE(unowned_delegate->fired());
85 }
86
87 TEST_P(QuicEpollAlarmFactoryTest, CreateAlarmAndUpdate) {
88 QuicArenaScopedPtr<TestDelegate> delegate =
89 QuicArenaScopedPtr<TestDelegate>(new TestDelegate());
90 TestDelegate* unowned_delegate = delegate.get();
91 QuicArenaScopedPtr<QuicAlarm> alarm(
92 alarm_factory_.CreateAlarm(std::move(delegate), GetArenaParam()));
93
94 QuicTime start = clock_.Now();
95 QuicTime::Delta delta = QuicTime::Delta::FromMicroseconds(1);
96 alarm->Set(clock_.Now().Add(delta));
97 QuicTime::Delta new_delta = QuicTime::Delta::FromMicroseconds(3);
98 alarm->Update(clock_.Now().Add(new_delta),
99 QuicTime::Delta::FromMicroseconds(1));
100
101 epoll_server_.AdvanceByExactlyAndCallCallbacks(delta.ToMicroseconds());
102 EXPECT_EQ(start.Add(delta), clock_.Now());
103 EXPECT_FALSE(unowned_delegate->fired());
104
105 // Move the alarm forward 1us and ensure it doesn't move forward.
106 alarm->Update(clock_.Now().Add(new_delta),
107 QuicTime::Delta::FromMicroseconds(2));
108
109 epoll_server_.AdvanceByExactlyAndCallCallbacks(
110 new_delta.Subtract(delta).ToMicroseconds());
111 EXPECT_EQ(start.Add(new_delta), clock_.Now());
112 EXPECT_TRUE(unowned_delegate->fired());
113
114 // Set the alarm via an update call.
115 new_delta = QuicTime::Delta::FromMicroseconds(5);
116 alarm->Update(clock_.Now().Add(new_delta),
117 QuicTime::Delta::FromMicroseconds(1));
118 EXPECT_TRUE(alarm->IsSet());
119
120 // Update it with an uninitialized time and ensure it's cancelled.
121 alarm->Update(QuicTime::Zero(), QuicTime::Delta::FromMicroseconds(1));
122 EXPECT_FALSE(alarm->IsSet());
123 }
124
125 } // namespace
126 } // namespace test
127 } // namespace net
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698