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

Side by Side Diff: tools/battor_agent/battor_agent_unittest.cc

Issue 1567683002: Makes the BattOrConnection read messages instead of bytes (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 4 years, 11 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
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 "tools/battor_agent/battor_agent.h" 5 #include "tools/battor_agent/battor_agent.h"
6 6
7 #include "base/test/test_simple_task_runner.h" 7 #include "base/test/test_simple_task_runner.h"
8 #include "base/thread_task_runner_handle.h" 8 #include "base/thread_task_runner_handle.h"
9 #include "testing/gmock/include/gmock/gmock.h" 9 #include "testing/gmock/include/gmock/gmock.h"
10 #include "testing/gtest/include/gtest/gtest.h" 10 #include "testing/gtest/include/gtest/gtest.h"
(...skipping 32 matching lines...) Expand 10 before | Expand all | Expand 10 after
43 MockBattOrConnection(BattOrConnection::Listener* listener) 43 MockBattOrConnection(BattOrConnection::Listener* listener)
44 : BattOrConnection(listener) {} 44 : BattOrConnection(listener) {}
45 ~MockBattOrConnection() override {} 45 ~MockBattOrConnection() override {}
46 46
47 MOCK_METHOD0(Open, void()); 47 MOCK_METHOD0(Open, void());
48 MOCK_METHOD0(Close, void()); 48 MOCK_METHOD0(Close, void());
49 MOCK_METHOD3(SendBytes, 49 MOCK_METHOD3(SendBytes,
50 void(BattOrMessageType type, 50 void(BattOrMessageType type,
51 const void* buffer, 51 const void* buffer,
52 size_t bytes_to_send)); 52 size_t bytes_to_send));
53 MOCK_METHOD1(ReadBytes, void(size_t bytes_to_read)); 53 MOCK_METHOD1(ReadMessage, void(size_t bytes_to_read));
54 MOCK_METHOD0(Flush, void()); 54 MOCK_METHOD0(Flush, void());
55 55
56 private: 56 private:
57 DISALLOW_COPY_AND_ASSIGN(MockBattOrConnection); 57 DISALLOW_COPY_AND_ASSIGN(MockBattOrConnection);
58 }; 58 };
59 59
60 } // namespace 60 } // namespace
61 61
62 // TestableBattOrAgent uses a fake BattOrConnection to be testable. 62 // TestableBattOrAgent uses a fake BattOrConnection to be testable.
63 class TestableBattOrAgent : public BattOrAgent { 63 class TestableBattOrAgent : public BattOrAgent {
(...skipping 57 matching lines...) Expand 10 before | Expand all | Expand 10 after
121 121
122 if (end_state == BattOrAgentState::RESET_SENT) 122 if (end_state == BattOrAgentState::RESET_SENT)
123 return; 123 return;
124 124
125 GetAgent()->OnBytesSent(true); 125 GetAgent()->OnBytesSent(true);
126 GetTaskRunner()->RunUntilIdle(); 126 GetTaskRunner()->RunUntilIdle();
127 127
128 if (end_state == BattOrAgentState::INIT_SENT) 128 if (end_state == BattOrAgentState::INIT_SENT)
129 return; 129 return;
130 130
131 GetAgent()->OnBytesRead(true, BATTOR_MESSAGE_TYPE_CONTROL_ACK, 131 GetAgent()->OnMessageRead(true, BATTOR_MESSAGE_TYPE_CONTROL_ACK,
132 AckToCharVector(kInitAck)); 132 AckToCharVector(kInitAck));
133 GetTaskRunner()->RunUntilIdle(); 133 GetTaskRunner()->RunUntilIdle();
134 134
135 if (end_state == BattOrAgentState::INIT_ACKED) 135 if (end_state == BattOrAgentState::INIT_ACKED)
136 return; 136 return;
137 137
138 GetAgent()->OnBytesSent(true); 138 GetAgent()->OnBytesSent(true);
139 GetTaskRunner()->RunUntilIdle(); 139 GetTaskRunner()->RunUntilIdle();
140 140
141 if (end_state == BattOrAgentState::SET_GAIN_SENT) 141 if (end_state == BattOrAgentState::SET_GAIN_SENT)
142 return; 142 return;
143 143
144 GetAgent()->OnBytesRead(true, BATTOR_MESSAGE_TYPE_CONTROL_ACK, 144 GetAgent()->OnMessageRead(true, BATTOR_MESSAGE_TYPE_CONTROL_ACK,
145 AckToCharVector(kSetGainAck)); 145 AckToCharVector(kSetGainAck));
146 GetTaskRunner()->RunUntilIdle(); 146 GetTaskRunner()->RunUntilIdle();
147 147
148 if (end_state == BattOrAgentState::GAIN_ACKED) 148 if (end_state == BattOrAgentState::GAIN_ACKED)
149 return; 149 return;
150 150
151 GetAgent()->OnBytesSent(true); 151 GetAgent()->OnBytesSent(true);
152 GetTaskRunner()->RunUntilIdle(); 152 GetTaskRunner()->RunUntilIdle();
153 153
154 if (end_state == BattOrAgentState::START_TRACING_SENT) 154 if (end_state == BattOrAgentState::START_TRACING_SENT)
155 return; 155 return;
156 156
157 // Make sure that we're actually forwarding to a state in the start tracing 157 // Make sure that we're actually forwarding to a state in the start tracing
158 // state machine. 158 // state machine.
159 DCHECK(end_state == BattOrAgentState::START_TRACING_COMPLETE); 159 DCHECK(end_state == BattOrAgentState::START_TRACING_COMPLETE);
160 160
161 GetAgent()->OnBytesRead(true, BATTOR_MESSAGE_TYPE_CONTROL_ACK, 161 GetAgent()->OnMessageRead(true, BATTOR_MESSAGE_TYPE_CONTROL_ACK,
162 AckToCharVector(kStartTracingAck)); 162 AckToCharVector(kStartTracingAck));
163 GetTaskRunner()->RunUntilIdle(); 163 GetTaskRunner()->RunUntilIdle();
164 } 164 }
165 165
166 TestableBattOrAgent* GetAgent() { return agent_.get(); } 166 TestableBattOrAgent* GetAgent() { return agent_.get(); }
167 167
168 scoped_refptr<base::TestSimpleTaskRunner> GetTaskRunner() { 168 scoped_refptr<base::TestSimpleTaskRunner> GetTaskRunner() {
169 return task_runner_; 169 return task_runner_;
170 } 170 }
171 171
172 BattOrError GetStartTracingError() { return start_tracing_error_; } 172 BattOrError GetStartTracingError() { return start_tracing_error_; }
(...skipping 21 matching lines...) Expand all
194 SendBytes(BATTOR_MESSAGE_TYPE_CONTROL, 194 SendBytes(BATTOR_MESSAGE_TYPE_CONTROL,
195 BufferEq(&reset_msg, sizeof(reset_msg)), sizeof(reset_msg))); 195 BufferEq(&reset_msg, sizeof(reset_msg)), sizeof(reset_msg)));
196 196
197 EXPECT_CALL(*GetAgent()->GetConnection(), Flush()); 197 EXPECT_CALL(*GetAgent()->GetConnection(), Flush());
198 BattOrControlMessage init_msg{BATTOR_CONTROL_MESSAGE_TYPE_INIT, 0, 0}; 198 BattOrControlMessage init_msg{BATTOR_CONTROL_MESSAGE_TYPE_INIT, 0, 0};
199 EXPECT_CALL( 199 EXPECT_CALL(
200 *GetAgent()->GetConnection(), 200 *GetAgent()->GetConnection(),
201 SendBytes(BATTOR_MESSAGE_TYPE_CONTROL, 201 SendBytes(BATTOR_MESSAGE_TYPE_CONTROL,
202 BufferEq(&init_msg, sizeof(init_msg)), sizeof(init_msg))); 202 BufferEq(&init_msg, sizeof(init_msg)), sizeof(init_msg)));
203 203
204 EXPECT_CALL(*GetAgent()->GetConnection(), ReadBytes(sizeof(kInitAck))); 204 EXPECT_CALL(*GetAgent()->GetConnection(), ReadMessage(sizeof(kInitAck)));
205 205
206 BattOrControlMessage set_gain_msg{BATTOR_CONTROL_MESSAGE_TYPE_SET_GAIN, 206 BattOrControlMessage set_gain_msg{BATTOR_CONTROL_MESSAGE_TYPE_SET_GAIN,
207 BATTOR_GAIN_LOW, 0}; 207 BATTOR_GAIN_LOW, 0};
208 EXPECT_CALL(*GetAgent()->GetConnection(), 208 EXPECT_CALL(*GetAgent()->GetConnection(),
209 SendBytes(BATTOR_MESSAGE_TYPE_CONTROL, 209 SendBytes(BATTOR_MESSAGE_TYPE_CONTROL,
210 BufferEq(&set_gain_msg, sizeof(set_gain_msg)), 210 BufferEq(&set_gain_msg, sizeof(set_gain_msg)),
211 sizeof(set_gain_msg))); 211 sizeof(set_gain_msg)));
212 212
213 EXPECT_CALL(*GetAgent()->GetConnection(), ReadBytes(sizeof(kSetGainAck))); 213 EXPECT_CALL(*GetAgent()->GetConnection(), ReadMessage(sizeof(kSetGainAck)));
214 214
215 BattOrControlMessage start_tracing_msg{ 215 BattOrControlMessage start_tracing_msg{
216 BATTOR_CONTROL_MESSAGE_TYPE_START_SAMPLING_SD, 0, 0}; 216 BATTOR_CONTROL_MESSAGE_TYPE_START_SAMPLING_SD, 0, 0};
217 EXPECT_CALL(*GetAgent()->GetConnection(), 217 EXPECT_CALL(*GetAgent()->GetConnection(),
218 SendBytes(BATTOR_MESSAGE_TYPE_CONTROL, 218 SendBytes(BATTOR_MESSAGE_TYPE_CONTROL,
219 BufferEq(&start_tracing_msg, sizeof(start_tracing_msg)), 219 BufferEq(&start_tracing_msg, sizeof(start_tracing_msg)),
220 sizeof(start_tracing_msg))); 220 sizeof(start_tracing_msg)));
221 221
222 EXPECT_CALL(*GetAgent()->GetConnection(), 222 EXPECT_CALL(*GetAgent()->GetConnection(),
223 ReadBytes(sizeof(kStartTracingAck))); 223 ReadMessage(sizeof(kStartTracingAck)));
224 224
225 RunStartTracingTo(BattOrAgentState::START_TRACING_COMPLETE); 225 RunStartTracingTo(BattOrAgentState::START_TRACING_COMPLETE);
226 EXPECT_TRUE(IsStartTracingComplete()); 226 EXPECT_TRUE(IsStartTracingComplete());
227 EXPECT_EQ(BATTOR_ERROR_NONE, GetStartTracingError()); 227 EXPECT_EQ(BATTOR_ERROR_NONE, GetStartTracingError());
228 } 228 }
229 229
230 TEST_F(BattOrAgentTest, StartTracingFailsWithoutConnection) { 230 TEST_F(BattOrAgentTest, StartTracingFailsWithoutConnection) {
231 GetAgent()->StartTracing(); 231 GetAgent()->StartTracing();
232 GetTaskRunner()->RunUntilIdle(); 232 GetTaskRunner()->RunUntilIdle();
233 233
(...skipping 17 matching lines...) Expand all
251 RunStartTracingTo(BattOrAgentState::RESET_SENT); 251 RunStartTracingTo(BattOrAgentState::RESET_SENT);
252 GetAgent()->OnBytesSent(false); 252 GetAgent()->OnBytesSent(false);
253 GetTaskRunner()->RunUntilIdle(); 253 GetTaskRunner()->RunUntilIdle();
254 254
255 EXPECT_TRUE(IsStartTracingComplete()); 255 EXPECT_TRUE(IsStartTracingComplete());
256 EXPECT_EQ(BATTOR_ERROR_SEND_ERROR, GetStartTracingError()); 256 EXPECT_EQ(BATTOR_ERROR_SEND_ERROR, GetStartTracingError());
257 } 257 }
258 258
259 TEST_F(BattOrAgentTest, StartTracingFailsIfInitAckReadFails) { 259 TEST_F(BattOrAgentTest, StartTracingFailsIfInitAckReadFails) {
260 RunStartTracingTo(BattOrAgentState::INIT_SENT); 260 RunStartTracingTo(BattOrAgentState::INIT_SENT);
261 GetAgent()->OnBytesRead(false, BATTOR_MESSAGE_TYPE_CONTROL_ACK, nullptr); 261 GetAgent()->OnMessageRead(false, BATTOR_MESSAGE_TYPE_CONTROL_ACK, nullptr);
262 GetTaskRunner()->RunUntilIdle(); 262 GetTaskRunner()->RunUntilIdle();
263 263
264 EXPECT_TRUE(IsStartTracingComplete()); 264 EXPECT_TRUE(IsStartTracingComplete());
265 EXPECT_EQ(BATTOR_ERROR_RECEIVE_ERROR, GetStartTracingError()); 265 EXPECT_EQ(BATTOR_ERROR_RECEIVE_ERROR, GetStartTracingError());
266 } 266 }
267 267
268 TEST_F(BattOrAgentTest, StartTracingFailsIfInitWrongAckRead) { 268 TEST_F(BattOrAgentTest, StartTracingFailsIfInitWrongAckRead) {
269 RunStartTracingTo(BattOrAgentState::INIT_SENT); 269 RunStartTracingTo(BattOrAgentState::INIT_SENT);
270 GetAgent()->OnBytesRead(true, BATTOR_MESSAGE_TYPE_CONTROL_ACK, 270 GetAgent()->OnMessageRead(true, BATTOR_MESSAGE_TYPE_CONTROL_ACK,
271 AckToCharVector(kStartTracingAck)); 271 AckToCharVector(kStartTracingAck));
272 GetTaskRunner()->RunUntilIdle(); 272 GetTaskRunner()->RunUntilIdle();
273 273
274 EXPECT_TRUE(IsStartTracingComplete()); 274 EXPECT_TRUE(IsStartTracingComplete());
275 EXPECT_EQ(BATTOR_ERROR_UNEXPECTED_MESSAGE, GetStartTracingError()); 275 EXPECT_EQ(BATTOR_ERROR_UNEXPECTED_MESSAGE, GetStartTracingError());
276 } 276 }
277 277
278 TEST_F(BattOrAgentTest, StartTracingFailsIfSetGainSendFails) { 278 TEST_F(BattOrAgentTest, StartTracingFailsIfSetGainSendFails) {
279 RunStartTracingTo(BattOrAgentState::RESET_SENT); 279 RunStartTracingTo(BattOrAgentState::RESET_SENT);
280 GetAgent()->OnBytesSent(false); 280 GetAgent()->OnBytesSent(false);
281 GetTaskRunner()->RunUntilIdle(); 281 GetTaskRunner()->RunUntilIdle();
282 282
283 EXPECT_TRUE(IsStartTracingComplete()); 283 EXPECT_TRUE(IsStartTracingComplete());
284 EXPECT_EQ(BATTOR_ERROR_SEND_ERROR, GetStartTracingError()); 284 EXPECT_EQ(BATTOR_ERROR_SEND_ERROR, GetStartTracingError());
285 } 285 }
286 286
287 TEST_F(BattOrAgentTest, StartTracingFailsIfSetGainAckReadFails) { 287 TEST_F(BattOrAgentTest, StartTracingFailsIfSetGainAckReadFails) {
288 RunStartTracingTo(BattOrAgentState::SET_GAIN_SENT); 288 RunStartTracingTo(BattOrAgentState::SET_GAIN_SENT);
289 GetAgent()->OnBytesRead(false, BATTOR_MESSAGE_TYPE_CONTROL_ACK, nullptr); 289 GetAgent()->OnMessageRead(false, BATTOR_MESSAGE_TYPE_CONTROL_ACK, nullptr);
290 GetTaskRunner()->RunUntilIdle(); 290 GetTaskRunner()->RunUntilIdle();
291 291
292 EXPECT_TRUE(IsStartTracingComplete()); 292 EXPECT_TRUE(IsStartTracingComplete());
293 EXPECT_EQ(BATTOR_ERROR_RECEIVE_ERROR, GetStartTracingError()); 293 EXPECT_EQ(BATTOR_ERROR_RECEIVE_ERROR, GetStartTracingError());
294 } 294 }
295 295
296 TEST_F(BattOrAgentTest, StartTracingFailsIfSetGainWrongAckRead) { 296 TEST_F(BattOrAgentTest, StartTracingFailsIfSetGainWrongAckRead) {
297 RunStartTracingTo(BattOrAgentState::SET_GAIN_SENT); 297 RunStartTracingTo(BattOrAgentState::SET_GAIN_SENT);
298 GetAgent()->OnBytesRead(true, BATTOR_MESSAGE_TYPE_CONTROL_ACK, 298 GetAgent()->OnMessageRead(true, BATTOR_MESSAGE_TYPE_CONTROL_ACK,
299 AckToCharVector(kStartTracingAck)); 299 AckToCharVector(kStartTracingAck));
300 GetTaskRunner()->RunUntilIdle(); 300 GetTaskRunner()->RunUntilIdle();
301 301
302 EXPECT_TRUE(IsStartTracingComplete()); 302 EXPECT_TRUE(IsStartTracingComplete());
303 EXPECT_EQ(BATTOR_ERROR_UNEXPECTED_MESSAGE, GetStartTracingError()); 303 EXPECT_EQ(BATTOR_ERROR_UNEXPECTED_MESSAGE, GetStartTracingError());
304 } 304 }
305 305
306 TEST_F(BattOrAgentTest, StartTracingFailsIfStartTracingSendFails) { 306 TEST_F(BattOrAgentTest, StartTracingFailsIfStartTracingSendFails) {
307 RunStartTracingTo(BattOrAgentState::RESET_SENT); 307 RunStartTracingTo(BattOrAgentState::RESET_SENT);
308 GetAgent()->OnBytesSent(false); 308 GetAgent()->OnBytesSent(false);
309 GetTaskRunner()->RunUntilIdle(); 309 GetTaskRunner()->RunUntilIdle();
310 310
311 EXPECT_TRUE(IsStartTracingComplete()); 311 EXPECT_TRUE(IsStartTracingComplete());
312 EXPECT_EQ(BATTOR_ERROR_SEND_ERROR, GetStartTracingError()); 312 EXPECT_EQ(BATTOR_ERROR_SEND_ERROR, GetStartTracingError());
313 } 313 }
314 314
315 TEST_F(BattOrAgentTest, StartTracingFailsIfStartTracingAckReadFails) { 315 TEST_F(BattOrAgentTest, StartTracingFailsIfStartTracingAckReadFails) {
316 RunStartTracingTo(BattOrAgentState::START_TRACING_SENT); 316 RunStartTracingTo(BattOrAgentState::START_TRACING_SENT);
317 GetAgent()->OnBytesRead(false, BATTOR_MESSAGE_TYPE_CONTROL_ACK, nullptr); 317 GetAgent()->OnMessageRead(false, BATTOR_MESSAGE_TYPE_CONTROL_ACK, nullptr);
318 GetTaskRunner()->RunUntilIdle(); 318 GetTaskRunner()->RunUntilIdle();
319 319
320 EXPECT_TRUE(IsStartTracingComplete()); 320 EXPECT_TRUE(IsStartTracingComplete());
321 EXPECT_EQ(BATTOR_ERROR_RECEIVE_ERROR, GetStartTracingError()); 321 EXPECT_EQ(BATTOR_ERROR_RECEIVE_ERROR, GetStartTracingError());
322 } 322 }
323 323
324 TEST_F(BattOrAgentTest, StartTracingFailsIfStartTracingWrongAckRead) { 324 TEST_F(BattOrAgentTest, StartTracingFailsIfStartTracingWrongAckRead) {
325 RunStartTracingTo(BattOrAgentState::START_TRACING_SENT); 325 RunStartTracingTo(BattOrAgentState::START_TRACING_SENT);
326 GetAgent()->OnBytesRead(true, BATTOR_MESSAGE_TYPE_CONTROL_ACK, 326 GetAgent()->OnMessageRead(true, BATTOR_MESSAGE_TYPE_CONTROL_ACK,
327 AckToCharVector(kInitAck)); 327 AckToCharVector(kInitAck));
328 GetTaskRunner()->RunUntilIdle(); 328 GetTaskRunner()->RunUntilIdle();
329 329
330 EXPECT_TRUE(IsStartTracingComplete()); 330 EXPECT_TRUE(IsStartTracingComplete());
331 EXPECT_EQ(BATTOR_ERROR_UNEXPECTED_MESSAGE, GetStartTracingError()); 331 EXPECT_EQ(BATTOR_ERROR_UNEXPECTED_MESSAGE, GetStartTracingError());
332 } 332 }
333 333
334 } // namespace battor 334 } // namespace battor
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698