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

Unified Diff: remoting/protocol/jingle_session_unittest.cc

Issue 2417913002: Process incoming IQs in the same order that they were sent. (Closed)
Patch Set: Reviewer's feedback Created 4 years, 2 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 side-by-side diff with in-line comments
Download patch
Index: remoting/protocol/jingle_session_unittest.cc
diff --git a/remoting/protocol/jingle_session_unittest.cc b/remoting/protocol/jingle_session_unittest.cc
index d8e5fa0570e95ed1bf914083d40abc62ae41fc5c..2e8f5432f3d1432cf1081a37753d31726c184297 100644
--- a/remoting/protocol/jingle_session_unittest.cc
+++ b/remoting/protocol/jingle_session_unittest.cc
@@ -10,6 +10,7 @@
#include "base/message_loop/message_loop.h"
#include "base/run_loop.h"
#include "base/test/test_timeouts.h"
+#include "base/threading/thread_task_runner_handle.h"
#include "base/time/time.h"
#include "net/socket/socket.h"
#include "net/socket/stream_socket.h"
@@ -27,6 +28,7 @@
#include "remoting/signaling/fake_signal_strategy.h"
#include "testing/gmock/include/gmock/gmock.h"
#include "testing/gtest/include/gtest/gtest.h"
+#include "third_party/webrtc/libjingle/xmpp/constants.h"
using testing::_;
using testing::AtLeast;
@@ -46,8 +48,8 @@ namespace protocol {
namespace {
-const char kHostJid[] = "host1@gmail.com/123";
-const char kClientJid[] = "host2@gmail.com/321";
+const char kHostJid[] = "host@gmail.com/123";
+const char kClientJid[] = "client@gmail.com/321";
class MockSessionManagerListener {
public:
@@ -65,12 +67,34 @@ class MockSessionEventHandler : public Session::EventHandler {
class MockTransport : public Transport {
Sergey Ulanov 2016/10/19 21:23:39 Maybe rename this to FakeTransport and stop using
kelvinp 2016/10/21 00:26:03 Done.
public:
- MOCK_METHOD2(Start,
+ void Start(Authenticator* authenticator,
+ SendTransportInfoCallback send_transport_info_callback) {
+ StartInternal(authenticator, send_transport_info_callback);
+ auto task_runner = base::ThreadTaskRunnerHandle::Get();
+ task_runner->PostTask(FROM_HERE,
+ base::Bind(send_transport_info_callback,
+ base::Passed(CreateTransportInfo("1"))));
Sergey Ulanov 2016/10/19 21:23:39 I think it's better to move this inside the test i
kelvinp 2016/10/21 00:26:03 Done.
+ }
+
+ MOCK_METHOD2(StartInternal,
void(Authenticator* authenticator,
SendTransportInfoCallback send_transport_info_callback));
MOCK_METHOD1(ProcessTransportInfo, bool(buzz::XmlElement* transport_info));
+
+ private:
+ std::unique_ptr<buzz::XmlElement> CreateTransportInfo(std::string id) {
Sergey Ulanov 2016/10/19 21:23:39 const reference for the parameter.
kelvinp 2016/10/21 00:26:03 Done.
+ std::unique_ptr<buzz::XmlElement> result(
+ buzz::XmlElement::ForStr("<transport xmlns='google:remoting:ice'/>"));
+ result->AddAttr(buzz::QN_ID, id);
+ return result;
+ }
};
+MATCHER_P(WithId, expected, "") {
+ std::string actual = arg->Attr(buzz::QN_ID);
+ return actual == expected;
+}
+
} // namespace
class JingleSessionTest : public testing::Test {
@@ -160,10 +184,13 @@ class JingleSessionTest : public testing::Test {
OnSessionStateChange(Session::FAILED))
.Times(1);
} else {
- EXPECT_CALL(host_transport_, Start(_, _)).Times(1);
+ EXPECT_CALL(host_transport_, StartInternal(_, _)).Times(1);
EXPECT_CALL(host_session_event_handler_,
OnSessionStateChange(Session::AUTHENTICATED))
.Times(1);
+ EXPECT_CALL(host_transport_, ProcessTransportInfo(WithId("1")))
+ .Times(1)
+ .WillRepeatedly(Return(true));
// Expect that the connection will be closed eventually.
EXPECT_CALL(host_session_event_handler_,
@@ -185,12 +212,19 @@ class JingleSessionTest : public testing::Test {
EXPECT_CALL(client_session_event_handler_,
OnSessionStateChange(Session::FAILED))
.Times(1);
- } else {
- EXPECT_CALL(client_transport_, Start(_, _)).Times(1);
+ }
+ }
+
+ if (!expect_fail) {
+ EXPECT_CALL(client_transport_, StartInternal(_, _)).Times(1);
+ EXPECT_CALL(client_transport_, ProcessTransportInfo(WithId("1")))
+ .Times(1)
+ .WillRepeatedly(Return(true));
+ {
+ InSequence dummy;
EXPECT_CALL(client_session_event_handler_,
OnSessionStateChange(Session::AUTHENTICATED))
.Times(1);
-
// Expect that the connection will be closed eventually.
EXPECT_CALL(client_session_event_handler_,
OnSessionStateChange(Session::CLOSED))
@@ -290,6 +324,12 @@ TEST_F(JingleSessionTest, ConnectWithMultistep) {
InitiateConnection(3, FakeAuthenticator::ACCEPT, false);
}
+TEST_F(JingleSessionTest, ConnectWithOutofOrderIqs) {
+ CreateSessionManagers(3, FakeAuthenticator::ACCEPT);
+ client_signal_strategy_->SimulatePackgeReordering();
+ InitiateConnection(3, FakeAuthenticator::ACCEPT, false);
+}
+
// Verify that connection is terminated when single-step auth fails.
TEST_F(JingleSessionTest, ConnectWithBadAuth) {
CreateSessionManagers(1, FakeAuthenticator::REJECT);

Powered by Google App Engine
This is Rietveld 408576698