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

Side by Side Diff: chrome/browser/extensions/api/dial/dial_service_unittest.cc

Issue 12150002: - Invoke FinishDiscovery() if no network interfaces are detected. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Merge with r181795 Created 7 years, 10 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 | Annotate | Revision Log
« no previous file with comments | « chrome/browser/extensions/api/dial/dial_service.cc ('k') | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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 "base/memory/ref_counted.h" 5 #include "base/memory/ref_counted.h"
6 #include "base/message_loop.h"
6 #include "chrome/browser/extensions/api/dial/dial_device_data.h" 7 #include "chrome/browser/extensions/api/dial/dial_device_data.h"
7 #include "chrome/browser/extensions/api/dial/dial_service.h" 8 #include "chrome/browser/extensions/api/dial/dial_service.h"
8 #include "net/base/capturing_net_log.h" 9 #include "net/base/capturing_net_log.h"
10 #include "net/base/ip_endpoint.h"
9 #include "testing/gmock/include/gmock/gmock.h" 11 #include "testing/gmock/include/gmock/gmock.h"
10 #include "testing/gtest/include/gtest/gtest.h" 12 #include "testing/gtest/include/gtest/gtest.h"
11 13
12 using base::Time; 14 using base::Time;
15 using base::TimeDelta;
13 using ::testing::A; 16 using ::testing::A;
14 using ::testing::AtLeast; 17 using ::testing::AtLeast;
15 using ::testing::Return; 18 using ::testing::Return;
16 19
17 namespace { 20 namespace {
18 21
19 const char kValidResponse[] = 22 const char kValidResponse[] =
20 "HTTP/1.1 OK\r\n" 23 "HTTP/1.1 OK\r\n"
21 "LOCATION: http://127.0.0.1/dd.xml\r\n" 24 "LOCATION: http://127.0.0.1/dd.xml\r\n"
22 "USN: some_id\r\n" 25 "USN: some_id\r\n"
23 "CACHE-CONTROL: max-age=1800\r\n" 26 "CACHE-CONTROL: max-age=1800\r\n"
24 "CONFIGID.UPNP.ORG: 1\r\n\r\n"; 27 "CONFIGID.UPNP.ORG: 1\r\n\r\n";
25 28
26 } // namespace 29 } // namespace
27 30
28 namespace extensions { 31 namespace extensions {
29 32
30 class MockObserver : public DialService::Observer { 33 class MockObserver : public DialService::Observer {
31 public: 34 public:
32 MOCK_METHOD1(OnDiscoveryRequest, void(DialService*)); 35 MOCK_METHOD1(OnDiscoveryRequest, void(DialService*));
33 MOCK_METHOD2(OnDeviceDiscovered, void(DialService*, const DialDeviceData&)); 36 MOCK_METHOD2(OnDeviceDiscovered, void(DialService*, const DialDeviceData&));
34 MOCK_METHOD1(OnDiscoveryFinished, void(DialService*)); 37 MOCK_METHOD1(OnDiscoveryFinished, void(DialService*));
35 MOCK_METHOD2(OnError, void(DialService*, 38 MOCK_METHOD2(OnError, void(DialService*,
36 const DialService::DialServiceErrorCode&)); 39 const DialService::DialServiceErrorCode&));
37 }; 40 };
38 41
39 class DialServiceTest : public testing::Test { 42 class DialServiceTest : public testing::Test {
40 public: 43 public:
41 DialServiceTest() : dial_service_(&capturing_net_log_) { 44 DialServiceTest() : dial_service_(&capturing_net_log_) {
45 CHECK(net::ParseIPLiteralToNumber("0.0.0.0", &mock_ip_));
42 dial_service_.AddObserver(&mock_observer_); 46 dial_service_.AddObserver(&mock_observer_);
43 } 47 }
44 protected: 48 protected:
45 net::CapturingNetLog capturing_net_log_; 49 net::CapturingNetLog capturing_net_log_;
50 net::IPAddressNumber mock_ip_;
46 DialServiceImpl dial_service_; 51 DialServiceImpl dial_service_;
47 MockObserver mock_observer_; 52 MockObserver mock_observer_;
48 }; 53 };
49 54
55 TEST_F(DialServiceTest, TestSendMultipleRequests) {
56 MessageLoop loop(MessageLoop::TYPE_IO);
57 // Setting the finish delay to zero disables the timer that invokes
58 // FinishDiscovery().
59 dial_service_.finish_delay_ = TimeDelta::FromSeconds(0);
60 dial_service_.request_interval_ = TimeDelta::FromSeconds(0);
61 dial_service_.max_requests_ = 4;
62 dial_service_.discovery_active_ = true;
63 EXPECT_CALL(mock_observer_, OnDiscoveryRequest(A<DialService*>())).Times(4);
64 EXPECT_CALL(mock_observer_, OnDiscoveryFinished(A<DialService*>())).Times(1);
65 dial_service_.BindSocketAndSendRequest(mock_ip_);
66 loop.RunUntilIdle();
67 dial_service_.FinishDiscovery();
68 }
69
50 TEST_F(DialServiceTest, TestOnDiscoveryRequest) { 70 TEST_F(DialServiceTest, TestOnDiscoveryRequest) {
51 dial_service_.discovery_active_ = true; 71 dial_service_.discovery_active_ = true;
72 dial_service_.num_requests_sent_ = 1;
73 dial_service_.max_requests_ = 1;
52 size_t num_bytes = dial_service_.send_buffer_->size(); 74 size_t num_bytes = dial_service_.send_buffer_->size();
53
54 EXPECT_CALL(mock_observer_, OnDiscoveryRequest(A<DialService*>())).Times(1); 75 EXPECT_CALL(mock_observer_, OnDiscoveryRequest(A<DialService*>())).Times(1);
55 dial_service_.OnSocketWrite(num_bytes); 76 dial_service_.OnSocketWrite(num_bytes);
56 } 77 }
57 78
58 TEST_F(DialServiceTest, TestOnDeviceDiscovered) { 79 TEST_F(DialServiceTest, TestOnDeviceDiscovered) {
59 dial_service_.discovery_active_ = true; 80 dial_service_.discovery_active_ = true;
60 int response_size = arraysize(kValidResponse) - 1; 81 int response_size = arraysize(kValidResponse) - 1;
61 dial_service_.recv_buffer_ = new net::IOBufferWithSize(response_size); 82 dial_service_.recv_buffer_ = new net::IOBufferWithSize(response_size);
62 strncpy(dial_service_.recv_buffer_->data(), kValidResponse, response_size); 83 strncpy(dial_service_.recv_buffer_->data(), kValidResponse, response_size);
84 dial_service_.recv_address_ = net::IPEndPoint(mock_ip_, 12345);
63 85
64 DialDeviceData expected_device; 86 DialDeviceData expected_device;
65 expected_device.set_device_id("some_id"); 87 expected_device.set_device_id("some_id");
66 88
67 EXPECT_CALL(mock_observer_, 89 EXPECT_CALL(mock_observer_,
68 OnDeviceDiscovered(A<DialService*>(), expected_device)) 90 OnDeviceDiscovered(A<DialService*>(), expected_device))
69 .Times(1); 91 .Times(1);
70 dial_service_.OnSocketRead(response_size); 92 dial_service_.OnSocketRead(response_size);
71 }; 93 };
72 94
(...skipping 57 matching lines...) Expand 10 before | Expand all | Expand 10 after
130 152
131 // Empty USN 153 // Empty USN
132 EXPECT_FALSE(DialServiceImpl::ParseResponse( 154 EXPECT_FALSE(DialServiceImpl::ParseResponse(
133 "HTTP/1.1 OK\r\n" 155 "HTTP/1.1 OK\r\n"
134 "LOCATION: http://127.0.0.1/dd.xml\r\n" 156 "LOCATION: http://127.0.0.1/dd.xml\r\n"
135 "USN:\r\n\r\n", 157 "USN:\r\n\r\n",
136 now, &not_parsed)); 158 now, &not_parsed));
137 } 159 }
138 160
139 } // namespace extensions 161 } // namespace extensions
OLDNEW
« no previous file with comments | « chrome/browser/extensions/api/dial/dial_service.cc ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698