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

Side by Side Diff: blimp/net/blimp_message_checkpointer_unittest.cc

Issue 1933053003: Used oneof in blimp_message.proto (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Added oneof to tab_control.proto and more cleanup Created 4 years, 7 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 "blimp/net/blimp_message_checkpointer.h" 5 #include "blimp/net/blimp_message_checkpointer.h"
6 6
7 #include "base/memory/ptr_util.h" 7 #include "base/memory/ptr_util.h"
8 #include "base/memory/ref_counted.h" 8 #include "base/memory/ref_counted.h"
9 #include "base/test/test_mock_time_task_runner.h" 9 #include "base/test/test_mock_time_task_runner.h"
10 #include "base/threading/thread_task_runner_handle.h" 10 #include "base/threading/thread_task_runner_handle.h"
(...skipping 14 matching lines...) Expand all
25 class MockCheckpointObserver : public BlimpMessageCheckpointObserver { 25 class MockCheckpointObserver : public BlimpMessageCheckpointObserver {
26 public: 26 public:
27 MockCheckpointObserver() {} 27 MockCheckpointObserver() {}
28 ~MockCheckpointObserver() override {} 28 ~MockCheckpointObserver() override {}
29 29
30 MOCK_METHOD1(OnMessageCheckpoint, void(int64_t)); 30 MOCK_METHOD1(OnMessageCheckpoint, void(int64_t));
31 }; 31 };
32 32
33 } // namespace 33 } // namespace
34 34
35 static std::unique_ptr<BlimpMessage> CreateExpectedAckMessage(int64_t id) {
36 std::unique_ptr<BlimpMessage> message = base::WrapUnique(new BlimpMessage);
37 message->set_type(BlimpMessage::PROTOCOL_CONTROL);
38 ProtocolControlMessage* protocol_control =
39 message->mutable_protocol_control();
40 protocol_control->set_type(ProtocolControlMessage::CHECKPOINT_ACK);
41 CheckpointAckMessage* checkpoint_ack =
42 protocol_control->mutable_checkpoint_ack();
43 checkpoint_ack->set_checkpoint_id(id);
44 return message;
45 }
46
47 class BlimpMessageCheckpointerTest : public testing::Test { 35 class BlimpMessageCheckpointerTest : public testing::Test {
48 public: 36 public:
49 BlimpMessageCheckpointerTest() 37 BlimpMessageCheckpointerTest()
50 : runner_(new base::TestMockTimeTaskRunner), runner_handle_(runner_) {} 38 : runner_(new base::TestMockTimeTaskRunner), runner_handle_(runner_) {}
51 39
52 ~BlimpMessageCheckpointerTest() override {} 40 ~BlimpMessageCheckpointerTest() override {}
53 41
54 int64_t SimulateIncomingMessage() { 42 int64_t SimulateIncomingMessage() {
55 std::unique_ptr<BlimpMessage> message(new BlimpMessage); 43 InputMessage* input = nullptr;
44 std::unique_ptr<BlimpMessage> message(CreateBlimpMessage(&input));
56 message->set_message_id(++message_id_); 45 message->set_message_id(++message_id_);
57 message->set_type(BlimpMessage::INPUT);
58 checkpointer_->ProcessMessage( 46 checkpointer_->ProcessMessage(
59 std::move(message), 47 std::move(message),
60 base::Bind(&BlimpMessageCheckpointerTest::IncomingCompletionCallback, 48 base::Bind(&BlimpMessageCheckpointerTest::IncomingCompletionCallback,
61 base::Unretained(this))); 49 base::Unretained(this)));
62 return message_id_; 50 return message_id_;
63 } 51 }
64 52
65 void SetUp() override { 53 void SetUp() override {
66 checkpointer_ = base::WrapUnique(new BlimpMessageCheckpointer( 54 checkpointer_ = base::WrapUnique(new BlimpMessageCheckpointer(
67 &incoming_processor_, &outgoing_processor_, &checkpoint_observer_)); 55 &incoming_processor_, &outgoing_processor_, &checkpoint_observer_));
(...skipping 38 matching lines...) Expand 10 before | Expand all | Expand 10 after
106 94
107 // Delete the checkpointer, then simulate completion of processing. 95 // Delete the checkpointer, then simulate completion of processing.
108 // TestCompletionCallback should not fire, so no expectations. 96 // TestCompletionCallback should not fire, so no expectations.
109 checkpointer_ = nullptr; 97 checkpointer_ = nullptr;
110 captured_cb_.Run(net::OK); 98 captured_cb_.Run(net::OK);
111 } 99 }
112 100
113 TEST_F(BlimpMessageCheckpointerTest, SingleMessageAck) { 101 TEST_F(BlimpMessageCheckpointerTest, SingleMessageAck) {
114 EXPECT_CALL(incoming_processor_, MockableProcessMessage(_, _)) 102 EXPECT_CALL(incoming_processor_, MockableProcessMessage(_, _))
115 .WillOnce(SaveArg<1>(&captured_cb_)); 103 .WillOnce(SaveArg<1>(&captured_cb_));
116 std::unique_ptr<BlimpMessage> expected_ack = CreateExpectedAckMessage(1); 104 std::unique_ptr<BlimpMessage> expected_ack = CreateCheckpointAckMessage(1);
117 EXPECT_CALL(outgoing_processor_, 105 EXPECT_CALL(outgoing_processor_,
118 MockableProcessMessage(EqualsProto(*expected_ack), _)); 106 MockableProcessMessage(EqualsProto(*expected_ack), _));
119 EXPECT_CALL(*this, IncomingCompletionCallback(net::OK)); 107 EXPECT_CALL(*this, IncomingCompletionCallback(net::OK));
120 108
121 // Simulate an incoming message. 109 // Simulate an incoming message.
122 SimulateIncomingMessage(); 110 SimulateIncomingMessage();
123 111
124 // Fast-forward time to verify that an ACK message is sent. 112 // Fast-forward time to verify that an ACK message is sent.
125 captured_cb_.Run(net::OK); 113 captured_cb_.Run(net::OK);
126 runner_->FastForwardBy(base::TimeDelta::FromSeconds(2)); 114 runner_->FastForwardBy(base::TimeDelta::FromSeconds(2));
127 } 115 }
128 116
129 TEST_F(BlimpMessageCheckpointerTest, BatchMessageAck) { 117 TEST_F(BlimpMessageCheckpointerTest, BatchMessageAck) {
130 EXPECT_CALL(incoming_processor_, MockableProcessMessage(_, _)) 118 EXPECT_CALL(incoming_processor_, MockableProcessMessage(_, _))
131 .Times(10) 119 .Times(10)
132 .WillRepeatedly(SaveArg<1>(&captured_cb_)); 120 .WillRepeatedly(SaveArg<1>(&captured_cb_));
133 std::unique_ptr<BlimpMessage> expected_ack = CreateExpectedAckMessage(10); 121 std::unique_ptr<BlimpMessage> expected_ack = CreateCheckpointAckMessage(10);
134 EXPECT_CALL(outgoing_processor_, 122 EXPECT_CALL(outgoing_processor_,
135 MockableProcessMessage(EqualsProto(*expected_ack), _)); 123 MockableProcessMessage(EqualsProto(*expected_ack), _));
136 EXPECT_CALL(*this, IncomingCompletionCallback(net::OK)).Times(10); 124 EXPECT_CALL(*this, IncomingCompletionCallback(net::OK)).Times(10);
137 125
138 // Simulate ten incoming messages. 126 // Simulate ten incoming messages.
139 for (int i = 0; i < 10; ++i) { 127 for (int i = 0; i < 10; ++i) {
140 SimulateIncomingMessage(); 128 SimulateIncomingMessage();
141 captured_cb_.Run(net::OK); 129 captured_cb_.Run(net::OK);
142 } 130 }
143 131
144 // Fast-forward time to verify that only a single ACK message is sent. 132 // Fast-forward time to verify that only a single ACK message is sent.
145 runner_->FastForwardBy(base::TimeDelta::FromSeconds(2)); 133 runner_->FastForwardBy(base::TimeDelta::FromSeconds(2));
146 } 134 }
147 135
148 TEST_F(BlimpMessageCheckpointerTest, MultipleAcks) { 136 TEST_F(BlimpMessageCheckpointerTest, MultipleAcks) {
149 EXPECT_CALL(incoming_processor_, MockableProcessMessage(_, _)) 137 EXPECT_CALL(incoming_processor_, MockableProcessMessage(_, _))
150 .Times(2) 138 .Times(2)
151 .WillRepeatedly(SaveArg<1>(&captured_cb_)); 139 .WillRepeatedly(SaveArg<1>(&captured_cb_));
152 std::unique_ptr<BlimpMessage> expected_ack1 = CreateExpectedAckMessage(1); 140 std::unique_ptr<BlimpMessage> expected_ack1 = CreateCheckpointAckMessage(1);
153 EXPECT_CALL(outgoing_processor_, 141 EXPECT_CALL(outgoing_processor_,
154 MockableProcessMessage(EqualsProto(*expected_ack1), _)); 142 MockableProcessMessage(EqualsProto(*expected_ack1), _));
155 std::unique_ptr<BlimpMessage> expected_ack2 = CreateExpectedAckMessage(2); 143 std::unique_ptr<BlimpMessage> expected_ack2 = CreateCheckpointAckMessage(2);
156 EXPECT_CALL(outgoing_processor_, 144 EXPECT_CALL(outgoing_processor_,
157 MockableProcessMessage(EqualsProto(*expected_ack2), _)); 145 MockableProcessMessage(EqualsProto(*expected_ack2), _));
158 EXPECT_CALL(*this, IncomingCompletionCallback(net::OK)).Times(2); 146 EXPECT_CALL(*this, IncomingCompletionCallback(net::OK)).Times(2);
159 147
160 // Simulate an incoming messages and fast-forward to get the ACK. 148 // Simulate an incoming messages and fast-forward to get the ACK.
161 SimulateIncomingMessage(); 149 SimulateIncomingMessage();
162 captured_cb_.Run(net::OK); 150 captured_cb_.Run(net::OK);
163 runner_->FastForwardBy(base::TimeDelta::FromSeconds(2)); 151 runner_->FastForwardBy(base::TimeDelta::FromSeconds(2));
164 152
165 // And do it again to verify we get a fresh ACK. 153 // And do it again to verify we get a fresh ACK.
166 SimulateIncomingMessage(); 154 SimulateIncomingMessage();
167 captured_cb_.Run(net::OK); 155 captured_cb_.Run(net::OK);
168 runner_->FastForwardBy(base::TimeDelta::FromSeconds(2)); 156 runner_->FastForwardBy(base::TimeDelta::FromSeconds(2));
169 } 157 }
170 158
171 TEST_F(BlimpMessageCheckpointerTest, IncomingAckMessage) { 159 TEST_F(BlimpMessageCheckpointerTest, IncomingAckMessage) {
172 EXPECT_CALL(*this, IncomingCompletionCallback(net::OK)); 160 EXPECT_CALL(*this, IncomingCompletionCallback(net::OK));
173 EXPECT_CALL(checkpoint_observer_, OnMessageCheckpoint(10)); 161 EXPECT_CALL(checkpoint_observer_, OnMessageCheckpoint(10));
174 162
175 // Simulate an incoming message. 163 // Simulate an incoming message.
176 std::unique_ptr<BlimpMessage> ack_message = CreateCheckpointAckMessage(10); 164 std::unique_ptr<BlimpMessage> ack_message = CreateCheckpointAckMessage(10);
177 checkpointer_->ProcessMessage( 165 checkpointer_->ProcessMessage(
178 std::move(ack_message), 166 std::move(ack_message),
179 base::Bind(&BlimpMessageCheckpointerTest::IncomingCompletionCallback, 167 base::Bind(&BlimpMessageCheckpointerTest::IncomingCompletionCallback,
180 base::Unretained(this))); 168 base::Unretained(this)));
181 } 169 }
182 170
183 } // namespace blimp 171 } // namespace blimp
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698