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

Side by Side Diff: extensions/browser/api/cast_channel/keep_alive_delegate_unittest.cc

Issue 2891923004: [cast_channel] Make cast_channel related files not depend on "cast_channel.h" (Closed)
Patch Set: fix windows compile errors Created 3 years, 6 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
« no previous file with comments | « extensions/browser/api/cast_channel/keep_alive_delegate.cc ('k') | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright 2015 The Chromium Authors. All rights reserved. 1 // Copyright 2015 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 "extensions/browser/api/cast_channel/keep_alive_delegate.h" 5 #include "extensions/browser/api/cast_channel/keep_alive_delegate.h"
6 6
7 #include <stdint.h> 7 #include <stdint.h>
8 8
9 #include "base/macros.h" 9 #include "base/macros.h"
10 #include "base/memory/ptr_util.h" 10 #include "base/memory/ptr_util.h"
(...skipping 31 matching lines...) Expand 10 before | Expand all | Expand 10 after
42 // Passes through the Reset call to the base MockTimer and visits the mock 42 // Passes through the Reset call to the base MockTimer and visits the mock
43 // ResetTriggered method. 43 // ResetTriggered method.
44 void Reset() override { 44 void Reset() override {
45 base::MockTimer::Reset(); 45 base::MockTimer::Reset();
46 ResetTriggered(); 46 ResetTriggered();
47 } 47 }
48 }; 48 };
49 49
50 class KeepAliveDelegateTest : public testing::Test { 50 class KeepAliveDelegateTest : public testing::Test {
51 public: 51 public:
52 using ChannelError = ::cast_channel::ChannelError;
53
52 KeepAliveDelegateTest() {} 54 KeepAliveDelegateTest() {}
53 ~KeepAliveDelegateTest() override {} 55 ~KeepAliveDelegateTest() override {}
54 56
55 protected: 57 protected:
56 void SetUp() override { 58 void SetUp() override {
57 inner_delegate_ = new MockCastTransportDelegate; 59 inner_delegate_ = new MockCastTransportDelegate;
58 logger_ = new Logger(); 60 logger_ = new Logger();
59 keep_alive_.reset(new KeepAliveDelegate( 61 keep_alive_.reset(new KeepAliveDelegate(
60 &socket_, logger_, base::WrapUnique(inner_delegate_), 62 &socket_, logger_, base::WrapUnique(inner_delegate_),
61 base::TimeDelta::FromMilliseconds(kTestPingTimeoutMillis), 63 base::TimeDelta::FromMilliseconds(kTestPingTimeoutMillis),
(...skipping 18 matching lines...) Expand all
80 scoped_refptr<Logger> logger_; 82 scoped_refptr<Logger> logger_;
81 MockCastTransportDelegate* inner_delegate_; 83 MockCastTransportDelegate* inner_delegate_;
82 MockTimerWithMonitoredReset* liveness_timer_; 84 MockTimerWithMonitoredReset* liveness_timer_;
83 MockTimerWithMonitoredReset* ping_timer_; 85 MockTimerWithMonitoredReset* ping_timer_;
84 86
85 private: 87 private:
86 DISALLOW_COPY_AND_ASSIGN(KeepAliveDelegateTest); 88 DISALLOW_COPY_AND_ASSIGN(KeepAliveDelegateTest);
87 }; 89 };
88 90
89 TEST_F(KeepAliveDelegateTest, TestErrorHandledBeforeStarting) { 91 TEST_F(KeepAliveDelegateTest, TestErrorHandledBeforeStarting) {
90 keep_alive_->OnError(CHANNEL_ERROR_CONNECT_ERROR); 92 keep_alive_->OnError(ChannelError::CONNECT_ERROR);
91 } 93 }
92 94
93 TEST_F(KeepAliveDelegateTest, TestPing) { 95 TEST_F(KeepAliveDelegateTest, TestPing) {
94 EXPECT_CALL(*socket_.mock_transport(), 96 EXPECT_CALL(*socket_.mock_transport(),
95 SendMessage(EqualsProto(KeepAliveDelegate::CreateKeepAliveMessage( 97 SendMessage(EqualsProto(KeepAliveDelegate::CreateKeepAliveMessage(
96 KeepAliveDelegate::kHeartbeatPingType)), 98 KeepAliveDelegate::kHeartbeatPingType)),
97 _)) 99 _))
98 .WillOnce(PostCompletionCallbackTask<1>(net::OK)); 100 .WillOnce(PostCompletionCallbackTask<1>(net::OK));
99 EXPECT_CALL(*inner_delegate_, Start()); 101 EXPECT_CALL(*inner_delegate_, Start());
100 EXPECT_CALL(*ping_timer_, ResetTriggered()).Times(2); 102 EXPECT_CALL(*ping_timer_, ResetTriggered()).Times(2);
101 EXPECT_CALL(*liveness_timer_, ResetTriggered()).Times(2); 103 EXPECT_CALL(*liveness_timer_, ResetTriggered()).Times(2);
102 EXPECT_CALL(*ping_timer_, Stop()); 104 EXPECT_CALL(*ping_timer_, Stop());
103 105
104 keep_alive_->Start(); 106 keep_alive_->Start();
105 ping_timer_->Fire(); 107 ping_timer_->Fire();
106 keep_alive_->OnMessage(KeepAliveDelegate::CreateKeepAliveMessage( 108 keep_alive_->OnMessage(KeepAliveDelegate::CreateKeepAliveMessage(
107 KeepAliveDelegate::kHeartbeatPongType)); 109 KeepAliveDelegate::kHeartbeatPongType));
108 RunPendingTasks(); 110 RunPendingTasks();
109 } 111 }
110 112
111 TEST_F(KeepAliveDelegateTest, TestPingFailed) { 113 TEST_F(KeepAliveDelegateTest, TestPingFailed) {
112 EXPECT_CALL(*socket_.mock_transport(), 114 EXPECT_CALL(*socket_.mock_transport(),
113 SendMessage(EqualsProto(KeepAliveDelegate::CreateKeepAliveMessage( 115 SendMessage(EqualsProto(KeepAliveDelegate::CreateKeepAliveMessage(
114 KeepAliveDelegate::kHeartbeatPingType)), 116 KeepAliveDelegate::kHeartbeatPingType)),
115 _)) 117 _))
116 .WillOnce(PostCompletionCallbackTask<1>(net::ERR_CONNECTION_RESET)); 118 .WillOnce(PostCompletionCallbackTask<1>(net::ERR_CONNECTION_RESET));
117 EXPECT_CALL(*inner_delegate_, Start()); 119 EXPECT_CALL(*inner_delegate_, Start());
118 EXPECT_CALL(*inner_delegate_, OnError(CHANNEL_ERROR_SOCKET_ERROR)); 120 EXPECT_CALL(*inner_delegate_, OnError(ChannelError::CAST_SOCKET_ERROR));
119 EXPECT_CALL(*ping_timer_, ResetTriggered()).Times(1); 121 EXPECT_CALL(*ping_timer_, ResetTriggered()).Times(1);
120 EXPECT_CALL(*liveness_timer_, ResetTriggered()).Times(1); 122 EXPECT_CALL(*liveness_timer_, ResetTriggered()).Times(1);
121 EXPECT_CALL(*liveness_timer_, Stop()); 123 EXPECT_CALL(*liveness_timer_, Stop());
122 EXPECT_CALL(*ping_timer_, Stop()).Times(2); 124 EXPECT_CALL(*ping_timer_, Stop()).Times(2);
123 125
124 keep_alive_->Start(); 126 keep_alive_->Start();
125 ping_timer_->Fire(); 127 ping_timer_->Fire();
126 RunPendingTasks(); 128 RunPendingTasks();
127 EXPECT_EQ(proto::PING_WRITE_ERROR, 129 EXPECT_EQ(proto::PING_WRITE_ERROR,
128 logger_->GetLastErrors(socket_.id()).event_type); 130 logger_->GetLastErrors(socket_.id()).event_type);
129 EXPECT_EQ(net::ERR_CONNECTION_RESET, 131 EXPECT_EQ(net::ERR_CONNECTION_RESET,
130 logger_->GetLastErrors(socket_.id()).net_return_value); 132 logger_->GetLastErrors(socket_.id()).net_return_value);
131 } 133 }
132 134
133 TEST_F(KeepAliveDelegateTest, TestPingAndLivenessTimeout) { 135 TEST_F(KeepAliveDelegateTest, TestPingAndLivenessTimeout) {
134 EXPECT_CALL(*socket_.mock_transport(), 136 EXPECT_CALL(*socket_.mock_transport(),
135 SendMessage(EqualsProto(KeepAliveDelegate::CreateKeepAliveMessage( 137 SendMessage(EqualsProto(KeepAliveDelegate::CreateKeepAliveMessage(
136 KeepAliveDelegate::kHeartbeatPingType)), 138 KeepAliveDelegate::kHeartbeatPingType)),
137 _)) 139 _))
138 .WillOnce(PostCompletionCallbackTask<1>(net::OK)); 140 .WillOnce(PostCompletionCallbackTask<1>(net::OK));
139 EXPECT_CALL(*inner_delegate_, OnError(CHANNEL_ERROR_PING_TIMEOUT)); 141 EXPECT_CALL(*inner_delegate_, OnError(ChannelError::PING_TIMEOUT));
140 EXPECT_CALL(*inner_delegate_, Start()); 142 EXPECT_CALL(*inner_delegate_, Start());
141 EXPECT_CALL(*ping_timer_, ResetTriggered()).Times(1); 143 EXPECT_CALL(*ping_timer_, ResetTriggered()).Times(1);
142 EXPECT_CALL(*liveness_timer_, ResetTriggered()).Times(1); 144 EXPECT_CALL(*liveness_timer_, ResetTriggered()).Times(1);
143 EXPECT_CALL(*liveness_timer_, Stop()).Times(2); 145 EXPECT_CALL(*liveness_timer_, Stop()).Times(2);
144 EXPECT_CALL(*ping_timer_, Stop()).Times(2); 146 EXPECT_CALL(*ping_timer_, Stop()).Times(2);
145 147
146 keep_alive_->Start(); 148 keep_alive_->Start();
147 ping_timer_->Fire(); 149 ping_timer_->Fire();
148 liveness_timer_->Fire(); 150 liveness_timer_->Fire();
149 RunPendingTasks(); 151 RunPendingTasks();
(...skipping 25 matching lines...) Expand all
175 EXPECT_CALL(*ping_timer_, ResetTriggered()).Times(2); 177 EXPECT_CALL(*ping_timer_, ResetTriggered()).Times(2);
176 EXPECT_CALL(*liveness_timer_, ResetTriggered()).Times(2); 178 EXPECT_CALL(*liveness_timer_, ResetTriggered()).Times(2);
177 EXPECT_CALL(*liveness_timer_, Stop()).Times(1); 179 EXPECT_CALL(*liveness_timer_, Stop()).Times(1);
178 EXPECT_CALL(*ping_timer_, Stop()).Times(1); 180 EXPECT_CALL(*ping_timer_, Stop()).Times(1);
179 181
180 Sequence message_and_error_sequence; 182 Sequence message_and_error_sequence;
181 EXPECT_CALL(*inner_delegate_, OnMessage(EqualsProto(message))) 183 EXPECT_CALL(*inner_delegate_, OnMessage(EqualsProto(message)))
182 .Times(1) 184 .Times(1)
183 .InSequence(message_and_error_sequence) 185 .InSequence(message_and_error_sequence)
184 .RetiresOnSaturation(); 186 .RetiresOnSaturation();
185 EXPECT_CALL(*inner_delegate_, OnError(CHANNEL_ERROR_INVALID_MESSAGE)) 187 EXPECT_CALL(*inner_delegate_, OnError(ChannelError::INVALID_MESSAGE))
186 .Times(1) 188 .Times(1)
187 .InSequence(message_and_error_sequence); 189 .InSequence(message_and_error_sequence);
188 EXPECT_CALL(*inner_delegate_, OnMessage(EqualsProto(message_after_error))) 190 EXPECT_CALL(*inner_delegate_, OnMessage(EqualsProto(message_after_error)))
189 .Times(1) 191 .Times(1)
190 .InSequence(message_and_error_sequence) 192 .InSequence(message_and_error_sequence)
191 .RetiresOnSaturation(); 193 .RetiresOnSaturation();
192 EXPECT_CALL(*inner_delegate_, OnMessage(EqualsProto(late_ping_message))) 194 EXPECT_CALL(*inner_delegate_, OnMessage(EqualsProto(late_ping_message)))
193 .Times(0) 195 .Times(0)
194 .InSequence(message_and_error_sequence) 196 .InSequence(message_and_error_sequence)
195 .RetiresOnSaturation(); 197 .RetiresOnSaturation();
196 198
197 // Start, process one message, then error-out. KeepAliveDelegate will 199 // Start, process one message, then error-out. KeepAliveDelegate will
198 // automatically stop itself. 200 // automatically stop itself.
199 keep_alive_->Start(); 201 keep_alive_->Start();
200 keep_alive_->OnMessage(message); 202 keep_alive_->OnMessage(message);
201 RunPendingTasks(); 203 RunPendingTasks();
202 keep_alive_->OnError(CHANNEL_ERROR_INVALID_MESSAGE); 204 keep_alive_->OnError(ChannelError::INVALID_MESSAGE);
203 RunPendingTasks(); 205 RunPendingTasks();
204 206
205 // Process a non-PING/PONG message and expect it to pass through. 207 // Process a non-PING/PONG message and expect it to pass through.
206 keep_alive_->OnMessage(message_after_error); 208 keep_alive_->OnMessage(message_after_error);
207 RunPendingTasks(); 209 RunPendingTasks();
208 210
209 // Process a late-arriving PING/PONG message, which should have no effect. 211 // Process a late-arriving PING/PONG message, which should have no effect.
210 keep_alive_->OnMessage(late_ping_message); 212 keep_alive_->OnMessage(late_ping_message);
211 RunPendingTasks(); 213 RunPendingTasks();
212 } 214 }
213 215
214 } // namespace 216 } // namespace
215 } // namespace cast_channel 217 } // namespace cast_channel
216 } // namespace api 218 } // namespace api
217 } // namespace extensions 219 } // namespace extensions
OLDNEW
« no previous file with comments | « extensions/browser/api/cast_channel/keep_alive_delegate.cc ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698