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

Side by Side Diff: remoting/protocol/channel_multiplexer_unittest.cc

Issue 1864213002: Convert //remoting to use std::unique_ptr (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Mac IWYU 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
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 "remoting/protocol/channel_multiplexer.h" 5 #include "remoting/protocol/channel_multiplexer.h"
6 6
7 #include <utility> 7 #include <utility>
8 8
9 #include "base/bind.h" 9 #include "base/bind.h"
10 #include "base/message_loop/message_loop.h" 10 #include "base/message_loop/message_loop.h"
(...skipping 30 matching lines...) Expand all
41 } 41 }
42 42
43 class MockSocketCallback { 43 class MockSocketCallback {
44 public: 44 public:
45 MOCK_METHOD1(OnDone, void(int result)); 45 MOCK_METHOD1(OnDone, void(int result));
46 }; 46 };
47 47
48 class MockConnectCallback { 48 class MockConnectCallback {
49 public: 49 public:
50 MOCK_METHOD1(OnConnectedPtr, void(P2PStreamSocket* socket)); 50 MOCK_METHOD1(OnConnectedPtr, void(P2PStreamSocket* socket));
51 void OnConnected(scoped_ptr<P2PStreamSocket> socket) { 51 void OnConnected(std::unique_ptr<P2PStreamSocket> socket) {
52 OnConnectedPtr(socket.release()); 52 OnConnectedPtr(socket.release());
53 } 53 }
54 }; 54 };
55 55
56 } // namespace 56 } // namespace
57 57
58 class ChannelMultiplexerTest : public testing::Test { 58 class ChannelMultiplexerTest : public testing::Test {
59 public: 59 public:
60 void DeleteAll() { 60 void DeleteAll() {
61 host_socket1_.reset(); 61 host_socket1_.reset();
(...skipping 17 matching lines...) Expand all
79 host_mux_.reset( 79 host_mux_.reset(
80 new ChannelMultiplexer(&host_channel_factory_, kMuxChannelName)); 80 new ChannelMultiplexer(&host_channel_factory_, kMuxChannelName));
81 client_mux_.reset( 81 client_mux_.reset(
82 new ChannelMultiplexer(&client_channel_factory_, kMuxChannelName)); 82 new ChannelMultiplexer(&client_channel_factory_, kMuxChannelName));
83 83
84 // Make writes asynchronous in one direction 84 // Make writes asynchronous in one direction
85 host_channel_factory_.set_async_write(true); 85 host_channel_factory_.set_async_write(true);
86 } 86 }
87 87
88 void CreateChannel(const std::string& name, 88 void CreateChannel(const std::string& name,
89 scoped_ptr<P2PStreamSocket>* host_socket, 89 std::unique_ptr<P2PStreamSocket>* host_socket,
90 scoped_ptr<P2PStreamSocket>* client_socket) { 90 std::unique_ptr<P2PStreamSocket>* client_socket) {
91 int counter = 2; 91 int counter = 2;
92 host_mux_->CreateChannel(name, base::Bind( 92 host_mux_->CreateChannel(name, base::Bind(
93 &ChannelMultiplexerTest::OnChannelConnected, base::Unretained(this), 93 &ChannelMultiplexerTest::OnChannelConnected, base::Unretained(this),
94 host_socket, &counter)); 94 host_socket, &counter));
95 client_mux_->CreateChannel(name, base::Bind( 95 client_mux_->CreateChannel(name, base::Bind(
96 &ChannelMultiplexerTest::OnChannelConnected, base::Unretained(this), 96 &ChannelMultiplexerTest::OnChannelConnected, base::Unretained(this),
97 client_socket, &counter)); 97 client_socket, &counter));
98 98
99 message_loop_.Run(); 99 message_loop_.Run();
100 100
101 EXPECT_TRUE(host_socket->get()); 101 EXPECT_TRUE(host_socket->get());
102 EXPECT_TRUE(client_socket->get()); 102 EXPECT_TRUE(client_socket->get());
103 } 103 }
104 104
105 void OnChannelConnected( 105 void OnChannelConnected(std::unique_ptr<P2PStreamSocket>* storage,
106 scoped_ptr<P2PStreamSocket>* storage, 106 int* counter,
107 int* counter, 107 std::unique_ptr<P2PStreamSocket> socket) {
108 scoped_ptr<P2PStreamSocket> socket) {
109 *storage = std::move(socket); 108 *storage = std::move(socket);
110 --(*counter); 109 --(*counter);
111 EXPECT_GE(*counter, 0); 110 EXPECT_GE(*counter, 0);
112 if (*counter == 0) 111 if (*counter == 0)
113 QuitCurrentThread(); 112 QuitCurrentThread();
114 } 113 }
115 114
116 scoped_refptr<net::IOBufferWithSize> CreateTestBuffer(int size) { 115 scoped_refptr<net::IOBufferWithSize> CreateTestBuffer(int size) {
117 scoped_refptr<net::IOBufferWithSize> result = 116 scoped_refptr<net::IOBufferWithSize> result =
118 new net::IOBufferWithSize(size); 117 new net::IOBufferWithSize(size);
119 for (int i = 0; i< size; ++i) { 118 for (int i = 0; i< size; ++i) {
120 result->data()[i] = rand() % 256; 119 result->data()[i] = rand() % 256;
121 } 120 }
122 return result; 121 return result;
123 } 122 }
124 123
125 base::MessageLoop message_loop_; 124 base::MessageLoop message_loop_;
126 125
127 FakeStreamChannelFactory host_channel_factory_; 126 FakeStreamChannelFactory host_channel_factory_;
128 FakeStreamChannelFactory client_channel_factory_; 127 FakeStreamChannelFactory client_channel_factory_;
129 128
130 scoped_ptr<ChannelMultiplexer> host_mux_; 129 std::unique_ptr<ChannelMultiplexer> host_mux_;
131 scoped_ptr<ChannelMultiplexer> client_mux_; 130 std::unique_ptr<ChannelMultiplexer> client_mux_;
132 131
133 scoped_ptr<P2PStreamSocket> host_socket1_; 132 std::unique_ptr<P2PStreamSocket> host_socket1_;
134 scoped_ptr<P2PStreamSocket> client_socket1_; 133 std::unique_ptr<P2PStreamSocket> client_socket1_;
135 scoped_ptr<P2PStreamSocket> host_socket2_; 134 std::unique_ptr<P2PStreamSocket> host_socket2_;
136 scoped_ptr<P2PStreamSocket> client_socket2_; 135 std::unique_ptr<P2PStreamSocket> client_socket2_;
137 }; 136 };
138 137
139 138
140 TEST_F(ChannelMultiplexerTest, OneChannel) { 139 TEST_F(ChannelMultiplexerTest, OneChannel) {
141 scoped_ptr<P2PStreamSocket> host_socket; 140 std::unique_ptr<P2PStreamSocket> host_socket;
142 scoped_ptr<P2PStreamSocket> client_socket; 141 std::unique_ptr<P2PStreamSocket> client_socket;
143 ASSERT_NO_FATAL_FAILURE( 142 ASSERT_NO_FATAL_FAILURE(
144 CreateChannel(kTestChannelName, &host_socket, &client_socket)); 143 CreateChannel(kTestChannelName, &host_socket, &client_socket));
145 144
146 StreamConnectionTester tester(host_socket.get(), client_socket.get(), 145 StreamConnectionTester tester(host_socket.get(), client_socket.get(),
147 kMessageSize, kMessages); 146 kMessageSize, kMessages);
148 tester.Start(); 147 tester.Start();
149 message_loop_.Run(); 148 message_loop_.Run();
150 tester.CheckResults(); 149 tester.CheckResults();
151 } 150 }
152 151
153 TEST_F(ChannelMultiplexerTest, TwoChannels) { 152 TEST_F(ChannelMultiplexerTest, TwoChannels) {
154 scoped_ptr<P2PStreamSocket> host_socket1_; 153 std::unique_ptr<P2PStreamSocket> host_socket1_;
155 scoped_ptr<P2PStreamSocket> client_socket1_; 154 std::unique_ptr<P2PStreamSocket> client_socket1_;
156 ASSERT_NO_FATAL_FAILURE( 155 ASSERT_NO_FATAL_FAILURE(
157 CreateChannel(kTestChannelName, &host_socket1_, &client_socket1_)); 156 CreateChannel(kTestChannelName, &host_socket1_, &client_socket1_));
158 157
159 scoped_ptr<P2PStreamSocket> host_socket2_; 158 std::unique_ptr<P2PStreamSocket> host_socket2_;
160 scoped_ptr<P2PStreamSocket> client_socket2_; 159 std::unique_ptr<P2PStreamSocket> client_socket2_;
161 ASSERT_NO_FATAL_FAILURE( 160 ASSERT_NO_FATAL_FAILURE(
162 CreateChannel(kTestChannelName2, &host_socket2_, &client_socket2_)); 161 CreateChannel(kTestChannelName2, &host_socket2_, &client_socket2_));
163 162
164 StreamConnectionTester tester1(host_socket1_.get(), client_socket1_.get(), 163 StreamConnectionTester tester1(host_socket1_.get(), client_socket1_.get(),
165 kMessageSize, kMessages); 164 kMessageSize, kMessages);
166 StreamConnectionTester tester2(host_socket2_.get(), client_socket2_.get(), 165 StreamConnectionTester tester2(host_socket2_.get(), client_socket2_.get(),
167 kMessageSize, kMessages); 166 kMessageSize, kMessages);
168 tester1.Start(); 167 tester1.Start();
169 tester2.Start(); 168 tester2.Start();
170 while (!tester1.done() || !tester2.done()) { 169 while (!tester1.done() || !tester2.done()) {
171 message_loop_.Run(); 170 message_loop_.Run();
172 } 171 }
173 tester1.CheckResults(); 172 tester1.CheckResults();
174 tester2.CheckResults(); 173 tester2.CheckResults();
175 } 174 }
176 175
177 // Four channels, two in each direction 176 // Four channels, two in each direction
178 TEST_F(ChannelMultiplexerTest, FourChannels) { 177 TEST_F(ChannelMultiplexerTest, FourChannels) {
179 scoped_ptr<P2PStreamSocket> host_socket1_; 178 std::unique_ptr<P2PStreamSocket> host_socket1_;
180 scoped_ptr<P2PStreamSocket> client_socket1_; 179 std::unique_ptr<P2PStreamSocket> client_socket1_;
181 ASSERT_NO_FATAL_FAILURE( 180 ASSERT_NO_FATAL_FAILURE(
182 CreateChannel(kTestChannelName, &host_socket1_, &client_socket1_)); 181 CreateChannel(kTestChannelName, &host_socket1_, &client_socket1_));
183 182
184 scoped_ptr<P2PStreamSocket> host_socket2_; 183 std::unique_ptr<P2PStreamSocket> host_socket2_;
185 scoped_ptr<P2PStreamSocket> client_socket2_; 184 std::unique_ptr<P2PStreamSocket> client_socket2_;
186 ASSERT_NO_FATAL_FAILURE( 185 ASSERT_NO_FATAL_FAILURE(
187 CreateChannel(kTestChannelName2, &host_socket2_, &client_socket2_)); 186 CreateChannel(kTestChannelName2, &host_socket2_, &client_socket2_));
188 187
189 scoped_ptr<P2PStreamSocket> host_socket3; 188 std::unique_ptr<P2PStreamSocket> host_socket3;
190 scoped_ptr<P2PStreamSocket> client_socket3; 189 std::unique_ptr<P2PStreamSocket> client_socket3;
191 ASSERT_NO_FATAL_FAILURE( 190 ASSERT_NO_FATAL_FAILURE(
192 CreateChannel("test3", &host_socket3, &client_socket3)); 191 CreateChannel("test3", &host_socket3, &client_socket3));
193 192
194 scoped_ptr<P2PStreamSocket> host_socket4; 193 std::unique_ptr<P2PStreamSocket> host_socket4;
195 scoped_ptr<P2PStreamSocket> client_socket4; 194 std::unique_ptr<P2PStreamSocket> client_socket4;
196 ASSERT_NO_FATAL_FAILURE( 195 ASSERT_NO_FATAL_FAILURE(
197 CreateChannel("ch4", &host_socket4, &client_socket4)); 196 CreateChannel("ch4", &host_socket4, &client_socket4));
198 197
199 StreamConnectionTester tester1(host_socket1_.get(), client_socket1_.get(), 198 StreamConnectionTester tester1(host_socket1_.get(), client_socket1_.get(),
200 kMessageSize, kMessages); 199 kMessageSize, kMessages);
201 StreamConnectionTester tester2(host_socket2_.get(), client_socket2_.get(), 200 StreamConnectionTester tester2(host_socket2_.get(), client_socket2_.get(),
202 kMessageSize, kMessages); 201 kMessageSize, kMessages);
203 StreamConnectionTester tester3(client_socket3.get(), host_socket3.get(), 202 StreamConnectionTester tester3(client_socket3.get(), host_socket3.get(),
204 kMessageSize, kMessages); 203 kMessageSize, kMessages);
205 StreamConnectionTester tester4(client_socket4.get(), host_socket4.get(), 204 StreamConnectionTester tester4(client_socket4.get(), host_socket4.get(),
206 kMessageSize, kMessages); 205 kMessageSize, kMessages);
207 tester1.Start(); 206 tester1.Start();
208 tester2.Start(); 207 tester2.Start();
209 tester3.Start(); 208 tester3.Start();
210 tester4.Start(); 209 tester4.Start();
211 while (!tester1.done() || !tester2.done() || 210 while (!tester1.done() || !tester2.done() ||
212 !tester3.done() || !tester4.done()) { 211 !tester3.done() || !tester4.done()) {
213 message_loop_.Run(); 212 message_loop_.Run();
214 } 213 }
215 tester1.CheckResults(); 214 tester1.CheckResults();
216 tester2.CheckResults(); 215 tester2.CheckResults();
217 tester3.CheckResults(); 216 tester3.CheckResults();
218 tester4.CheckResults(); 217 tester4.CheckResults();
219 } 218 }
220 219
221 TEST_F(ChannelMultiplexerTest, WriteFailSync) { 220 TEST_F(ChannelMultiplexerTest, WriteFailSync) {
222 scoped_ptr<P2PStreamSocket> host_socket1_; 221 std::unique_ptr<P2PStreamSocket> host_socket1_;
223 scoped_ptr<P2PStreamSocket> client_socket1_; 222 std::unique_ptr<P2PStreamSocket> client_socket1_;
224 ASSERT_NO_FATAL_FAILURE( 223 ASSERT_NO_FATAL_FAILURE(
225 CreateChannel(kTestChannelName, &host_socket1_, &client_socket1_)); 224 CreateChannel(kTestChannelName, &host_socket1_, &client_socket1_));
226 225
227 scoped_ptr<P2PStreamSocket> host_socket2_; 226 std::unique_ptr<P2PStreamSocket> host_socket2_;
228 scoped_ptr<P2PStreamSocket> client_socket2_; 227 std::unique_ptr<P2PStreamSocket> client_socket2_;
229 ASSERT_NO_FATAL_FAILURE( 228 ASSERT_NO_FATAL_FAILURE(
230 CreateChannel(kTestChannelName2, &host_socket2_, &client_socket2_)); 229 CreateChannel(kTestChannelName2, &host_socket2_, &client_socket2_));
231 230
232 FakeStreamSocket* socket = 231 FakeStreamSocket* socket =
233 host_channel_factory_.GetFakeChannel(kMuxChannelName); 232 host_channel_factory_.GetFakeChannel(kMuxChannelName);
234 socket->set_next_write_error(net::ERR_FAILED); 233 socket->set_next_write_error(net::ERR_FAILED);
235 socket->set_async_write(false); 234 socket->set_async_write(false);
236 235
237 scoped_refptr<net::IOBufferWithSize> buf = CreateTestBuffer(100); 236 scoped_refptr<net::IOBufferWithSize> buf = CreateTestBuffer(100);
238 237
(...skipping 106 matching lines...) Expand 10 before | Expand all | Expand 10 after
345 .WillOnce(InvokeWithoutArgs( 344 .WillOnce(InvokeWithoutArgs(
346 this, &ChannelMultiplexerTest::DeleteAfterSessionFail)); 345 this, &ChannelMultiplexerTest::DeleteAfterSessionFail));
347 EXPECT_CALL(cb2, OnConnectedPtr(_)) 346 EXPECT_CALL(cb2, OnConnectedPtr(_))
348 .Times(0); 347 .Times(0);
349 348
350 base::RunLoop().RunUntilIdle(); 349 base::RunLoop().RunUntilIdle();
351 } 350 }
352 351
353 } // namespace protocol 352 } // namespace protocol
354 } // namespace remoting 353 } // namespace remoting
OLDNEW
« no previous file with comments | « remoting/protocol/channel_multiplexer.cc ('k') | remoting/protocol/channel_socket_adapter_unittest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698