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

Unified Diff: remoting/signaling/xmpp_signal_strategy_unittest.cc

Issue 1258323003: Fix XmppSignalStrategy to return correct result from SendStanza(). (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@move_config
Patch Set: Created 5 years, 5 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
« no previous file with comments | « remoting/signaling/xmpp_signal_strategy.cc ('k') | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: remoting/signaling/xmpp_signal_strategy_unittest.cc
diff --git a/remoting/signaling/xmpp_signal_strategy_unittest.cc b/remoting/signaling/xmpp_signal_strategy_unittest.cc
index f4a6d0b5160131482d7f606da5c07a5ec39d750a..82a2ed8fa1a901cc576d13edf36b925cc67dcfcf 100644
--- a/remoting/signaling/xmpp_signal_strategy_unittest.cc
+++ b/remoting/signaling/xmpp_signal_strategy_unittest.cc
@@ -16,13 +16,16 @@ namespace remoting {
namespace {
-class XmppSocketDataProvider: public net::SocketDataProvider {
+class XmppSocketDataProvider : public net::SocketDataProvider {
public:
net::MockRead OnRead() override {
return net::MockRead(net::ASYNC, net::ERR_IO_PENDING);
}
net::MockWriteResult OnWrite(const std::string& data) override {
+ if (write_error_ != net::OK)
+ return net::MockWriteResult(net::SYNCHRONOUS, write_error_);
+
written_data_.append(data);
if (use_async_write_) {
@@ -52,7 +55,7 @@ class XmppSocketDataProvider: public net::SocketDataProvider {
ReceiveData(std::string());
}
- void SimulateNetworkError() {
+ void SimulateAsyncReadError() {
socket()->OnReadComplete(
net::MockRead(net::ASYNC, net::ERR_CONNECTION_RESET));
}
@@ -67,6 +70,10 @@ class XmppSocketDataProvider: public net::SocketDataProvider {
use_async_write_ = use_async_write;
}
+ void set_write_error(net::Error error) {
+ write_error_ = error;
+ }
+
void CompletePendingWrite() {
socket()->OnWriteComplete(pending_write_size_);
}
@@ -75,6 +82,7 @@ class XmppSocketDataProvider: public net::SocketDataProvider {
std::string written_data_;
bool use_async_write_ = false;
int pending_write_size_ = 0;
+ net::Error write_error_ = net::OK;
};
class MockClientSocketFactory : public net::MockClientSocketFactory {
@@ -296,11 +304,11 @@ TEST_F(XmppSignalStrategyTest, ConnectionClosed) {
Connect(true);
}
-TEST_F(XmppSignalStrategyTest, NetworkError) {
+TEST_F(XmppSignalStrategyTest, NetworkReadError) {
CreateSignalStrategy(kDefaultPort);
Connect(true);
- socket_data_provider_->SimulateNetworkError();
+ socket_data_provider_->SimulateAsyncReadError();
EXPECT_EQ(3U, state_history_.size());
EXPECT_EQ(SignalStrategy::DISCONNECTED, state_history_[2]);
@@ -314,6 +322,24 @@ TEST_F(XmppSignalStrategyTest, NetworkError) {
Connect(true);
}
+TEST_F(XmppSignalStrategyTest, NetworkWriteError) {
+ CreateSignalStrategy(kDefaultPort);
+ Connect(true);
+
+ socket_data_provider_->set_write_error(net::ERR_FAILED);
+
+ // Next SendMessage() will call Write() which will fail.
+ EXPECT_FALSE(signal_strategy_->SendStanza(make_scoped_ptr(
+ new buzz::XmlElement(buzz::QName(std::string(), "hello")))));
+
+ EXPECT_EQ(3U, state_history_.size());
+ EXPECT_EQ(SignalStrategy::DISCONNECTED, state_history_[2]);
+ EXPECT_EQ(SignalStrategy::NETWORK_ERROR, signal_strategy_->GetError());
+
+ // Try connecting again.
+ Connect(true);
+}
+
TEST_F(XmppSignalStrategyTest, StartTlsWithPendingWrite) {
// Use port 5222 so that XmppLoginHandler uses starttls/proceed handshake
// before starting TLS.
« no previous file with comments | « remoting/signaling/xmpp_signal_strategy.cc ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698