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

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

Issue 1545743002: Move ownership of Transport out of Session. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@move_not_pass_client
Patch Set: Created 5 years 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 "remoting/protocol/webrtc_transport.h" 5 #include "remoting/protocol/webrtc_transport.h"
6 6
7 #include "base/message_loop/message_loop.h" 7 #include "base/message_loop/message_loop.h"
8 #include "base/run_loop.h" 8 #include "base/run_loop.h"
9 #include "jingle/glue/thread_wrapper.h" 9 #include "jingle/glue/thread_wrapper.h"
10 #include "net/base/io_buffer.h" 10 #include "net/base/io_buffer.h"
11 #include "net/url_request/url_request_context_getter.h" 11 #include "net/url_request/url_request_context_getter.h"
12 #include "remoting/protocol/chromium_port_allocator.h" 12 #include "remoting/protocol/chromium_port_allocator.h"
13 #include "remoting/protocol/connection_tester.h" 13 #include "remoting/protocol/connection_tester.h"
14 #include "remoting/protocol/fake_authenticator.h" 14 #include "remoting/protocol/fake_authenticator.h"
15 #include "remoting/protocol/network_settings.h" 15 #include "remoting/protocol/network_settings.h"
16 #include "remoting/protocol/p2p_stream_socket.h" 16 #include "remoting/protocol/p2p_stream_socket.h"
17 #include "remoting/protocol/transport_context.h" 17 #include "remoting/protocol/transport_context.h"
18 #include "remoting/signaling/fake_signal_strategy.h" 18 #include "remoting/signaling/fake_signal_strategy.h"
19 #include "testing/gtest/include/gtest/gtest.h" 19 #include "testing/gtest/include/gtest/gtest.h"
20 #include "third_party/webrtc/libjingle/xmllite/xmlelement.h" 20 #include "third_party/webrtc/libjingle/xmllite/xmlelement.h"
21 21
22 namespace remoting { 22 namespace remoting {
23 namespace protocol { 23 namespace protocol {
24 24
25 namespace { 25 namespace {
26 26
27 const char kTestJid[] = "client@gmail.com/321";
28 const char kChannelName[] = "test_channel"; 27 const char kChannelName[] = "test_channel";
29 28
30 class TestTransportEventHandler : public Transport::EventHandler { 29 class TestTransportEventHandler : public WebrtcTransport::EventHandler {
31 public: 30 public:
32 typedef base::Callback<void(scoped_ptr<buzz::XmlElement> message)>
33 TransportInfoCallback;
34 typedef base::Callback<void(ErrorCode error)> ErrorCallback; 31 typedef base::Callback<void(ErrorCode error)> ErrorCallback;
35 32
36 TestTransportEventHandler() {} 33 TestTransportEventHandler() {}
37 ~TestTransportEventHandler() {} 34 ~TestTransportEventHandler() {}
38 35
39 // Both callback must be set before the test handler is passed to a Transport 36 // Both callbacks must be set before the test handler is passed to a Transport
40 // object. 37 // object.
41 void set_transport_info_callback(const TransportInfoCallback& callback) {
42 transport_info_callback_ = callback;
43 }
44 void set_connected_callback(const base::Closure& callback) { 38 void set_connected_callback(const base::Closure& callback) {
45 connected_callback_ = callback; 39 connected_callback_ = callback;
46 } 40 }
47 void set_error_callback(const ErrorCallback& callback) { 41 void set_error_callback(const ErrorCallback& callback) {
48 error_callback_ = callback; 42 error_callback_ = callback;
49 } 43 }
50 44
51 // Transport::EventHandler interface. 45 // WebrtcTransport::EventHandler interface.
52 void OnOutgoingTransportInfo(scoped_ptr<buzz::XmlElement> message) override { 46 void OnWebrtcTransportConnected() override {
53 transport_info_callback_.Run(std::move(message));
54 }
55 void OnTransportRouteChange(const std::string& channel_name,
56 const TransportRoute& route) override {}
57 void OnTransportConnected() override {
58 connected_callback_.Run(); 47 connected_callback_.Run();
59 } 48 }
60 void OnTransportError(ErrorCode error) override { 49 void OnWebrtcTransportError(ErrorCode error) override {
61 error_callback_.Run(error); 50 error_callback_.Run(error);
62 } 51 }
63 52
64 private: 53 private:
65 TransportInfoCallback transport_info_callback_;
66 base::Closure connected_callback_; 54 base::Closure connected_callback_;
67 ErrorCallback error_callback_; 55 ErrorCallback error_callback_;
68 56
69 DISALLOW_COPY_AND_ASSIGN(TestTransportEventHandler); 57 DISALLOW_COPY_AND_ASSIGN(TestTransportEventHandler);
70 }; 58 };
71 59
72 } // namespace 60 } // namespace
73 61
74 class WebrtcTransportTest : public testing::Test { 62 class WebrtcTransportTest : public testing::Test {
75 public: 63 public:
76 WebrtcTransportTest() { 64 WebrtcTransportTest() {
77 jingle_glue::JingleThreadWrapper::EnsureForCurrentMessageLoop(); 65 jingle_glue::JingleThreadWrapper::EnsureForCurrentMessageLoop();
78 network_settings_ = 66 network_settings_ =
79 NetworkSettings(NetworkSettings::NAT_TRAVERSAL_OUTGOING); 67 NetworkSettings(NetworkSettings::NAT_TRAVERSAL_OUTGOING);
80 } 68 }
81 69
82 void ProcessTransportInfo(scoped_ptr<Transport>* target_transport, 70 void ProcessTransportInfo(scoped_ptr<WebrtcTransport>* target_transport,
83 scoped_ptr<buzz::XmlElement> transport_info) { 71 scoped_ptr<buzz::XmlElement> transport_info) {
84 ASSERT_TRUE(target_transport); 72 ASSERT_TRUE(target_transport);
85 EXPECT_TRUE((*target_transport) 73 EXPECT_TRUE((*target_transport)
86 ->ProcessTransportInfo(transport_info.get())); 74 ->ProcessTransportInfo(transport_info.get()));
87 } 75 }
88 76
89 protected: 77 protected:
90 void InitializeConnection() { 78 void InitializeConnection() {
91 signal_strategy_.reset(new FakeSignalStrategy(kTestJid)); 79 host_transport_.reset(
92 80 new WebrtcTransport(jingle_glue::JingleThreadWrapper::current(),
93 host_transport_factory_.reset(new WebrtcTransportFactory( 81 TransportContext::ForTests(TransportRole::SERVER),
94 jingle_glue::JingleThreadWrapper::current(), 82 &host_event_handler_));
95 new TransportContext(
96 signal_strategy_.get(),
97 make_scoped_ptr(new ChromiumPortAllocatorFactory(nullptr)),
98 network_settings_, TransportRole::SERVER)));
99 host_transport_ = host_transport_factory_->CreateTransport();
100 host_authenticator_.reset(new FakeAuthenticator( 83 host_authenticator_.reset(new FakeAuthenticator(
101 FakeAuthenticator::HOST, 0, FakeAuthenticator::ACCEPT, false)); 84 FakeAuthenticator::HOST, 0, FakeAuthenticator::ACCEPT, false));
102 85
103 client_transport_factory_.reset(new WebrtcTransportFactory( 86 client_transport_.reset(
104 jingle_glue::JingleThreadWrapper::current(), 87 new WebrtcTransport(jingle_glue::JingleThreadWrapper::current(),
105 new TransportContext( 88 TransportContext::ForTests(TransportRole::CLIENT),
106 signal_strategy_.get(), 89 &client_event_handler_));
107 make_scoped_ptr(new ChromiumPortAllocatorFactory(nullptr)), 90 client_authenticator_.reset(new FakeAuthenticator(
108 network_settings_, TransportRole::CLIENT)));
109 client_transport_ = client_transport_factory_->CreateTransport();
110 host_authenticator_.reset(new FakeAuthenticator(
111 FakeAuthenticator::CLIENT, 0, FakeAuthenticator::ACCEPT, false)); 91 FakeAuthenticator::CLIENT, 0, FakeAuthenticator::ACCEPT, false));
112
113 // Connect signaling between the two WebrtcTransport objects.
114 host_event_handler_.set_transport_info_callback(
115 base::Bind(&WebrtcTransportTest::ProcessTransportInfo,
116 base::Unretained(this), &client_transport_));
117 client_event_handler_.set_transport_info_callback(
118 base::Bind(&WebrtcTransportTest::ProcessTransportInfo,
119 base::Unretained(this), &host_transport_));
120 } 92 }
121 93
122 void StartConnection() { 94 void StartConnection() {
123 host_event_handler_.set_connected_callback(base::Bind(&base::DoNothing)); 95 host_event_handler_.set_connected_callback(base::Bind(&base::DoNothing));
124 client_event_handler_.set_connected_callback(base::Bind(&base::DoNothing)); 96 client_event_handler_.set_connected_callback(base::Bind(&base::DoNothing));
125 97
126 host_event_handler_.set_error_callback(base::Bind( 98 host_event_handler_.set_error_callback(base::Bind(
127 &WebrtcTransportTest::OnSessionError, base::Unretained(this))); 99 &WebrtcTransportTest::OnSessionError, base::Unretained(this)));
128 client_event_handler_.set_error_callback(base::Bind( 100 client_event_handler_.set_error_callback(base::Bind(
129 &WebrtcTransportTest::OnSessionError, base::Unretained(this))); 101 &WebrtcTransportTest::OnSessionError, base::Unretained(this)));
130 102
131 host_transport_->Start(&host_event_handler_, host_authenticator_.get()); 103 // Start both transports.
132 client_transport_->Start(&client_event_handler_, 104 host_transport_->Start(
133 client_authenticator_.get()); 105 host_authenticator_.get(),
106 base::Bind(&WebrtcTransportTest::ProcessTransportInfo,
107 base::Unretained(this), &client_transport_));
108 client_transport_->Start(
109 client_authenticator_.get(),
110 base::Bind(&WebrtcTransportTest::ProcessTransportInfo,
111 base::Unretained(this), &host_transport_));
134 } 112 }
135 113
136 void WaitUntilConnected() { 114 void WaitUntilConnected() {
137 int counter = 2; 115 int counter = 2;
138 host_event_handler_.set_connected_callback( 116 host_event_handler_.set_connected_callback(
139 base::Bind(&WebrtcTransportTest::QuitRunLoopOnCounter, 117 base::Bind(&WebrtcTransportTest::QuitRunLoopOnCounter,
140 base::Unretained(this), &counter)); 118 base::Unretained(this), &counter));
141 client_event_handler_.set_connected_callback( 119 client_event_handler_.set_connected_callback(
142 base::Bind(&WebrtcTransportTest::QuitRunLoopOnCounter, 120 base::Bind(&WebrtcTransportTest::QuitRunLoopOnCounter,
143 base::Unretained(this), &counter)); 121 base::Unretained(this), &counter));
(...skipping 35 matching lines...) Expand 10 before | Expand all | Expand 10 after
179 if (*counter == 0) 157 if (*counter == 0)
180 run_loop_->Quit(); 158 run_loop_->Quit();
181 } 159 }
182 160
183 protected: 161 protected:
184 base::MessageLoopForIO message_loop_; 162 base::MessageLoopForIO message_loop_;
185 scoped_ptr<base::RunLoop> run_loop_; 163 scoped_ptr<base::RunLoop> run_loop_;
186 164
187 NetworkSettings network_settings_; 165 NetworkSettings network_settings_;
188 166
189 scoped_ptr< FakeSignalStrategy> signal_strategy_; 167 scoped_ptr<WebrtcTransport> host_transport_;
190
191 scoped_ptr<WebrtcTransportFactory> host_transport_factory_;
192 scoped_ptr<Transport> host_transport_;
193 TestTransportEventHandler host_event_handler_; 168 TestTransportEventHandler host_event_handler_;
194 scoped_ptr<FakeAuthenticator> host_authenticator_; 169 scoped_ptr<FakeAuthenticator> host_authenticator_;
195 170
196 scoped_ptr<WebrtcTransportFactory> client_transport_factory_; 171 scoped_ptr<WebrtcTransport> client_transport_;
197 scoped_ptr<Transport> client_transport_;
198 TestTransportEventHandler client_event_handler_; 172 TestTransportEventHandler client_event_handler_;
199 scoped_ptr<FakeAuthenticator> client_authenticator_; 173 scoped_ptr<FakeAuthenticator> client_authenticator_;
200 174
201 scoped_ptr<P2PStreamSocket> client_socket_; 175 scoped_ptr<P2PStreamSocket> client_socket_;
202 scoped_ptr<P2PStreamSocket> host_socket_; 176 scoped_ptr<P2PStreamSocket> host_socket_;
203 177
204 ErrorCode error_ = OK; 178 ErrorCode error_ = OK;
205 }; 179 };
206 180
207 TEST_F(WebrtcTransportTest, Connects) { 181 TEST_F(WebrtcTransportTest, Connects) {
(...skipping 14 matching lines...) Expand all
222 const int kMessages = 100; 196 const int kMessages = 100;
223 StreamConnectionTester tester(host_socket_.get(), client_socket_.get(), 197 StreamConnectionTester tester(host_socket_.get(), client_socket_.get(),
224 kMessageSize, kMessages); 198 kMessageSize, kMessages);
225 tester.Start(); 199 tester.Start();
226 message_loop_.Run(); 200 message_loop_.Run();
227 tester.CheckResults(); 201 tester.CheckResults();
228 } 202 }
229 203
230 } // namespace protocol 204 } // namespace protocol
231 } // namespace remoting 205 } // namespace remoting
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698